ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/otypes.h
Revision: 2.15
Committed: Sun Mar 28 20:33:12 2004 UTC (20 years, 1 month ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9
Changes since 2.14: +5 -2 lines
Log Message:
Continued ANSIfication, and other fixes and clarifications.

File Contents

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