7fd59977 |
1 | /* |
2 | File: InterfaceGraphic_telem.h |
3 | |
4 | 16/06/2000 : ATS : G005 : Copied from OpenGl_telem.h to support required |
5 | for InterfaceGraphic_Parray.hxx definitions |
6 | |
7 | 22/03/2004 : SAN : OCC4895 High-level interface for controlling polygon offsets |
8 | |
9 | 20/05/2005 : SAN : OCC8854 Number of color components increased to include alpha value |
10 | |
11 | */ |
12 | |
13 | #ifndef INTERFACEGRAPHIC_TELEM_H |
14 | #define INTERFACEGRAPHIC_TELEM_H |
15 | |
16 | #include <Standard.hxx> |
17 | #include <InterfaceGraphic_tgl_all.hxx> |
18 | #include <stdlib.h> |
19 | |
20 | //if SUN compiler |
21 | #if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && ! defined(typename) |
22 | #define IMPLEMENT_MEMORY_OPERATORS \ |
23 | void* operator new (size_t size) {\ |
24 | void* p = malloc( size );\ |
25 | memset(p, 0, size);\ |
26 | return p;\ |
27 | }\ |
28 | void operator delete(void* p) {\ |
29 | free( p );\ |
30 | } |
31 | #else |
32 | //if other |
33 | #define IMPLEMENT_MEMORY_OPERATORS \ |
34 | void* operator new (size_t size) {\ |
35 | void* p = malloc( size );\ |
36 | memset(p, 0, size);\ |
37 | return p;\ |
38 | }\ |
39 | void* operator new[] (size_t size) {\ |
40 | void* p = malloc( size );\ |
41 | memset(p, 0, size);\ |
42 | return p;\ |
43 | }\ |
44 | void operator delete(void* p) { \ |
45 | free( p );\ |
46 | }\ |
47 | void operator delete[](void* p) {\ |
48 | free( p );\ |
49 | } |
50 | #endif |
51 | |
52 | struct TEL_TEXTURE_COORD |
53 | { |
54 | float xy[2]; |
55 | IMPLEMENT_MEMORY_OPERATORS |
56 | }; |
57 | |
58 | typedef TEL_TEXTURE_COORD* tel_texture_coord; |
59 | |
60 | struct TEL_POINT |
61 | { |
62 | float xyz[3]; |
63 | IMPLEMENT_MEMORY_OPERATORS |
64 | /*void* operator new (size_t size) { |
65 | void* p = malloc( size ); |
66 | memset(p, 0, size); |
67 | return p; |
68 | } |
69 | void* operator new[] (size_t size) { |
70 | void* p = malloc( size ); |
71 | memset(p, 0, size); |
72 | return p; |
73 | } |
74 | void operator delete(void* p) { |
75 | free( p ); |
76 | } |
77 | void operator delete[](void* p) { |
78 | free( p ); |
79 | }*/ |
80 | }; |
81 | typedef TEL_POINT* tel_point; |
82 | |
83 | struct TEL_COLOUR |
84 | { |
85 | /* OCC8854: san -- number of color components increased to include alpha value */ |
86 | float rgb[4]; |
87 | IMPLEMENT_MEMORY_OPERATORS |
88 | }; |
89 | typedef TEL_COLOUR* tel_colour; |
90 | |
91 | struct TEL_POINT_DATA |
92 | { |
93 | int num; |
94 | TEL_POINT* data; |
95 | IMPLEMENT_MEMORY_OPERATORS |
96 | }; |
97 | typedef TEL_POINT_DATA* tel_point_data; |
98 | |
99 | struct TEL_TINT_DATA |
100 | { |
101 | int num; |
102 | int* data; |
103 | IMPLEMENT_MEMORY_OPERATORS |
104 | }; |
105 | typedef TEL_TINT_DATA* tel_tint_data; |
106 | |
107 | struct TEL_MATRIX3_DATA |
108 | { |
109 | TComposeType mode; |
110 | Tmatrix3 mat; |
111 | IMPLEMENT_MEMORY_OPERATORS |
112 | }; |
113 | typedef TEL_MATRIX3_DATA* tel_matrix3_data; |
114 | |
115 | struct TEL_TEXT_DATA |
116 | { |
117 | TEL_POINT attach_pt; |
118 | Tint length; |
119 | Tchar* data; |
120 | IMPLEMENT_MEMORY_OPERATORS |
121 | }; |
122 | typedef TEL_TEXT_DATA* tel_text_data; |
123 | |
124 | struct TEL_ALIGN_DATA |
125 | { |
126 | Tint Hmode; |
127 | Tint Vmode; |
128 | IMPLEMENT_MEMORY_OPERATORS |
129 | }; |
130 | typedef TEL_ALIGN_DATA* tel_align_data; |
131 | |
132 | typedef enum |
133 | { |
134 | TLightAmbient, |
135 | TLightDirectional, |
136 | TLightPositional, |
137 | TLightSpot |
138 | } TLightType; |
139 | |
140 | typedef enum |
141 | { |
142 | TelHLColour, |
143 | TelHLForcedColour |
144 | } THighlightType; |
145 | |
146 | typedef enum |
147 | { |
148 | TelDCSuppressed, |
149 | TelDCAllowed |
150 | } TDepthCueType; |
151 | |
152 | /* Proprietes materiels */ |
153 | struct TEL_SURF_PROP |
154 | { |
155 | float amb, diff, spec, emsv; |
156 | float trans, shine; |
157 | float env_reflexion; |
158 | int isamb, isdiff, isspec, isemsv; |
159 | int isphysic; |
160 | TEL_COLOUR speccol, difcol, ambcol, emscol, matcol; |
161 | IMPLEMENT_MEMORY_OPERATORS |
162 | }; |
163 | typedef TEL_SURF_PROP* tel_surf_prop; |
164 | |
165 | typedef enum |
166 | { |
167 | TelCullNone, |
168 | TelCullFront, |
169 | TelCullBack |
170 | } TelCullMode; |
171 | |
172 | /* Interior Styles */ |
173 | #define TSM_SOLID 1 |
174 | #define TSM_HOLLOW 2 |
175 | #define TSM_EMPTY 3 |
176 | #define TSM_HATCH 4 |
177 | #define TSM_POINT 5 |
178 | #define TSM_HIDDENLINE 6 |
179 | |
180 | /* Standard Line Styles */ |
181 | #define TEL_LS_SOLID 0 |
182 | #define TEL_LS_DOT 2 |
183 | #define TEL_LS_DASH_DOT 3 |
184 | #define TEL_LS_DASH 1 |
185 | #define TEL_LS_DOUBLE_DOT_DASH 4 |
186 | |
187 | #define TEL_LS_USER_DEF_START 10 |
188 | |
189 | /* Standard Hatch Styles */ |
190 | #define TEL_HS_SOLID 0 |
191 | #define TEL_HS_CROSS 1 |
192 | #define TEL_HS_CROSS_SPARSE 2 |
193 | #define TEL_HS_GRID 3 |
194 | #define TEL_HS_GRID_SPARSE 4 |
195 | #define TEL_HS_DIAG_45 5 |
196 | #define TEL_HS_DIAG_135 6 |
197 | #define TEL_HS_HORIZONTAL 7 |
198 | #define TEL_HS_VERTICAL 8 |
199 | #define TEL_HS_DIAG_45_SPARSE 9 |
200 | #define TEL_HS_DIAG_135_SPARSE 10 |
201 | #define TEL_HS_HORIZONTAL_SPARSE 11 |
202 | #define TEL_HS_VERTICAL_SPARSE 12 |
203 | |
204 | #define TEL_HS_USER_DEF_START 15 |
205 | |
206 | #define TEL_SHAPE_UNKNOWN 1 |
207 | #define TEL_SHAPE_COMPLEX 2 |
208 | #define TEL_SHAPE_CONCAVE 3 |
209 | #define TEL_SHAPE_CONVEX 4 |
210 | |
211 | /* Key ids for area type primitives */ |
212 | #define NUM_FACETS_ID 1 /* key.data.ldata contains no. of facets */ |
213 | #define FNORMALS_ID 2 /* key.data.pdata is array of TEL_POINT */ |
214 | #define FACET_COLOUR_VALS_ID 3 /* key.data.pdata is array of TSM_COLOUR */ |
215 | #define VERTICES_ID 4 /* key.data.pdata is array of TEL_POINT */ |
216 | #define VERTEX_COLOUR_VALS_ID 5 /* key.data.pdata is array of TSM_COLOUR */ |
217 | #define VNORMALS_ID 6 /* key.data.pdata is array of TEL_POINT */ |
218 | #define NUM_VERTICES_ID 7 /* key.data.ldata is num of vertices */ |
219 | #define SHAPE_FLAG_ID 8 /* key.data.ldata is shape flag */ |
220 | #define EDGE_DATA_ID 9 /* key.data.pdata is edge data (Tint*) */ |
221 | #define CONNECTIVITY_ID 10 /* key.data.pdata is conn data (Tint*) */ |
222 | #define BOUNDS_DATA_ID 11 /* key.data.pdata is bounds data (Tint*) */ |
223 | #define NUM_LINES_ID 12 /* key.data.ldata is number of lines */ |
224 | #define NUM_ROWS_ID 13 /* key.data.ldata is number of rows */ |
225 | #define NUM_COLUMNS_ID 14 /* key.data.ldata is number of columns */ |
226 | #define VTEXTURECOORD_ID 15 /* key.data.pdata is array of TEL_TEXTURE_COORD */ |
227 | |
228 | #define PARRAY_ID 16 /* key.data.pdata is a primitive array */ |
229 | |
230 | /* Key ids for text primitives */ |
231 | #define TEXT_ATTACH_PT_ID 1 /* key.data.pdata contains tel_point */ |
232 | #define TEXT_STRING_ID 2 /* key.data.pdata contains Tchar * */ |
233 | |
234 | |
235 | /* Key ids for curve primitives */ |
236 | #define CURVE_TYPE_ID 1 /* key.data.ldata is curve type */ |
237 | /* TelCurveType : |
238 | * Bezier |
239 | * Cardinal |
240 | * BSpline |
241 | */ |
242 | #define CURVE_NUM_POINTS_ID 2 /* key.data.ldata is num of points */ |
243 | #define CURVE_VERTICES_ID 3 /* key.data.pdata is array of TEL_POINT */ |
244 | |
245 | |
246 | /* Polymarker Types */ |
247 | #define TEL_PM_PLUS 0 |
248 | #define TEL_PM_STAR 1 |
249 | #define TEL_PM_CROSS 2 |
250 | #define TEL_PM_CIRC 3 |
251 | #define TEL_PM_DOT 4 |
252 | #define TEL_PM_USERDEFINED 5 |
253 | |
254 | #define TEL_PM_USER_DEF_START 7 |
255 | |
256 | #define TEL_SD_SHADING 0 |
257 | #define TEL_SD_TEXTURE 1 |
258 | |
259 | #define TEL_SM_FLAT 1 |
260 | #define TEL_SM_GOURAUD 2 |
261 | |
262 | #define TEL_POLYMARKER_FONT (short)1 |
263 | |
264 | /* Standard Lighting Models */ |
265 | #define TEL_FRONT_BACK_LM 1 |
266 | |
267 | /* Standard Materials */ |
268 | #define TEL_FRONT_MATERIAL 1 |
269 | #define TEL_BACK_MATERIAL 2 |
270 | |
271 | /* facet flags */ |
272 | #define TEL_FAFLAG_NONE 1 |
273 | #define TEL_FAFLAG_NORMAL 2 |
274 | #define TEL_FAFLAG_COLOUR 3 |
275 | #define TEL_FAFLAG_COLOURNORMAL 4 |
276 | |
277 | /* internal use */ |
278 | #define TEL_FA_NONE TEL_FAFLAG_NONE |
279 | #define TEL_FA_NORMAL TEL_FAFLAG_NORMAL |
280 | |
281 | /* vertex flags */ |
282 | #define TEL_VTFLAG_NONE 1 |
283 | #define TEL_VTFLAG_NORMAL 2 |
284 | #define TEL_VTFLAG_COLOUR 3 |
285 | #define TEL_VTFLAG_COLOURNORMAL 4 |
286 | |
287 | /* internal use */ |
288 | #define TEL_VT_NONE TEL_VTFLAG_NONE |
289 | #define TEL_VT_NORMAL TEL_VTFLAG_NORMAL |
290 | |
291 | /* Defbasis identifier */ |
292 | #define TEL_BEZIER 1 |
293 | #define TEL_CARDINAL 2 |
294 | #define TEL_BSPLINE 3 |
295 | |
296 | typedef enum |
297 | { |
298 | TelBezierCurve = TEL_BEZIER, |
299 | TelCardinalCurve = TEL_CARDINAL, |
300 | TelBSplineCurve = TEL_BSPLINE |
301 | } TelCurveType; |
302 | |
303 | typedef enum |
304 | { |
305 | TelHLHSRNone, |
306 | TelHLHSRZBuff |
307 | |
308 | } TelHLHSRId; |
309 | |
310 | /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */ |
311 | struct TEL_POFFSET_PARAM |
312 | { |
313 | int mode; |
314 | float factor; |
315 | float units; |
316 | IMPLEMENT_MEMORY_OPERATORS |
317 | }; |
318 | typedef TEL_POFFSET_PARAM* tel_poffset_param; |
319 | /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */ |
320 | |
321 | /* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */ |
322 | struct TEL_TRANSFORM_PERSISTENCE |
323 | { |
324 | int mode; |
325 | float pointX; |
326 | float pointY; |
327 | float pointZ; |
328 | IMPLEMENT_MEMORY_OPERATORS |
329 | }; |
330 | typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence; |
331 | /* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */ |
332 | |
333 | #endif /* INTERFACEGRAPHIC_TELEM_H */ |