Integration of OCCT 6.5.0 from SVN
[occt.git] / src / InterfaceGraphic / InterfaceGraphic_telem.hxx
CommitLineData
7fd59977 1/*
2File: InterfaceGraphic_telem.h
3
416/06/2000 : ATS : G005 : Copied from OpenGl_telem.h to support required
5for InterfaceGraphic_Parray.hxx definitions
6
722/03/2004 : SAN : OCC4895 High-level interface for controlling polygon offsets
8
920/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
52struct TEL_TEXTURE_COORD
53{
54 float xy[2];
55 IMPLEMENT_MEMORY_OPERATORS
56};
57
58typedef TEL_TEXTURE_COORD* tel_texture_coord;
59
60struct 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};
81typedef TEL_POINT* tel_point;
82
83struct TEL_COLOUR
84{
85 /* OCC8854: san -- number of color components increased to include alpha value */
86 float rgb[4];
87 IMPLEMENT_MEMORY_OPERATORS
88};
89typedef TEL_COLOUR* tel_colour;
90
91struct TEL_POINT_DATA
92{
93 int num;
94 TEL_POINT* data;
95 IMPLEMENT_MEMORY_OPERATORS
96};
97typedef TEL_POINT_DATA* tel_point_data;
98
99struct TEL_TINT_DATA
100{
101 int num;
102 int* data;
103 IMPLEMENT_MEMORY_OPERATORS
104};
105typedef TEL_TINT_DATA* tel_tint_data;
106
107struct TEL_MATRIX3_DATA
108{
109 TComposeType mode;
110 Tmatrix3 mat;
111 IMPLEMENT_MEMORY_OPERATORS
112};
113typedef TEL_MATRIX3_DATA* tel_matrix3_data;
114
115struct TEL_TEXT_DATA
116{
117 TEL_POINT attach_pt;
118 Tint length;
119 Tchar* data;
120 IMPLEMENT_MEMORY_OPERATORS
121};
122typedef TEL_TEXT_DATA* tel_text_data;
123
124struct TEL_ALIGN_DATA
125{
126 Tint Hmode;
127 Tint Vmode;
128 IMPLEMENT_MEMORY_OPERATORS
129};
130typedef TEL_ALIGN_DATA* tel_align_data;
131
132typedef enum
133{
134 TLightAmbient,
135 TLightDirectional,
136 TLightPositional,
137 TLightSpot
138} TLightType;
139
140typedef enum
141{
142 TelHLColour,
143 TelHLForcedColour
144} THighlightType;
145
146typedef enum
147{
148 TelDCSuppressed,
149 TelDCAllowed
150} TDepthCueType;
151
152/* Proprietes materiels */
153struct 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};
163typedef TEL_SURF_PROP* tel_surf_prop;
164
165typedef 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
296typedef enum
297{
298 TelBezierCurve = TEL_BEZIER,
299 TelCardinalCurve = TEL_CARDINAL,
300 TelBSplineCurve = TEL_BSPLINE
301} TelCurveType;
302
303typedef enum
304{
305 TelHLHSRNone,
306 TelHLHSRZBuff
307
308} TelHLHSRId;
309
310/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
311struct TEL_POFFSET_PARAM
312{
313 int mode;
314 float factor;
315 float units;
316 IMPLEMENT_MEMORY_OPERATORS
317};
318typedef 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 ) */
322struct TEL_TRANSFORM_PERSISTENCE
323{
324 int mode;
325 float pointX;
326 float pointY;
327 float pointZ;
328 IMPLEMENT_MEMORY_OPERATORS
329};
330typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence;
331/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
332
333#endif /* INTERFACEGRAPHIC_TELEM_H */