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 | |
7fd59977 |
115 | struct TEL_ALIGN_DATA |
116 | { |
117 | Tint Hmode; |
118 | Tint Vmode; |
119 | IMPLEMENT_MEMORY_OPERATORS |
120 | }; |
121 | typedef TEL_ALIGN_DATA* tel_align_data; |
122 | |
123 | typedef enum |
124 | { |
125 | TLightAmbient, |
126 | TLightDirectional, |
127 | TLightPositional, |
128 | TLightSpot |
129 | } TLightType; |
130 | |
131 | typedef enum |
132 | { |
133 | TelHLColour, |
134 | TelHLForcedColour |
135 | } THighlightType; |
136 | |
137 | typedef enum |
138 | { |
139 | TelDCSuppressed, |
140 | TelDCAllowed |
141 | } TDepthCueType; |
142 | |
143 | /* Proprietes materiels */ |
144 | struct TEL_SURF_PROP |
145 | { |
146 | float amb, diff, spec, emsv; |
147 | float trans, shine; |
148 | float env_reflexion; |
149 | int isamb, isdiff, isspec, isemsv; |
150 | int isphysic; |
151 | TEL_COLOUR speccol, difcol, ambcol, emscol, matcol; |
152 | IMPLEMENT_MEMORY_OPERATORS |
153 | }; |
154 | typedef TEL_SURF_PROP* tel_surf_prop; |
155 | |
156 | typedef enum |
157 | { |
158 | TelCullNone, |
159 | TelCullFront, |
160 | TelCullBack |
161 | } TelCullMode; |
162 | |
163 | /* Interior Styles */ |
164 | #define TSM_SOLID 1 |
165 | #define TSM_HOLLOW 2 |
166 | #define TSM_EMPTY 3 |
167 | #define TSM_HATCH 4 |
168 | #define TSM_POINT 5 |
169 | #define TSM_HIDDENLINE 6 |
170 | |
171 | /* Standard Line Styles */ |
172 | #define TEL_LS_SOLID 0 |
173 | #define TEL_LS_DOT 2 |
174 | #define TEL_LS_DASH_DOT 3 |
175 | #define TEL_LS_DASH 1 |
176 | #define TEL_LS_DOUBLE_DOT_DASH 4 |
177 | |
178 | #define TEL_LS_USER_DEF_START 10 |
179 | |
180 | /* Standard Hatch Styles */ |
181 | #define TEL_HS_SOLID 0 |
182 | #define TEL_HS_CROSS 1 |
183 | #define TEL_HS_CROSS_SPARSE 2 |
184 | #define TEL_HS_GRID 3 |
185 | #define TEL_HS_GRID_SPARSE 4 |
186 | #define TEL_HS_DIAG_45 5 |
187 | #define TEL_HS_DIAG_135 6 |
188 | #define TEL_HS_HORIZONTAL 7 |
189 | #define TEL_HS_VERTICAL 8 |
190 | #define TEL_HS_DIAG_45_SPARSE 9 |
191 | #define TEL_HS_DIAG_135_SPARSE 10 |
192 | #define TEL_HS_HORIZONTAL_SPARSE 11 |
193 | #define TEL_HS_VERTICAL_SPARSE 12 |
194 | |
195 | #define TEL_HS_USER_DEF_START 15 |
196 | |
197 | #define TEL_SHAPE_UNKNOWN 1 |
198 | #define TEL_SHAPE_COMPLEX 2 |
199 | #define TEL_SHAPE_CONCAVE 3 |
200 | #define TEL_SHAPE_CONVEX 4 |
201 | |
202 | /* Key ids for area type primitives */ |
203 | #define NUM_FACETS_ID 1 /* key.data.ldata contains no. of facets */ |
204 | #define FNORMALS_ID 2 /* key.data.pdata is array of TEL_POINT */ |
205 | #define FACET_COLOUR_VALS_ID 3 /* key.data.pdata is array of TSM_COLOUR */ |
206 | #define VERTICES_ID 4 /* key.data.pdata is array of TEL_POINT */ |
207 | #define VERTEX_COLOUR_VALS_ID 5 /* key.data.pdata is array of TSM_COLOUR */ |
208 | #define VNORMALS_ID 6 /* key.data.pdata is array of TEL_POINT */ |
209 | #define NUM_VERTICES_ID 7 /* key.data.ldata is num of vertices */ |
210 | #define SHAPE_FLAG_ID 8 /* key.data.ldata is shape flag */ |
211 | #define EDGE_DATA_ID 9 /* key.data.pdata is edge data (Tint*) */ |
212 | #define CONNECTIVITY_ID 10 /* key.data.pdata is conn data (Tint*) */ |
213 | #define BOUNDS_DATA_ID 11 /* key.data.pdata is bounds data (Tint*) */ |
214 | #define NUM_LINES_ID 12 /* key.data.ldata is number of lines */ |
215 | #define NUM_ROWS_ID 13 /* key.data.ldata is number of rows */ |
216 | #define NUM_COLUMNS_ID 14 /* key.data.ldata is number of columns */ |
217 | #define VTEXTURECOORD_ID 15 /* key.data.pdata is array of TEL_TEXTURE_COORD */ |
218 | |
219 | #define PARRAY_ID 16 /* key.data.pdata is a primitive array */ |
220 | |
221 | /* Key ids for text primitives */ |
222 | #define TEXT_ATTACH_PT_ID 1 /* key.data.pdata contains tel_point */ |
223 | #define TEXT_STRING_ID 2 /* key.data.pdata contains Tchar * */ |
224 | |
225 | |
226 | /* Key ids for curve primitives */ |
227 | #define CURVE_TYPE_ID 1 /* key.data.ldata is curve type */ |
228 | /* TelCurveType : |
229 | * Bezier |
230 | * Cardinal |
231 | * BSpline |
232 | */ |
233 | #define CURVE_NUM_POINTS_ID 2 /* key.data.ldata is num of points */ |
234 | #define CURVE_VERTICES_ID 3 /* key.data.pdata is array of TEL_POINT */ |
235 | |
236 | |
237 | /* Polymarker Types */ |
238 | #define TEL_PM_PLUS 0 |
239 | #define TEL_PM_STAR 1 |
240 | #define TEL_PM_CROSS 2 |
241 | #define TEL_PM_CIRC 3 |
242 | #define TEL_PM_DOT 4 |
243 | #define TEL_PM_USERDEFINED 5 |
244 | |
245 | #define TEL_PM_USER_DEF_START 7 |
246 | |
247 | #define TEL_SD_SHADING 0 |
248 | #define TEL_SD_TEXTURE 1 |
249 | |
250 | #define TEL_SM_FLAT 1 |
251 | #define TEL_SM_GOURAUD 2 |
252 | |
253 | #define TEL_POLYMARKER_FONT (short)1 |
254 | |
255 | /* Standard Lighting Models */ |
256 | #define TEL_FRONT_BACK_LM 1 |
257 | |
258 | /* Standard Materials */ |
259 | #define TEL_FRONT_MATERIAL 1 |
260 | #define TEL_BACK_MATERIAL 2 |
261 | |
262 | /* facet flags */ |
263 | #define TEL_FAFLAG_NONE 1 |
264 | #define TEL_FAFLAG_NORMAL 2 |
265 | #define TEL_FAFLAG_COLOUR 3 |
266 | #define TEL_FAFLAG_COLOURNORMAL 4 |
267 | |
268 | /* internal use */ |
269 | #define TEL_FA_NONE TEL_FAFLAG_NONE |
270 | #define TEL_FA_NORMAL TEL_FAFLAG_NORMAL |
271 | |
272 | /* vertex flags */ |
273 | #define TEL_VTFLAG_NONE 1 |
274 | #define TEL_VTFLAG_NORMAL 2 |
275 | #define TEL_VTFLAG_COLOUR 3 |
276 | #define TEL_VTFLAG_COLOURNORMAL 4 |
277 | |
278 | /* internal use */ |
279 | #define TEL_VT_NONE TEL_VTFLAG_NONE |
280 | #define TEL_VT_NORMAL TEL_VTFLAG_NORMAL |
281 | |
282 | /* Defbasis identifier */ |
283 | #define TEL_BEZIER 1 |
284 | #define TEL_CARDINAL 2 |
285 | #define TEL_BSPLINE 3 |
286 | |
287 | typedef enum |
288 | { |
289 | TelBezierCurve = TEL_BEZIER, |
290 | TelCardinalCurve = TEL_CARDINAL, |
291 | TelBSplineCurve = TEL_BSPLINE |
292 | } TelCurveType; |
293 | |
294 | typedef enum |
295 | { |
296 | TelHLHSRNone, |
297 | TelHLHSRZBuff |
298 | |
299 | } TelHLHSRId; |
300 | |
301 | /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */ |
302 | struct TEL_POFFSET_PARAM |
303 | { |
304 | int mode; |
305 | float factor; |
306 | float units; |
307 | IMPLEMENT_MEMORY_OPERATORS |
308 | }; |
309 | typedef TEL_POFFSET_PARAM* tel_poffset_param; |
310 | /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */ |
311 | |
312 | /* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */ |
313 | struct TEL_TRANSFORM_PERSISTENCE |
314 | { |
315 | int mode; |
316 | float pointX; |
317 | float pointY; |
318 | float pointZ; |
319 | IMPLEMENT_MEMORY_OPERATORS |
320 | }; |
321 | typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence; |
322 | /* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */ |
323 | |
324 | #endif /* INTERFACEGRAPHIC_TELEM_H */ |