00001 /* 00002 * Copyright (c) 1998 by Tech Soft 3D, LLC. 00003 * The information contained herein is confidential and proprietary to 00004 * Tech Soft 3D, LLC., and considered a trade secret as defined under 00005 * civil and criminal statutes. Tech Soft 3D shall pursue its civil 00006 * and criminal remedies in the event of unauthorized use or misappropriation 00007 * of its trade secrets. Use of this information by anyone other than 00008 * authorized employees of Tech Soft 3D, LLC. is granted only under a 00009 * written non-disclosure agreement, expressly prescribing the scope and 00010 * manner of such use. 00011 * 00012 * Search Hoops (searchh) - named changed from search.h to avoid 00013 * conflict with an existing search.h on sun systems 00014 * 00015 * $Id: searchh_8h-source.html,v 1.29 2008-03-10 07:09:28 stage Exp $ 00016 */ 00017 00018 #ifndef SEARCH_DEFINED 00019 00020 struct HT_Search_List { 00021 HT_Search_List *next; 00022 HT_Anything *item; 00023 bool special; 00024 }; 00025 00026 struct HT_Search_Header { 00027 HT_Search_Header *prev; 00028 HT_Search_List *list; 00029 int count; 00030 00031 /* used by font searches... */ 00032 HT_Name *names; 00033 int name_count; 00034 int next; 00035 HT_Driver *original_driver; 00036 }; 00037 00038 00039 /* used by Find_Contents, Show_Existence, and related routines... */ 00040 #define FC_LAST_SEARCH_TYPE HK_LAST_TYPE 00041 #define FC_INTERESTING_ARRAY_SIZE ((int)FC_LAST_SEARCH_TYPE + 1) 00042 00043 #define FC_NORMAL (HK_BAD_TYPE+0) 00044 #define FC_PARAMETER (HK_BAD_TYPE+1) 00045 #define FC_FACE (HK_BAD_TYPE+2) 00046 #define FC_EDGE (HK_BAD_TYPE+3) 00047 #define FC_VERTEX (HK_BAD_TYPE+4) 00048 00049 #define FC_ATTRIBUTES (HK_BAD_TYPE+5) 00050 #define FC_GEOMETRY (HK_BAD_TYPE+6) 00051 #define FC_SUBSEGMENTS (HK_BAD_TYPE+7) 00052 #define FC_ORDERED (HK_BAD_TYPE+8) 00053 #define FC_INKED_LINE (HK_BAD_TYPE+9) 00054 #define FC_SELF (HK_BAD_TYPE+10) 00055 #define FC_INTERESTING (HK_BAD_TYPE+11) 00056 #define FC_FIRST_MATCH (HK_BAD_TYPE+12) 00057 #define FC_EVERYTHING (HK_BAD_TYPE+13) 00058 00059 #define FC_DISTANT_LIGHTS (HK_BAD_TYPE+14) 00060 #define FC_POINT_LIGHTS (HK_BAD_TYPE+15) 00061 #define FC_SPOT_LIGHTS (HK_BAD_TYPE+16) 00062 #define FC_AREA_LIGHTS (HK_BAD_TYPE+17) 00063 00064 #define FC_INCLUDERS (HK_BAD_TYPE+18) 00065 #define FC_STYLERS (HK_BAD_TYPE+19) 00066 #define FC_REFERRERS (HK_BAD_TYPE+20) 00067 00068 #define FC_FACE_ATTRIBUTES (HK_BAD_TYPE+21) 00069 #define FC_FACE_COLORS (HK_BAD_TYPE+22) 00070 #define FC_FACE_NORMALS (HK_BAD_TYPE+23) 00071 #define FC_FACE_PATTERNS (HK_BAD_TYPE+24) 00072 #define FC_FACE_VISIBILITIES (HK_BAD_TYPE+25) 00073 #define FC_EDGE_ATTRIBUTES (HK_BAD_TYPE+26) 00074 #define FC_EDGE_COLORS (HK_BAD_TYPE+27) 00075 #define FC_EDGE_NORMALS (HK_BAD_TYPE+28) 00076 #define FC_EDGE_PATTERNS (HK_BAD_TYPE+29) 00077 #define FC_EDGE_WEIGHTS (HK_BAD_TYPE+30) 00078 #define FC_EDGE_VISIBILITIES (HK_BAD_TYPE+31) 00079 #define FC_VERTEX_ATTRIBUTES (HK_BAD_TYPE+32) 00080 #define FC_VERTEX_COLORS (HK_BAD_TYPE+33) 00081 #define FC_VERTEX_FACE_COLORS (HK_BAD_TYPE+34) 00082 #define FC_VERTEX_EDGE_COLORS (HK_BAD_TYPE+35) 00083 #define FC_VERTEX_MARKER_COLORS (HK_BAD_TYPE+36) 00084 #define FC_VERTEX_NORMALS (HK_BAD_TYPE+37) 00085 #define FC_VERTEX_PARAMETERS (HK_BAD_TYPE+38) 00086 #define FC_VERTEX_SYMBOLS (HK_BAD_TYPE+39) 00087 #define FC_VERTEX_SIZES (HK_BAD_TYPE+40) 00088 #define FC_VERTEX_VISIBILITIES (HK_BAD_TYPE+41) 00089 00090 #define FC_STATIC_MODEL (HK_BAD_TYPE+42) 00091 #define FC_TRANSPARENCY_PRESENT (HK_BAD_TYPE+43) 00092 00093 struct HT_Find_Contents_Data { 00094 union { 00095 HT_Search_List **linker; 00096 int count; 00097 } item; 00098 00099 bool interesting[FC_INTERESTING_ARRAY_SIZE]; 00100 bool everything, 00101 explicitly_everything, 00102 any_attributes, 00103 any_geometries, 00104 include_self, 00105 includers, 00106 stylers, 00107 referrers, 00108 static_model, 00109 transparency_present, 00110 naughty_bit, 00111 first_match, 00112 any_local_attributes, 00113 any_face_attributes, 00114 any_edge_attributes, 00115 any_vertex_attributes, 00116 any_vertex_colors; 00117 00118 # define FC_INCLUDE (-1) 00119 # define FC_DONT_CARE 0 00120 # define FC_EXCLUDE 1 00121 int ordered, 00122 inked; 00123 00124 struct { 00125 bool distant, 00126 point, 00127 spot, 00128 area; 00129 } lights; 00130 struct { 00131 bool face_colors, 00132 face_normals, 00133 face_patterns, 00134 face_visibilities, 00135 edge_colors, 00136 edge_normals, 00137 edge_patterns, 00138 edge_weights, 00139 edge_visibilities, 00140 vertex_face_colors, 00141 vertex_edge_colors, 00142 vertex_marker_colors, 00143 vertex_normals, 00144 vertex_parameters, 00145 vertex_symbols, 00146 vertex_sizes, 00147 vertex_visibilities; 00148 } local_attributes; 00149 00150 struct { 00151 HT_Type_Flags selectability; 00152 HT_Type_Flags visibility; 00153 struct { 00154 HT_Drivo_Flags flags; 00155 HT_Drivo_Flags values; 00156 } driver_options; 00157 struct { 00158 HT_Heuristics_Flags mask; 00159 short culling; 00160 } heuristics; 00161 HT_Font_Flags text_font; 00162 struct { 00163 HT_Color_Object mask; 00164 HT_Material_Components materials[Color_Type_MATERIAL_COUNT]; 00165 } color; 00166 struct { 00167 HT_Rendo_Flags complex; 00168 HT_Rendo_Flags simple; 00169 HT_Rendo_Flags interpolation; 00170 HT_Attribute_Lock locks; 00171 short transparency_options; 00172 HT_Buffer_Flags buffer_options; 00173 HT_Hidden_Line_Flags hidden_line_options; 00174 HT_LOD_Flags lod_options; 00175 HT_NURBS_Curve_Flags nurbs_curve; 00176 HT_NURBS_Surface_Flags nurbs_surface; 00177 HT_Tessellation_Flags tessellation; 00178 HT_Cut_Geometry_Flags cut_geometry; 00179 HT_Simple_Shadow_Flags simple_shadow; 00180 int matrix_overrides; 00181 } rendering_options; 00182 struct { 00183 int count; 00184 int * ids; 00185 } user_options; 00186 struct { 00187 int count; 00188 int * ids; 00189 } conditions; 00190 } specifics; 00191 }; 00192 00193 00194 /* 00195 * Driver Identifier (used for programmatic search) 00196 */ 00197 struct HT_Driver_ID { 00198 /* set HOOPS_PICTURE using this */ 00199 #define HK_HDI_PICNAM_SIZE 256 00200 char picture_name[HK_HDI_PICNAM_SIZE]; 00201 00202 /* driver config menu name */ 00203 #define HK_HDI_MAX_DEV 5 00204 #define HK_HDI_IDEVNAM_SIZE 256 00205 char dev_name[HK_HDI_MAX_DEV][HK_HDI_IDEVNAM_SIZE+1]; 00206 00207 /* configuration entry point */ 00208 bool (HC_CDECL * cfgentry) (HT_Driver alter *actor, int request); 00209 00210 /* execution entry point */ 00211 bool (HC_CDECL * xqtentry) (HT_Driver alter *actor, int request); 00212 00213 /* video, digitizer, or plotter */ 00214 #define HK_HDI_DEVICE 0x400 00215 short device_type; 00216 00217 /* HDI revision level */ 00218 unsigned char major_hdi_level; 00219 unsigned char minor_hdi_level; 00220 00221 /* hard coded search string */ 00222 #define HK_HDI_SENTINEL_LEN 15 00223 #define HK_HDI_SEARCH_STRING "$HDIRCNAME$" 00224 char sentinel[HK_HDI_SENTINEL_LEN]; 00225 00226 /* what CPU and O/S do we run on? */ 00227 char platform[HK_PLATFORM_LEN]; 00228 00229 /* driver options */ 00230 #define HK_HDI_NO_OPTIONS 0 00231 short options; 00232 00233 /* code stream or version */ 00234 #ifndef __DATE__ 00235 # define __DATE__ "unknown" 00236 #endif 00237 char stream[HK_HDI_SENTINEL_LEN]; 00238 00239 /* driver RCS id */ 00240 #define HK_RCS_ID_LEN 24 00241 char rcs_id[HK_RCS_ID_LEN]; 00242 }; 00243 00244 #define IDENTIFY_HDI_DRIVER(name,routine,label,revision) \ 00245 local HT_Driver_ID const hdi_driver = { \ 00246 name, \ 00247 {label, "", "", "", ""}, \ 00248 routine, \ 00249 routine, \ 00250 HK_HDI_DEVICE, \ 00251 HOOPS_VERSION - 256, \ 00252 HOOPS_SUBVERSION, \ 00253 HK_HDI_SEARCH_STRING, \ 00254 HK_PLATFORM, \ 00255 HK_HDI_NO_OPTIONS, \ 00256 __DATE__, \ 00257 revision \ 00258 } 00259 00260 #define SEARCH_DEFINED 00261 #endif