0022149: Strings with Japanese characters can not be displayed in 3D viewer
[occt.git] / src / InterfaceGraphic / InterfaceGraphic_telem.hxx
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_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 */