summaryrefslogtreecommitdiff
path: root/inc/InterfaceGraphic_telem.hxx
blob: 8084b3cd20c411248a72d18363bd1c3d3af7b202 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
/*
File: InterfaceGraphic_telem.h

16/06/2000 : ATS : G005 : Copied from OpenGl_telem.h to support required 
for InterfaceGraphic_Parray.hxx definitions

22/03/2004 : SAN : OCC4895 High-level interface for controlling polygon offsets

20/05/2005 : SAN : OCC8854 Number of color components increased to include alpha value

*/

#ifndef  INTERFACEGRAPHIC_TELEM_H
#define  INTERFACEGRAPHIC_TELEM_H

#include <Standard.hxx>
#include <InterfaceGraphic_tgl_all.hxx>
#include <stdlib.h>

#ifdef __BORLANDC__
#include <mem.h>
#endif

//if SUN compiler
#if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && ! defined(typename)
#define IMPLEMENT_MEMORY_OPERATORS \
  void* operator new (size_t size) {\
  void* p = malloc( size );\
  memset(p, 0, size);\
  return p;\
  }\
  void operator delete(void* p) {\
  free( p );\
  }
#else
//if other
#define IMPLEMENT_MEMORY_OPERATORS \
  void* operator new (size_t size) {\
  void* p = malloc( size );\
  memset(p, 0, size);\
  return p;\
  }\
  void* operator new[] (size_t size) {\
  void* p = malloc( size );\
  memset(p, 0, size);\
  return p;\
  }\
  void operator delete(void* p) { \
  free( p );\
  }\
  void operator delete[](void* p) {\
  free( p );\
  }
#endif

struct TEL_TEXTURE_COORD
{
  float xy[2];
  IMPLEMENT_MEMORY_OPERATORS
};

typedef TEL_TEXTURE_COORD* tel_texture_coord;

struct TEL_POINT
{
  float  xyz[3];
  IMPLEMENT_MEMORY_OPERATORS
    /*void* operator new (size_t size) {
    void* p = malloc( size );
    memset(p, 0, size);
    return p;
    }
    void* operator new[] (size_t size) {
    void* p = malloc( size );
    memset(p, 0, size);
    return p;
    }
    void operator delete(void* p) {
    free( p );
    }
    void operator delete[](void* p) {
    free( p );
    }*/
};
typedef TEL_POINT* tel_point;

