0022149: Strings with Japanese characters can not be displayed in 3D viewer
[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
7fd59977 115struct TEL_ALIGN_DATA
116{
117 Tint Hmode;
118 Tint Vmode;
119 IMPLEMENT_MEMORY_OPERATORS
120};
121typedef TEL_ALIGN_DATA* tel_align_data;
122
123typedef enum
124{
125 TLightAmbient,
126 TLightDirectional,
127 TLightPositional,
128 TLightSpot
129} TLightType;
130
131typedef enum
132{
133 TelHLColour,
134 TelHLForcedColour
135} THighlightType;
136
137typedef enum
138{
139 TelDCSuppressed,
140 TelDCAllowed
141} TDepthCueType;
142
143/* Proprietes materiels */
144struct 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};
154typedef TEL_SURF_PROP* tel_surf_prop;
155
156typedef 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
287typedef enum
288{
289 TelBezierCurve = TEL_BEZIER,
290 TelCardinalCurve = TEL_CARDINAL,
291 TelBSplineCurve = TEL_BSPLINE
292} TelCurveType;
293
294typedef enum
295{
296 TelHLHSRNone,
297 TelHLHSRZBuff
298
299} TelHLHSRId;
300
301/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
302struct TEL_POFFSET_PARAM
303{
304 int mode;
305 float factor;
306 float units;
307 IMPLEMENT_MEMORY_OPERATORS
308};
309typedef 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 ) */
313struct TEL_TRANSFORM_PERSISTENCE
314{
315 int mode;
316 float pointX;
317 float pointY;
318 float pointZ;
319 IMPLEMENT_MEMORY_OPERATORS
320};
321typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence;
322/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
323
324#endif /* INTERFACEGRAPHIC_TELEM_H */