HOOPS/3dGS I.M. Interface

     << Back      Full Index      Forward >>


searchh.h

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
Main Index
HOOPS/3dGS I.M. Interface

     << Back      Full Index      Forward >>