0012121: Optimization of existing selection classes
[occt.git] / src / OpenGl / OpenGl_telem_inquire.hxx
1 #ifndef OPENGL_TELEM_INQUIRE_H
2 #define OPENGL_TELEM_INQUIRE_H
3
4 typedef struct {
5   Tint        number;        /* number of Tints in list */
6   Tint        *integers;        /* list of integers */
7 } Tintlst;
8
9 typedef struct {
10   Tint        x_dim;        /* dimension (number of divisions) along X */
11   Tint        y_dim;        /* dimension (number of divisions) along Y */
12 } Tdim;
13
14 typedef union
15 {
16   Tint       idata;        /* integer valued data */
17   Tfloat     fdata;        /* float valued data */
18   Tchar      *data;        /* %%TEMP - use for application data for now */
19   TEL_POINT  *pts3;        /* list of 3d points */
20
21   struct 
22   {
23     TEL_POINT   ref_pt;  /* reference text point */
24     TEL_POINT   anno;    /* annotation pt/offset */
25     Techar      *string; /* text string */
26   } atext3;
27
28   Tint            size;
29   Tint            interior_style; /* interior style */
30   Tint            edge_flag;      /* edge flag */
31   Tintlst         name_set;       /* name sets */
32   Tmatrix3        mat3;           /* 3d transformation matrix */
33
34   struct 
35   {
36     Tmatrix3     mat3;         /* 3d transformation matrix */
37     TComposeType compose_type; /* composition type */
38   } local_xform_3;
39
40   struct 
41   {
42     Tint        vrtflag;        /* per vertex data flag */
43     Tint        num_bounds;     /* number of lines in the set */
44     Tint        *bounds;        /* list of number of points in each bound */
45     TEL_POINT   *points;        /* array of points */
46     TEL_COLOUR  *colours;       /* array of vertex colour values */
47   } lineset3data;
48
49   struct 
50   {
51     Tint        shpflag;           /* primitive shape flag */
52     Tint        faflag;            /* per fill area data flag */
53     Tint        vrtflag;           /* per vertex data flag */
54     TEL_POINT   *gnormal;          /* geometric normal */
55     Tint        num_points;        /* number of vertices in fill area */
56     tel_colour  facet_colour_val;  /* facet colour value */
57     TEL_POINT   *points;           /* array of points */
58     TEL_COLOUR  *colours;          /* array of vertex colour values */
59     TEL_POINT   *vnormals;         /* array of vertex normals */
60   } fillarea3data;
61
62   struct 
63   {
64     Tint        shpflag;           /* primitive shape flag */
65     Tint        faflag;            /* per fill area data flag */
66     Tint        vrtflag;           /* per vertex data flag */
67     Tint        edgflag;         /* edge flag */
68     TEL_POINT   *gnormal;          /* geometric normal */
69     Tint        *edgvis;          /* edge visibility per edge */
70     Tint        num_bounds;        /* number of bounds in fill area set */
71     tel_colour  facet_colour_val;  /* facet colour value */
72     Tint        *bounds;           /* bounds */
73     TEL_POINT   *points;           /* array of points */
74     TEL_COLOUR  *colours;          /* array of vertex colour values */
75     TEL_POINT   *vnormals;         /* array of vertex normals */
76   } fillareaset3data;
77
78   struct 
79   {
80     Tint        fctflag;            /* per facet data flag */
81     Tint        vrtflag;            /* per vertex data flag */
82     Tint        num_facets;         /* number of facets, (num_points-2) */
83     TEL_POINT   *gnormals;          /* geometric normals */
84     TEL_COLOUR  *facet_colour_vals; /* facet colour value */
85     TEL_POINT   *points;            /* array of points for all bounds */
86     TEL_COLOUR  *colours;           /* array of vertex colour values */
87     TEL_POINT   *vnormals;      /* array of vertex normals for all bounds */
88   } trianglestrip3data;
89
90   struct 
91   {
92     Tint        shpflag;            /* primitive shape flag */
93     Tint        fctflag;            /* per facet data flag */
94     Tint        vrtflag;            /* per vertex data flag */
95     Tdim        dim;                /* number of cols by rows */
96     TEL_POINT   *gnormals;          /* geometric normals */
97     TEL_COLOUR  *facet_colour_vals; /* facet colour value */
98     TEL_POINT   *points;            /* array of points for all bounds */
99     TEL_COLOUR  *colours;           /* array of vertex colour values */
100     TEL_POINT   *vnormals;      /* array of vertex normals for all bounds */
101   } quadmesh3data;
102
103   struct 
104   {
105     Tint       shpflag;   /* primitive shape flag */
106     Tint       fctflag;   /* per facet data flag */
107     Tint       vrtflag;   /* per vertex data flag */
108     Tint       edgflag;   /* per edge data flag */
109     TEL_POINT  *gnormals; /* geometric normals */
110     Tint       *edgvis;   /* array of edge visibility flags for all edges */
111     Tint       num_vertices;/*number of fill areas in the set */
112     TEL_COLOUR *facet_colour_vals; /* facet colour values */
113     TEL_POINT  *points;            /* array of vertices */
114     TEL_COLOUR *colours;           /* array of vertex colour values */
115     TEL_POINT  *vnormals;     /* array of vertex normals for all vertices */
116     Tint       num_bounds;    /* number of bounds */
117     Tint       *bounds;       /* list of number of points in each bound */
118     Tint       *indices;      /* list of vertex indices for all bounds */
119   } indexedpolygons3data;
120
121   /*  depth cue index             */            /* -- idata              -- */
122   /*  surface properties          */
123   /*  back surface properties     */
124   TEL_SURF_PROP  surf_prop;         /* Front or back surface properties */
125   /*  interior shading method     */            /* -- idata              -- */
126   /*  interior lighting method    */            /* -- idata              -- */
127
128   struct 
129   {
130     Tintlst        on;        /* list of activated lights */
131     Tintlst        off;       /* list of deactivated lights */
132   } light_source_state;
133
134   struct {
135     Tint        distinguish;   /* distinguish */
136     TelCullMode cull;          /* culling mode */
137   } face_processing_mode;
138
139   /*  polyline, polymarker, text, interior, back interior, edge colour */
140   TEL_COLOUR gnl_colour;
141 } Teldata;
142
143 typedef struct
144 {
145   Tint    size;
146   Tint    act_size;
147   Tchar   *buf;
148   Teldata *data;
149 } TEL_INQ_CONTENT, *tel_inq_content;
150
151 /* keys to be used for inquiry */
152 #define INQ_GET_SIZE_ID    1  /* key.data.ldata will contain size */
153 #define INQ_GET_CONTENT_ID 2  /* key.data.pdata is pointer to Teldata */
154
155 /* element,   size */
156 extern TStatus TelInqCurElemTypeSize( TelType *, Tint * );
157
158 /* size of buffer, buffer,  actual_size, data */
159 extern TStatus TelInqCurElemContent( Tint, Tchar *, Tint *,      Teldata * );
160
161 #endif