ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/otypes.h
Revision: 2.9
Committed: Tue Feb 25 02:47:21 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.8: +2 -57 lines
Log Message:
Replaced inline copyright notice with #include "copyright.h"

File Contents

# User Rev Content
1 greg 2.9 /* RCSid $Id$ */
2 greg 1.1 /*
3     * otypes.h - defines for object types.
4 greg 2.8 */
5    
6 greg 2.9 #include "copyright.h"
7 greg 1.1
8     typedef struct {
9     char *funame; /* function name */
10 greg 1.7 int flags; /* type flags */
11 greg 1.1 int (*funp)(); /* pointer to function */
12     } FUN;
13 greg 1.7 /* object types in decreasing frequency */
14     #define OBJ_FACE 0 /* polygon */
15     #define OBJ_CONE 1 /* cone */
16     #define OBJ_SPHERE 2 /* sphere */
17     #define TEX_FUNC 3 /* surface texture function */
18     #define OBJ_RING 4 /* disk */
19     #define OBJ_CYLINDER 5 /* cylinder */
20     #define OBJ_INSTANCE 6 /* octree instance */
21     #define OBJ_CUP 7 /* inverted cone */
22     #define OBJ_BUBBLE 8 /* inverted sphere */
23     #define OBJ_TUBE 9 /* inverted cylinder */
24     #define MAT_PLASTIC 10 /* plastic surface */
25     #define MAT_METAL 11 /* metal surface */
26 greg 1.11 #define MAT_GLASS 12 /* thin glass surface */
27     #define MAT_TRANS 13 /* translucent material */
28     #define MAT_DIELECTRIC 14 /* dielectric material */
29 greg 2.2 #define MAT_PLASTIC2 15 /* anisotropic plastic */
30     #define MAT_METAL2 16 /* anisotropic metal */
31     #define MAT_TRANS2 17 /* anisotropic translucent material */
32     #define MAT_INTERFACE 18 /* dielectric interface */
33     #define MAT_PFUNC 19 /* plastic brdf function */
34     #define MAT_MFUNC 20 /* metal brdf function */
35     #define PAT_BFUNC 21 /* brightness function */
36     #define PAT_BDATA 22 /* brightness data */
37     #define PAT_BTEXT 23 /* monochromatic text */
38     #define PAT_CPICT 24 /* color picture */
39     #define MAT_GLOW 25 /* proximity light source */
40     #define OBJ_SOURCE 26 /* distant source */
41     #define MAT_LIGHT 27 /* primary light source */
42     #define MAT_ILLUM 28 /* secondary light source */
43     #define MAT_SPOT 29 /* spot light source */
44 greg 2.6 #define MAT_MIST 30 /* mist medium */
45     #define MAT_MIRROR 31 /* mirror (secondary source) */
46     #define MAT_TFUNC 32 /* trans brdf function */
47     #define MAT_BRTDF 33 /* brtd function */
48     #define MAT_PDATA 34 /* plastic brdf data */
49     #define MAT_MDATA 35 /* metal brdf data */
50     #define MAT_TDATA 36 /* trans brdf data */
51     #define PAT_CFUNC 37 /* color function */
52     #define MAT_CLIP 38 /* clipping surface */
53     #define PAT_CDATA 39 /* color data */
54     #define PAT_CTEXT 40 /* colored text */
55     #define TEX_DATA 41 /* surface texture data */
56     #define MIX_FUNC 42 /* mixing function */
57     #define MIX_DATA 43 /* mixing data */
58     #define MIX_TEXT 44 /* mixing text */
59 gwlarson 2.7 #define MIX_PICT 45 /* mixing picture */
60     #define MAT_DIRECT1 46 /* unidirecting material */
61     #define MAT_DIRECT2 47 /* bidirecting material */
62 greg 1.1 /* number of object types */
63 gwlarson 2.7 #define NUMOTYPE 48
64 greg 1.7 /* type flags */
65     #define T_S 01 /* surface (object) */
66     #define T_M 02 /* material */
67     #define T_P 04 /* pattern */
68     #define T_T 010 /* texture */
69     #define T_X 020 /* mixture */
70     #define T_V 040 /* volume */
71     #define T_L 0100 /* light source modifier */
72 greg 1.11 #define T_LV 0200 /* virtual light source modifier */
73     #define T_F 0400 /* function */
74     #define T_D 01000 /* data */
75     #define T_I 02000 /* picture */
76     #define T_E 04000 /* text */
77 greg 1.8 /* user-defined types */
78     #define T_SP1 010000
79     #define T_SP2 020000
80     #define T_SP3 040000
81 greg 1.1
82 greg 1.7 extern FUN ofun[]; /* our type list */
83 greg 1.1
84 greg 1.7 #define issurface(t) (ofun[t].flags & T_S)
85     #define isvolume(t) (ofun[t].flags & T_V)
86 greg 2.3 #define ismodifier(t) (!(ofun[t].flags & (T_S|T_V)))
87 greg 1.7 #define ismaterial(t) (ofun[t].flags & T_M)
88     #define islight(t) (ofun[t].flags & T_L)
89 greg 1.11 #define isvlight(t) (ofun[t].flags & T_LV)
90 greg 1.7 #define hasdata(t) (ofun[t].flags & (T_D|T_I))
91     #define hasfunc(t) (ofun[t].flags & (T_F|T_D|T_I))
92     #define hastext(t) (ofun[t].flags & T_E)
93 greg 2.5 #define isflat(t) ((t)==OBJ_FACE || (t)==OBJ_RING)
94 greg 1.1
95 greg 1.7 extern int o_default();
96     /* type list initialization */
97     #define INIT_OTYPE { { "polygon", T_S, o_default }, \
98     { "cone", T_S, o_default }, \
99     { "sphere", T_S, o_default }, \
100     { "texfunc", T_T|T_F, o_default }, \
101     { "ring", T_S, o_default }, \
102     { "cylinder", T_S, o_default }, \
103 greg 2.3 { "instance", T_V, o_default }, \
104 greg 1.7 { "cup", T_S, o_default }, \
105     { "bubble", T_S, o_default }, \
106     { "tube", T_S, o_default }, \
107     { "plastic", T_M, o_default }, \
108     { "metal", T_M, o_default }, \
109     { "glass", T_M, o_default }, \
110     { "trans", T_M, o_default }, \
111     { "dielectric", T_M, o_default }, \
112 greg 2.2 { "plastic2", T_M|T_F, o_default }, \
113     { "metal2", T_M|T_F, o_default }, \
114     { "trans2", T_M|T_F, o_default }, \
115 greg 1.7 { "interface", T_M, o_default }, \
116     { "plasfunc", T_M|T_F, o_default }, \
117     { "metfunc", T_M|T_F, o_default }, \
118     { "brightfunc", T_P|T_F, o_default }, \
119     { "brightdata", T_P|T_D, o_default }, \
120     { "brighttext", T_P|T_E, o_default }, \
121     { "colorpict", T_P|T_I, o_default }, \
122 greg 1.11 { "glow", T_M|T_L, o_default }, \
123     { "source", T_S, o_default }, \
124 greg 1.7 { "light", T_M|T_L, o_default }, \
125     { "illum", T_M|T_L, o_default }, \
126 greg 1.10 { "spotlight", T_M|T_L, o_default }, \
127 greg 2.6 { "mist", T_M, o_default }, \
128 greg 1.11 { "mirror", T_M|T_LV, o_default }, \
129 greg 1.10 { "transfunc", T_M|T_F, o_default }, \
130 greg 1.9 { "BRTDfunc", T_M|T_F, o_default }, \
131 greg 1.7 { "plasdata", T_M|T_D, o_default }, \
132     { "metdata", T_M|T_D, o_default }, \
133 greg 1.10 { "transdata", T_M|T_D, o_default }, \
134 greg 1.7 { "colorfunc", T_P|T_F, o_default }, \
135     { "antimatter", T_M, o_default }, \
136     { "colordata", T_P|T_D, o_default }, \
137     { "colortext", T_P|T_E, o_default }, \
138     { "texdata", T_T|T_D, o_default }, \
139     { "mixfunc", T_X|T_F, o_default }, \
140     { "mixdata", T_X|T_D, o_default }, \
141     { "mixtext", T_X|T_E, o_default }, \
142 gwlarson 2.7 { "mixpict", T_X|T_I, o_default }, \
143 greg 1.12 { "prism1", T_M|T_F|T_LV, o_default }, \
144     { "prism2", T_M|T_F|T_LV, o_default }, \
145 greg 1.7 }
146 greg 1.1
147     #define ALIASID "alias" /* alias type identifier */