| 1 |
greg |
2.2 |
/* Copyright (c) 1992 Regents of the University of California */
|
| 2 |
greg |
1.1 |
|
| 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 |
greg |
1.7 |
int flags; /* type flags */
|
| 14 |
greg |
1.1 |
int (*funp)(); /* pointer to function */
|
| 15 |
|
|
} FUN;
|
| 16 |
greg |
1.7 |
/* 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 |
greg |
1.11 |
#define MAT_GLASS 12 /* thin glass surface */
|
| 30 |
|
|
#define MAT_TRANS 13 /* translucent material */
|
| 31 |
|
|
#define MAT_DIELECTRIC 14 /* dielectric material */
|
| 32 |
greg |
2.2 |
#define MAT_PLASTIC2 15 /* anisotropic plastic */
|
| 33 |
|
|
#define MAT_METAL2 16 /* anisotropic metal */
|
| 34 |
|
|
#define MAT_TRANS2 17 /* anisotropic translucent material */
|
| 35 |
|
|
#define MAT_INTERFACE 18 /* dielectric interface */
|
| 36 |
|
|
#define MAT_PFUNC 19 /* plastic brdf function */
|
| 37 |
|
|
#define MAT_MFUNC 20 /* metal brdf function */
|
| 38 |
|
|
#define PAT_BFUNC 21 /* brightness function */
|
| 39 |
|
|
#define PAT_BDATA 22 /* brightness data */
|
| 40 |
|
|
#define PAT_BTEXT 23 /* monochromatic text */
|
| 41 |
|
|
#define PAT_CPICT 24 /* color picture */
|
| 42 |
|
|
#define MAT_GLOW 25 /* proximity light source */
|
| 43 |
|
|
#define OBJ_SOURCE 26 /* distant source */
|
| 44 |
|
|
#define MAT_LIGHT 27 /* primary light source */
|
| 45 |
|
|
#define MAT_ILLUM 28 /* secondary light source */
|
| 46 |
|
|
#define MAT_SPOT 29 /* spot light source */
|
| 47 |
|
|
#define MAT_MIRROR 30 /* mirror (secondary source) */
|
| 48 |
|
|
#define MAT_TFUNC 31 /* trans brdf function */
|
| 49 |
|
|
#define MAT_BRTDF 32 /* brtd function */
|
| 50 |
|
|
#define MAT_PDATA 33 /* plastic brdf data */
|
| 51 |
|
|
#define MAT_MDATA 34 /* metal brdf data */
|
| 52 |
|
|
#define MAT_TDATA 35 /* trans brdf data */
|
| 53 |
|
|
#define PAT_CFUNC 36 /* color function */
|
| 54 |
|
|
#define MAT_CLIP 37 /* clipping surface */
|
| 55 |
|
|
#define PAT_CDATA 38 /* color data */
|
| 56 |
|
|
#define PAT_CTEXT 39 /* colored text */
|
| 57 |
|
|
#define TEX_DATA 40 /* surface texture data */
|
| 58 |
|
|
#define MIX_FUNC 41 /* mixing function */
|
| 59 |
|
|
#define MIX_DATA 42 /* mixing data */
|
| 60 |
|
|
#define MIX_TEXT 43 /* mixing text */
|
| 61 |
|
|
#define MAT_DIRECT1 44 /* unidirecting material */
|
| 62 |
|
|
#define MAT_DIRECT2 45 /* bidirecting material */
|
| 63 |
greg |
1.1 |
/* number of object types */
|
| 64 |
greg |
2.2 |
#define NUMOTYPE 46
|
| 65 |
greg |
1.7 |
/* type flags */
|
| 66 |
|
|
#define T_S 01 /* surface (object) */
|
| 67 |
|
|
#define T_M 02 /* material */
|
| 68 |
|
|
#define T_P 04 /* pattern */
|
| 69 |
|
|
#define T_T 010 /* texture */
|
| 70 |
|
|
#define T_X 020 /* mixture */
|
| 71 |
|
|
#define T_V 040 /* volume */
|
| 72 |
|
|
#define T_L 0100 /* light source modifier */
|
| 73 |
greg |
1.11 |
#define T_LV 0200 /* virtual light source modifier */
|
| 74 |
|
|
#define T_F 0400 /* function */
|
| 75 |
|
|
#define T_D 01000 /* data */
|
| 76 |
|
|
#define T_I 02000 /* picture */
|
| 77 |
|
|
#define T_E 04000 /* text */
|
| 78 |
greg |
1.8 |
/* user-defined types */
|
| 79 |
|
|
#define T_SP1 010000
|
| 80 |
|
|
#define T_SP2 020000
|
| 81 |
|
|
#define T_SP3 040000
|
| 82 |
greg |
1.1 |
|
| 83 |
greg |
1.7 |
extern FUN ofun[]; /* our type list */
|
| 84 |
greg |
1.1 |
|
| 85 |
greg |
1.7 |
#define issurface(t) (ofun[t].flags & T_S)
|
| 86 |
|
|
#define isvolume(t) (ofun[t].flags & T_V)
|
| 87 |
greg |
2.3 |
#define ismodifier(t) (!(ofun[t].flags & (T_S|T_V)))
|
| 88 |
greg |
1.7 |
#define ismaterial(t) (ofun[t].flags & T_M)
|
| 89 |
|
|
#define islight(t) (ofun[t].flags & T_L)
|
| 90 |
greg |
1.11 |
#define isvlight(t) (ofun[t].flags & T_LV)
|
| 91 |
greg |
1.7 |
#define hasdata(t) (ofun[t].flags & (T_D|T_I))
|
| 92 |
|
|
#define hasfunc(t) (ofun[t].flags & (T_F|T_D|T_I))
|
| 93 |
|
|
#define hastext(t) (ofun[t].flags & T_E)
|
| 94 |
greg |
2.5 |
#define isflat(t) ((t)==OBJ_FACE || (t)==OBJ_RING)
|
| 95 |
greg |
1.1 |
|
| 96 |
greg |
1.7 |
extern int o_default();
|
| 97 |
|
|
/* type list initialization */
|
| 98 |
|
|
#define INIT_OTYPE { { "polygon", T_S, o_default }, \
|
| 99 |
|
|
{ "cone", T_S, o_default }, \
|
| 100 |
|
|
{ "sphere", T_S, o_default }, \
|
| 101 |
|
|
{ "texfunc", T_T|T_F, o_default }, \
|
| 102 |
|
|
{ "ring", T_S, o_default }, \
|
| 103 |
|
|
{ "cylinder", T_S, o_default }, \
|
| 104 |
greg |
2.3 |
{ "instance", T_V, o_default }, \
|
| 105 |
greg |
1.7 |
{ "cup", T_S, o_default }, \
|
| 106 |
|
|
{ "bubble", T_S, o_default }, \
|
| 107 |
|
|
{ "tube", T_S, o_default }, \
|
| 108 |
|
|
{ "plastic", T_M, o_default }, \
|
| 109 |
|
|
{ "metal", T_M, o_default }, \
|
| 110 |
|
|
{ "glass", T_M, o_default }, \
|
| 111 |
|
|
{ "trans", T_M, o_default }, \
|
| 112 |
|
|
{ "dielectric", T_M, o_default }, \
|
| 113 |
greg |
2.2 |
{ "plastic2", T_M|T_F, o_default }, \
|
| 114 |
|
|
{ "metal2", T_M|T_F, o_default }, \
|
| 115 |
|
|
{ "trans2", T_M|T_F, o_default }, \
|
| 116 |
greg |
1.7 |
{ "interface", T_M, o_default }, \
|
| 117 |
|
|
{ "plasfunc", T_M|T_F, o_default }, \
|
| 118 |
|
|
{ "metfunc", T_M|T_F, o_default }, \
|
| 119 |
|
|
{ "brightfunc", T_P|T_F, o_default }, \
|
| 120 |
|
|
{ "brightdata", T_P|T_D, o_default }, \
|
| 121 |
|
|
{ "brighttext", T_P|T_E, o_default }, \
|
| 122 |
|
|
{ "colorpict", T_P|T_I, o_default }, \
|
| 123 |
greg |
1.11 |
{ "glow", T_M|T_L, o_default }, \
|
| 124 |
|
|
{ "source", T_S, o_default }, \
|
| 125 |
greg |
1.7 |
{ "light", T_M|T_L, o_default }, \
|
| 126 |
|
|
{ "illum", T_M|T_L, o_default }, \
|
| 127 |
greg |
1.10 |
{ "spotlight", T_M|T_L, 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 |
greg |
1.12 |
{ "prism1", T_M|T_F|T_LV, o_default }, \
|
| 143 |
|
|
{ "prism2", T_M|T_F|T_LV, o_default }, \
|
| 144 |
greg |
1.7 |
}
|
| 145 |
greg |
1.1 |
|
| 146 |
|
|
#define ALIASID "alias" /* alias type identifier */
|