ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/otypes.h
Revision: 1.9
Committed: Tue May 7 11:02:15 1991 UTC (33 years ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 1.8: +14 -12 lines
Log Message:
added BRTDfunc type

File Contents

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