struct TEL_COLOUR
{
  /* OCC8854: san -- number of color components increased to include alpha value */
  float    rgb[4];
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_COLOUR* tel_colour;

struct TEL_POINT_DATA
{
  int      num;
  TEL_POINT* data;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_POINT_DATA* tel_point_data;

struct TEL_TINT_DATA
{
  int   num;
  int*  data;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_TINT_DATA* tel_tint_data;

struct TEL_MATRIX3_DATA
{
  TComposeType  mode;
  Tmatrix3      mat;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_MATRIX3_DATA* tel_matrix3_data;

struct TEL_ALIGN_DATA
{
  Tint Hmode;
  Tint Vmode;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_ALIGN_DATA* tel_align_data;

typedef  enum
{
  TLightAmbient, 
  TLightDirectional, 
  TLightPositional, 
  TLightSpot
} TLightType;

typedef  enum
{
  TelHLColour, 
  TelHLForcedColour
} THighlightType;

typedef  enum
{
  TelDCSuppressed, 
  TelDCAllowed
} TDepthCueType;

/* Proprietes materiels */
struct  TEL_SURF_PROP
{
  float     amb, diff, spec, emsv; 
  float     trans, shine;
  float     env_reflexion;
  int       isamb, isdiff, isspec, isemsv;
  int       isphysic; 
  TEL_COLOUR speccol, difcol, ambcol, emscol, matcol;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_SURF_PROP* tel_surf_prop;

typedef  enum
{
  TelCullNone, 
  TelCullFront, 
  TelCullBack
} TelCullMode;

/* Interior Styles */
#define TSM_SOLID  1
#define TSM_HOLLOW 2
#define TSM_EMPTY  3
#define TSM_HATCH  4
#define TSM_POINT  5
#define TSM_HIDDENLINE  6

/* Standard Line Styles */
#define TEL_LS_SOLID           0
#define TEL_LS_DOT             2
#define TEL_LS_DASH_DOT        3
#define TEL_LS_DASH            1
#define TEL_LS_DOUBLE_DOT_DASH 4

#define TEL_LS_USER_DEF_START  10

/* Standard Hatch Styles */
#define  TEL_HS_SOLID              0
#define  TEL_HS_CROSS              1
#define  TEL_HS_CROSS_SPARSE       2
#define  TEL_HS_GRID               3
#define  TEL_HS_GRID_SPARSE        4
#define  TEL_HS_DIAG_45            5
#define  TEL_HS_DIAG_135           6
#define  TEL_HS_HORIZONTAL         7
#define  TEL_HS_VERTICAL           8
#define  TEL_HS_DIAG_45_SPARSE     9
#define  TEL_HS_DIAG_135_SPARSE    10
#define  TEL_HS_HORIZONTAL_SPARSE  11
#define  TEL_HS_VERTICAL_SPARSE    12

#define TEL_HS_USER_DEF_START      15

#define  TEL_SHAPE_UNKNOWN         1
#define  TEL_SHAPE_COMPLEX         2
#define  TEL_SHAPE_CONCAVE         3
#define  TEL_SHAPE_CONVEX          4

/* Key ids for area type primitives */
#define NUM_FACETS_ID         1   /* key.data.ldata contains no. of facets */
#define FNORMALS_ID           2   /* key.data.pdata is array of TEL_POINT */
#define FACET_COLOUR_VALS_ID  3   /* key.data.pdata is array of TSM_COLOUR */
#define VERTICES_ID           4   /* key.data.pdata is array of TEL_POINT */
#define VERTEX_COLOUR_VALS_ID 5   /* key.data.pdata is array of TSM_COLOUR */
#define VNORMALS_ID           6   /* key.data.pdata is array of TEL_POINT */
#define NUM_VERTICES_ID       7   /* key.data.ldata is num of vertices */
#define SHAPE_FLAG_ID         8   /* key.data.ldata is shape flag */
#define EDGE_DATA_ID          9   /* key.data.pdata is edge data (Tint*) */
#define CONNECTIVITY_ID       10  /* key.data.pdata is conn data  (Tint*) */
#define BOUNDS_DATA_ID        11  /* key.data.pdata is bounds data  (Tint*) */
#define NUM_LINES_ID          12  /* key.data.ldata is number of lines */
#define NUM_ROWS_ID           13  /* key.data.ldata is number of rows */
#define NUM_COLUMNS_ID        14  /* key.data.ldata is number of columns */
#define VTEXTURECOORD_ID      15  /* key.data.pdata is array of TEL_TEXTURE_COORD */

#define PARRAY_ID       16  /* key.data.pdata is a primitive array */

/* Key ids for text primitives */
#define TEXT_ATTACH_PT_ID     1   /* key.data.pdata contains tel_point */
#define TEXT_STRING_ID        2   /* key.data.pdata contains Tchar *   */


/* Key ids for curve primitives */
#define CURVE_TYPE_ID         1   /* key.data.ldata is curve type */
/* TelCurveType :
* Bezier
* Cardinal
* BSpline
*/
#define CURVE_NUM_POINTS_ID   2   /* key.data.ldata is num of points */
#define CURVE_VERTICES_ID     3   /* key.data.pdata is array of TEL_POINT */


/* Polymarker Types */
#define TEL_PM_PLUS        0
#define TEL_PM_STAR        1
#define TEL_PM_CROSS       2
#define TEL_PM_CIRC        3
#define TEL_PM_DOT         4
#define TEL_PM_USERDEFINED 5

#define TEL_PM_USER_DEF_START 7

#define TEL_SD_SHADING 0
#define TEL_SD_TEXTURE 1

#define TEL_SM_FLAT    1
#define TEL_SM_GOURAUD 2

#define TEL_POLYMARKER_FONT (short)1

/* Standard Lighting Models */
#define  TEL_FRONT_BACK_LM  1

/* Standard Materials */
#define  TEL_FRONT_MATERIAL  1
#define  TEL_BACK_MATERIAL   2

/* facet flags */
#define TEL_FAFLAG_NONE         1
#define TEL_FAFLAG_NORMAL       2
#define TEL_FAFLAG_COLOUR       3
#define TEL_FAFLAG_COLOURNORMAL 4

/* internal use */
#define TEL_FA_NONE   TEL_FAFLAG_NONE
#define TEL_FA_NORMAL TEL_FAFLAG_NORMAL

/* vertex flags */
#define TEL_VTFLAG_NONE         1
#define TEL_VTFLAG_NORMAL       2
#define TEL_VTFLAG_COLOUR       3
#define TEL_VTFLAG_COLOURNORMAL 4

/* internal use */
#define TEL_VT_NONE   TEL_VTFLAG_NONE
#define TEL_VT_NORMAL TEL_VTFLAG_NORMAL

/* Defbasis identifier */
#define TEL_BEZIER   1
#define TEL_CARDINAL 2
#define TEL_BSPLINE  3

typedef  enum
{
  TelBezierCurve   = TEL_BEZIER,
  TelCardinalCurve = TEL_CARDINAL,
  TelBSplineCurve  = TEL_BSPLINE
} TelCurveType;

typedef enum
{
  TelHLHSRNone, 
  TelHLHSRZBuff

} TelHLHSRId;

/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
struct  TEL_POFFSET_PARAM
{
  int   mode;
  float factor;
  float units;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_POFFSET_PARAM* tel_poffset_param;
/* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */

/* ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate ) */
struct TEL_TRANSFORM_PERSISTENCE
{
  int       mode;
  float     pointX;
  float     pointY;
  float     pointZ;
  IMPLEMENT_MEMORY_OPERATORS
};
typedef TEL_TRANSFORM_PERSISTENCE* tel_transform_persistence;
/* ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate ) */

#endif /* INTERFACEGRAPHIC_TELEM_H */