| 1 |
/* RCSid $Id: otypes.h,v 2.14 2003/11/21 07:15:29 greg Exp $ */
|
| 2 |
/*
|
| 3 |
* otypes.h - defines for object types.
|
| 4 |
*/
|
| 5 |
#ifndef _RAD_OTYPES_H_
|
| 6 |
#define _RAD_OTYPES_H_
|
| 7 |
#ifdef __cplusplus
|
| 8 |
extern "C" {
|
| 9 |
#endif
|
| 10 |
|
| 11 |
typedef struct {
|
| 12 |
char *funame; /* function name */
|
| 13 |
int flags; /* type flags */
|
| 14 |
#ifdef FUN_ARGLIST
|
| 15 |
int (*funp)(FUN_ARGLIST); /* pointer to function */
|
| 16 |
#else
|
| 17 |
int (*funp)(); /* pointer to function */
|
| 18 |
#endif
|
| 19 |
} FUN;
|
| 20 |
|
| 21 |
#ifdef FUN_ARGLIST
|
| 22 |
extern int o_default(FUN_ARGLIST);
|
| 23 |
#else
|
| 24 |
extern int o_default(); /* XXX conflict with radogl.h */
|
| 25 |
#endif
|
| 26 |
|
| 27 |
/* extern void initotypes(void);*/ /* XXX don't mess with the linker... */
|
| 28 |
|
| 29 |
/* 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 |
#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 |
/* number of object types */
|
| 81 |
#define NUMOTYPE 50
|
| 82 |
/* 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 |
#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 |
/* user-defined types */
|
| 96 |
#define T_SP1 010000
|
| 97 |
#define T_SP2 020000
|
| 98 |
#define T_SP3 040000
|
| 99 |
|
| 100 |
extern FUN ofun[]; /* our type list */
|
| 101 |
|
| 102 |
#define issurface(t) (ofun[t].flags & T_S)
|
| 103 |
#define isvolume(t) (ofun[t].flags & T_V)
|
| 104 |
#define ismodifier(t) (!(ofun[t].flags & (T_S|T_V)))
|
| 105 |
#define ismaterial(t) (ofun[t].flags & T_M)
|
| 106 |
#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 |
#define islight(t) (ofun[t].flags & T_L)
|
| 110 |
#define isvlight(t) (ofun[t].flags & T_LV)
|
| 111 |
#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 |
#define isflat(t) ((t)==OBJ_FACE || (t)==OBJ_RING)
|
| 115 |
|
| 116 |
#define ALIASKEY "alias" /* alias keyword */
|
| 117 |
#define ALIASMOD "inherit" /* inherit target modifier */
|
| 118 |
|
| 119 |
/* 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 |
{ "instance", T_V, o_default }, \
|
| 127 |
{ "cup", T_S, o_default }, \
|
| 128 |
{ "bubble", T_S, o_default }, \
|
| 129 |
{ "tube", T_S, o_default }, \
|
| 130 |
{ "mesh", T_V, o_default }, \
|
| 131 |
{ ALIASKEY, 0, o_default }, \
|
| 132 |
{ "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 |
{ "plastic2", T_M|T_F, o_default }, \
|
| 138 |
{ "metal2", T_M|T_F, o_default }, \
|
| 139 |
{ "trans2", T_M|T_F, o_default }, \
|
| 140 |
{ "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 |
{ "glow", T_M|T_L, o_default }, \
|
| 148 |
{ "source", T_S, o_default }, \
|
| 149 |
{ "light", T_M|T_L, o_default }, \
|
| 150 |
{ "illum", T_M|T_L, o_default }, \
|
| 151 |
{ "spotlight", T_M|T_L, o_default }, \
|
| 152 |
{ "mist", T_M, o_default }, \
|
| 153 |
{ "mirror", T_M|T_LV, o_default }, \
|
| 154 |
{ "transfunc", T_M|T_F, o_default }, \
|
| 155 |
{ "BRTDfunc", T_M|T_F, o_default }, \
|
| 156 |
{ "plasdata", T_M|T_D, o_default }, \
|
| 157 |
{ "metdata", T_M|T_D, o_default }, \
|
| 158 |
{ "transdata", T_M|T_D, o_default }, \
|
| 159 |
{ "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 |
{ "mixpict", T_X|T_I, o_default }, \
|
| 168 |
{ "prism1", T_M|T_F|T_LV, o_default }, \
|
| 169 |
{ "prism2", T_M|T_F|T_LV, o_default }, \
|
| 170 |
}
|
| 171 |
|
| 172 |
|
| 173 |
#ifdef __cplusplus
|
| 174 |
}
|
| 175 |
#endif
|
| 176 |
#endif /* _RAD_OTYPES_H_ */
|