home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 8 / CDASC08.ISO / NEWS / RADIANCE / SRC / COMMON / OTYPES.H < prev    next >
C/C++ Source or Header  |  1993-10-07  |  6KB  |  147 lines

  1. /* Copyright (c) 1992 Regents of the University of California */
  2.  
  3. /* SCCSid "@(#)otypes.h 2.3 3/12/92 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  MAT_GLASS    12        /* thin glass surface */
  30. #define  MAT_TRANS    13        /* translucent material */
  31. #define  MAT_DIELECTRIC    14        /* dielectric material */
  32. #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.                 /* number of object types */
  64. #define  NUMOTYPE    46
  65.                 /* 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. #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.                 /* user-defined types */
  79. #define  T_SP1        010000
  80. #define  T_SP2        020000
  81. #define  T_SP3        040000
  82.  
  83. extern FUN  ofun[];            /* our type list */
  84.  
  85. #define  issurface(t)    (ofun[t].flags & T_S)
  86. #define  isvolume(t)    (ofun[t].flags & T_V)
  87. #define  ismodifier(t)    (!(ofun[t].flags & (T_S|T_V)))
  88. #define  ismaterial(t)    (ofun[t].flags & T_M)
  89. #define  istexture(t)    (ofun[t].flags & (T_P|T_T|T_X))
  90. #define  islight(t)    (ofun[t].flags & T_L)
  91. #define  isvlight(t)    (ofun[t].flags & T_LV)
  92. #define  hasdata(t)    (ofun[t].flags & (T_D|T_I))
  93. #define  hasfunc(t)    (ofun[t].flags & (T_F|T_D|T_I))
  94. #define  hastext(t)    (ofun[t].flags & T_E)
  95.  
  96. 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.                 { "instance",    T_V,        o_default }, \
  105.                 { "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.                 { "plastic2",    T_M|T_F,    o_default }, \
  114.                 { "metal2",    T_M|T_F,    o_default }, \
  115.                 { "trans2",    T_M|T_F,    o_default }, \
  116.                 { "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.                 { "glow",    T_M|T_L,    o_default }, \
  124.                 { "source",    T_S,        o_default }, \
  125.                 { "light",    T_M|T_L,    o_default }, \
  126.                 { "illum",    T_M|T_L,    o_default }, \
  127.                 { "spotlight",    T_M|T_L,    o_default }, \
  128.                 { "mirror",    T_M|T_LV,    o_default }, \
  129.                 { "transfunc",    T_M|T_F,    o_default }, \
  130.                 { "BRTDfunc",    T_M|T_F,    o_default }, \
  131.                 { "plasdata",    T_M|T_D,    o_default }, \
  132.                 { "metdata",    T_M|T_D,    o_default }, \
  133.                 { "transdata",    T_M|T_D,    o_default }, \
  134.                 { "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.                 { "prism1",    T_M|T_F|T_LV,    o_default }, \
  143.                 { "prism2",    T_M|T_F|T_LV,    o_default }, \
  144.             }
  145.  
  146. #define  ALIASID    "alias"        /* alias type identifier */
  147.