0022650: Exception in Primitive Array during Redisplay of Presentable Object
[occt.git] / src / OpenGl / OpenGl_tgl_funcs.hxx
1 /***********************************************************************
2
3 FONCTION :
4 ----------
5 Fichier OpenGl_tgl_funcs.h
6
7
8 REMARQUES:
9 ---------- 
10
11
12 HISTORIQUE DES MODIFICATIONS   :
13 --------------------------------
14 ??-??-?? : PCT ; creation
15 10-07-96 : FMN ; Suppression #define sur calcul matrice
16 05-08-97 : PCT ; support texture mapping
17 23-12-97 : FMN ; Suppression TelBackInteriorStyle, TelBackInteriorStyleIndex
18 15-01-98 : FMN ; Ajout Hidden line
19 08-04-98 : FGU ; Ajout emission 
20 27-11-98 : CAL ; S4062. Ajout des layers.
21 30-11-98 : FMN ; S3819 : Textes toujours visibles
22 22-03-04 : SAN ; OCC4895 High-level interface for controlling polygon offsets
23 04-10-04 : ABD ; Added User Defined marker type
24
25 ************************************************************************/
26
27 /*----------------------------------------------------------------------*/
28
29 #ifndef  OPENGL_TGL_FUNCS_H
30 #define  OPENGL_TGL_FUNCS_H
31
32 #define BUC60570        /* GG 06-09-99
33 //              The model view SD_NORMAL must shown objects with FLAT shading
34 */
35
36 #ifndef G003
37 #define G003            /* EUG 06-10-99 Degeneration support
38 */
39 #endif
40
41
42 #define  BUC61044    /* 25/10/01 SAV ; added functionality to control gl depth testing
43 from higher API */
44 #define  BUC61045    /* 25/10/01 SAV ; added functionality to control gl lighting 
45 from higher API */
46
47
48 /*----------------------------------------------------------------------*/
49 /*
50 * Includes
51 */
52 #include <OpenGl_tgl_all.hxx>
53 #include <OpenGl_telem.hxx>
54 #include <OpenGl_telem_pick.hxx>
55 #include <OpenGl_tsm.hxx>
56 #include <InterfaceGraphic_Aspect.hxx>
57 #include <InterfaceGraphic_Graphic3d.hxx>
58 #include <InterfaceGraphic_Visual3d.hxx>
59
60 #include <OSD_FontAspect.hxx>
61 #include <Graphic3d_CGraduatedTrihedron.hxx>
62
63 /*----------------------------------------------------------------------*/
64 /*
65 * Types definis
66 */
67
68 typedef float matrix3[4][4];
69
70 typedef enum {
71   TYPE_PARAL,
72   TYPE_PERSPECT
73 } projtype;
74
75 typedef enum {
76   IND_NO_CLIP,
77   IND_CLIP
78 } clip_ind;
79
80 typedef struct {
81   float   x;  /* x coordinate */
82   float   y;  /* y coordinate */
83   float   z;  /* z coordinate */
84 } point3;
85
86 typedef struct {
87   float   delta_x;    /* x magnitude */
88   float   delta_y;    /* y magnitude */
89   float   delta_z;    /* z magnitude */
90 } vec3;
91
92 typedef struct {
93   float   x_min;  /* x min */
94   float   x_max;  /* x max */
95   float   y_min;  /* y min */
96   float   y_max;  /* y max */
97   float   z_min;  /* z min */
98   float   z_max;  /* z max */
99 } limit3;
100
101 typedef struct {
102   float   x_min;  /* x min */
103   float   x_max;  /* x max */
104   float   y_min;  /* y min */
105   float   y_max;  /* y max */
106 } limit;
107
108 typedef struct {
109   limit   win;    /* window limits */
110   limit3  proj_vp;    /* viewport limits */
111   projtype    proj_type;  /* projection type */
112   point3  proj_ref_point; /* projection reference point */
113   float   view_plane; /* view plane distance */
114   float   back_plane; /* back plane distance */
115   float   front_plane;    /* front plane distance */
116 } view_map3;
117
118 /*----------------------------------------------------------------------*/
119 /*
120 * Prototypes
121 */
122
123 extern  void  call_func_label(Tint); /* lid */
124 extern  void  call_func_set_view_ind(Tint); /* vid */
125 extern  void  call_func_appl_data(void*); /* data */
126 extern  void  call_func_set_local_tran3(Tmatrix3, TComposeType); /* mat, mode */
127 extern  void  call_func_set_linewidth(Tfloat); /* lw */
128 extern  void  call_func_set_linetype(Tint); /* lt */
129 extern  void  call_func_set_int_style(Tint); /* is */
130 extern  void  call_func_set_edge_flag(Tint); /* state */
131 extern  void  call_func_set_edge_type(Tint); /* type */
132 extern  void  call_func_set_edgewidth(Tfloat); /* width */
133 extern  void  call_func_set_int_style_ind(Tint); /* ind */
134 extern  void  call_func_set_face_disting_mode(Tint); /* mode */
135 extern  void  call_func_set_face_cull_mode(Tint); /* mode */
136 extern  void  call_func_set_marker_type(Tint); /* type */
137 extern  void  call_func_set_marker_size(Tfloat); /* size */
138 extern  void  call_func_exec_struct(Tint); /* stid */
139 extern  void  call_func_init_tgl(void);
140 extern  void  call_func_post_struct(Tint, Tint, Tfloat); /* ws, stid, prio */
141 extern  void  call_func_set_int_shad_meth(Tint); /* method */
142 extern  void  call_func_set_refl_eqn(Tint); /* eqn */
143 extern  void  call_func_set_back_refl_eqn(Tint); /* eqn */
144 extern  void  call_func_set_text_font(Tchar*); /* font */
145 extern  void  call_func_set_char_space(Tfloat); /* sp */
146 extern  void  call_func_set_char_expan(Tfloat); /* exp */
147 extern  void  call_func_set_pick_id(Tint); /* pickid */
148 extern  void  call_func_redraw_all_structs (Tint, Tint); /* wsid, swap */
149 extern  void  call_func_redraw_all_structs_begin (Tint); /* wsid */
150 extern  void  call_func_redraw_all_structs_proc (Tint); /* wsid */
151 extern  void  call_func_redraw_all_structs_end (Tint, Tint); /* wsid, swap */
152 extern  void  call_func_set_anno_char_ht(Tfloat); /* height */
153 extern  void  call_func_set_anno_char_up_vec(Tfloat[2]); /* up_vector */
154 extern  void  call_func_set_anno_path(Tint); /* path */
155 extern  void  call_func_set_anno_align(Tint, Tint); /* hor, ver */
156 extern  void  call_func_anno_text_rel3( tel_point, Techar* );
157 extern  void  call_func_dcue_ind(Tint); /* dcid */
158 extern  void  call_func_set_do_texturemap(Tint); /* bool */
159 extern  void  call_func_set_texture_id(Tint); /* TextureID */
160 extern  void  call_func_set_text_style(int); /* style */
161 extern  void  call_func_set_text_display_type(int); /* display_type */
162 #ifdef G003
163 extern  void call_func_set_degenerate_model ( Tint, Tfloat ); /* degenerate model */
164 #endif  /* G003 */
165
166 extern  void  call_func_set_text_zoomable(Tint); /*Text Zoomable usage*/
167 extern  void  call_func_set_text_angle(Tfloat); /*Text Angle usage*/
168 extern  void  call_func_set_text_fontaspect(OSD_FontAspect); /*Text Zoomable usage*/
169
170 /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
171 extern  void  call_func_set_polygon_offset_params( Tint,     /* mode */
172                                                   Tfloat,   /* factor */
173                                                   Tfloat ); /* units */
174 /* OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets */
175
176 /* ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate ) */
177 extern  void call_func_set_transform_persistence( Tint, Tfloat, Tfloat, Tfloat );
178 /* extern  void  call_func_set_transform_persistence( tel_transform_persistence tp );*/
179 /* ABD 29/10/04  Transform Persistence of Presentation( pan, zoom, rotate ) */
180
181
182 /* OCC18942: obsolete in OCCT6.3, might be removed in further versions! */
183 extern void call_func_eval_ori_matrix3( point3 *vrp, vec3 *vpn, vec3 *vup,
184                                        int *err_ind, float mout[4][4] );
185 /* OCC18942: obsolete in OCCT6.3, might be removed in further versions! */
186 extern void call_func_eval_map_matrix3( view_map3 *Map, int *err_ind,
187                                        matrix3 mat );
188
189 /*----------------------------------------------------------------------*/
190 /*
191 * Constantes
192 */
193
194 /* Edge types */
195 #define  CALL_PHIGS_EDGE_OFF           TOff
196 #define  CALL_PHIGS_EDGE_ON            TOn
197
198 /* Edge data flags */
199 #define  CALL_PHIGS_EDGE_NONE          TOff
200 #define  CALL_PHIGS_EDGE_VISIBILITY    TOn
201
202 /* Line Types */
203 #define  CALL_PHIGS_LINE_SOLID         TEL_LS_SOLID
204 #define  CALL_PHIGS_LINE_DASH          TEL_LS_DASH
205 #define  CALL_PHIGS_LINE_DOT           TEL_LS_DOT
206 #define  CALL_PHIGS_LINE_DASH_DOT      TEL_LS_DASH_DOT
207
208 /* Marker types */
209 #define  CALL_PHIGS_MARKER_DOT          TEL_PM_DOT
210 #define  CALL_PHIGS_MARKER_PLUS         TEL_PM_PLUS
211 #define  CALL_PHIGS_MARKER_ASTERISK     TEL_PM_STAR
212 #define  CALL_PHIGS_MARKER_CIRCLE       TEL_PM_CIRC
213 #define  CALL_PHIGS_MARKER_CROSS        TEL_PM_CROSS
214 #define  CALL_PHIGS_MARKER_USER_DEFINED TEL_PM_USERDEFINED
215
216 /* Text : Path */
217 #define  CALL_PHIGS_PATH_RIGHT         0
218 #define  CALL_PHIGS_PATH_LEFT          0
219 #define  CALL_PHIGS_PATH_UP            0
220 #define  CALL_PHIGS_PATH_DOWN          0
221
222 /* Text : Horizontal alignment */
223 #define  CALL_PHIGS_HOR_LEFT           0
224 #define  CALL_PHIGS_HOR_CENTER         1
225 #define  CALL_PHIGS_HOR_RIGHT          2
226
227 /* Text : Vertical alignment */
228 #define  CALL_PHIGS_VERT_BOTTOM        0
229 #define  CALL_PHIGS_VERT_CENTER        1
230 #define  CALL_PHIGS_VERT_TOP           2
231
232 /* Interior styles */
233 #define  CALL_PHIGS_STYLE_HOLLOW       TSM_HOLLOW
234 #define  CALL_PHIGS_STYLE_SOLID        TSM_SOLID
235 #define  CALL_PHIGS_STYLE_HATCH        TSM_HATCH
236 #define  CALL_PHIGS_STYLE_EMPTY        TSM_EMPTY
237 #define  CALL_PHIGS_STYLE_HIDDENLINE   TSM_HIDDENLINE
238
239 /* Light Source Types */
240 #define  CALL_PHIGS_LIGHT_AMBIENT      TLightAmbient
241 #define  CALL_PHIGS_LIGHT_DIRECTIONAL  TLightDirectional
242 #define  CALL_PHIGS_LIGHT_POSITIONAL   TLightPositional
243 #define  CALL_PHIGS_LIGHT_SPOT         TLightSpot
244
245 /* Hatch styles */
246 #define  CALL_PHIGS_HATCH_HORIZ        TEL_HS_HORIZONTAL
247 #define  CALL_PHIGS_HATCH_HORIZ_DBL    TEL_HS_HORIZONTAL_SPARSE
248 #define  CALL_PHIGS_HATCH_VERT         TEL_HS_VERTICAL
249 #define  CALL_PHIGS_HATCH_VERT_DBL     TEL_HS_VERTICAL_SPARSE
250 #define  CALL_PHIGS_HATCH_DIAG_45      TEL_HS_DIAG_45
251 #define  CALL_PHIGS_HATCH_DIAG_45_DBL  TEL_HS_DIAG_45_SPARSE
252 #define  CALL_PHIGS_HATCH_DIAG_135     TEL_HS_DIAG_135
253 #define  CALL_PHIGS_HATCH_DIAG_135_DBL TEL_HS_DIAG_135_SPARSE
254 #define  CALL_PHIGS_HATCH_GRID_R       TEL_HS_GRID
255 #define  CALL_PHIGS_HATCH_GRID_R_DBL   TEL_HS_GRID_SPARSE
256 #define  CALL_PHIGS_HATCH_GRID_D       TEL_HS_CROSS
257 #define  CALL_PHIGS_HATCH_GRID_D_DBL   TEL_HS_CROSS_SPARSE
258
259 /* Edit modes */
260 #define  CALL_PHIGS_EDIT_INSERT        TEditInsert
261 #define  CALL_PHIGS_EDIT_REPLACE       TEditReplace
262
263 /* Transformation */
264 #define  CALL_PHIGS_TYPE_PRECONCAT     TPreConcatenate
265 #define  CALL_PHIGS_TYPE_POSTCONCAT    TPostConcatenate
266 #define  CALL_PHIGS_TYPE_REPLACE       TReplace
267
268 /* Clipping indicators */
269 #define  CALL_PHIGS_IND_NO_CLIP        TOff
270 #define  CALL_PHIGS_IND_CLIP           TOn
271
272 /* Projection types */
273 #define  CALL_PHIGS_TYPE_PARAL         TelParallel
274 #define  CALL_PHIGS_TYPE_PERSPECT      TelPerspective
275
276 /* shading methods */
277 #define  CALL_PHIGS_SD_NONE            TEL_SM_FLAT
278 #define  CALL_PHIGS_SD_COLOUR          TEL_SM_GOURAUD
279 #define  CALL_PHIGS_SD_DOT_PRODUCT     TEL_SM_GOURAUD
280 #ifndef BUC60570
281 #define  CALL_PHIGS_SD_NORMAL          TEL_SM_GOURAUD
282 #else
283 #define  CALL_PHIGS_SD_NORMAL          TEL_SM_FLAT
284 #endif
285
286 /* lighting methods */
287 #define  CALL_PHIGS_REFL_NONE               0x0000
288 #define  AMBIENT_MASK                       0x0001
289 #define  DIFFUSE_MASK                       0x0002
290 #define  SPECULAR_MASK                      0x0004
291 #define  EMISSIVE_MASK                      0x0008
292
293 /* cull mode */
294 #define  CALL_PHIGS_CULL_NONE          TelCullNone
295 #define  CALL_PHIGS_CULL_BACKFACE      TelCullBack
296 #define  CALL_PHIGS_CULL_FRONTFACE     TelCullFront
297
298 /* depth cue mode */
299 #define  CALL_PHIGS_SUPPRESSED         TelDCSuppressed
300 #define  CALL_PHIGS_ALLOWED            TelDCAllowed
301
302 /* distinguish mode */
303 #define  CALL_PHIGS_DISTING_NO         TOff
304 #define  CALL_PHIGS_DISTING_YES        TOn
305
306 #define  CALL_DEF_ENABLE_ZBUFFER       TOn
307 #define  CALL_DEF_DISABLE_ZBUFFER      TOff
308
309 /* style of text */
310 #define  ASPECT_TOST_NORMAL     0
311 #define  ASPECT_TOST_ANNOTATION 1
312
313 /* display type of the text */
314 #define  ASPECT_TODT_NORMAL     0
315 #define  ASPECT_TODT_SUBTITLE   1
316 #define  ASPECT_TODT_DEKALE     2
317 #define  ASPECT_TODT_BLEND      3
318
319 /* Pick Order */
320 #define  PTOP_FIRST                       TTopFirst
321 #define  PBOTTOM_FIRST                    TBottomFirst
322
323 /* Facet types */
324 #define  CALL_PHIGS_SHAPE_COMPLEX         TEL_SHAPE_COMPLEX
325 #define  CALL_PHIGS_SHAPE_NONCONVEX       TEL_SHAPE_CONCAVE
326 #define  CALL_PHIGS_SHAPE_CONVEX          TEL_SHAPE_CONVEX
327 #define  CALL_PHIGS_SHAPE_UNKNOWN         TEL_SHAPE_UNKNOWN
328
329 /* Vertex flags */
330 #define CALL_PHIGS_VERT_COORD                   TEL_VTFLAG_NONE
331 #define CALL_PHIGS_VERT_COORD_COLOUR            TEL_VTFLAG_COLOUR
332 #define CALL_PHIGS_VERT_COORD_NORMAL            TEL_VTFLAG_NORMAL
333 #define CALL_PHIGS_VERT_COORD_COLOUR_NORMAL     TEL_VTFLAG_COLOURNORMAL
334
335 /* Facet data flags */
336 #define CALL_PHIGS_FACET_NONE                   TEL_FAFLAG_NONE
337 #define CALL_PHIGS_FACET_COLOUR                 TEL_FAFLAG_COLOUR
338 #define CALL_PHIGS_FACET_NORMAL                 TEL_FAFLAG_NORMAL
339 #define CALL_PHIGS_FACET_COLOUR_NORMAL          TEL_FAFLAG_COLOURNORMAL
340
341 /* functions */
342 #define  call_func_open_struct         TsmOpenStructure
343 #define  call_func_close_struct        TsmCloseStructure
344 #define  call_func_set_edit_mode       TsmSetEditMode
345 #define  call_func_set_elem_ptr        TsmSetElementPointer
346 #define  call_func_offset_elem_ptr     TsmOffsetElementPointer
347 #define  call_func_set_elem_ptr_label  TsmSetElementPointerAtLabel
348 #define  call_func_del_elem            TsmDeleteElement
349 #define  call_func_del_elem_range      TsmDeleteElementRange
350 #define  call_func_del_elems_labels    TsmDeleteElementsBetweenLabels
351 #define  call_func_del_struct          TsmDeleteStructure 
352
353 #define call_func_inq_elem_ptr             TsmGetCurElemPtr
354 #define call_func_inq_elem                 TsmGetCurElem
355
356 /* Declarations  des subroutines  triedron */
357
358 void EXPORT call_togl_ztriedron_setup (
359                                        float* xcolor,
360                                        float* ycolor,
361                                        float* zcolor,
362                                        float  sizeratio,
363                                        float  axisdiameter,
364                                        int    nbfacettes          
365                                        );
366
367 void EXPORT call_togl_triedron_display (
368                                         CALL_DEF_VIEW * aview, 
369                                         int APosition, 
370                                         float r,
371                                         float g,
372                                         float b,
373                                         float AScale,
374                                         int asWireframe 
375                                         );
376
377 void EXPORT call_togl_triedron_erase (
378                                       CALL_DEF_VIEW *aview
379                                       );
380
381 void EXPORT call_togl_triedron_echo (
382                                      CALL_DEF_VIEW *aview,
383                                      int AType
384                                      );
385
386 /* Graduated trihedron */
387
388 void EXPORT call_togl_graduatedtrihedron_display(CALL_DEF_VIEW* view,
389                                                  const Graphic3d_CGraduatedTrihedron &cubic);
390
391 void EXPORT call_togl_graduatedtrihedron_erase(CALL_DEF_VIEW* view);
392
393 void EXPORT call_togl_graduatedtrihedron_minmaxvalues(float xmin, float ymin, float zmin,
394                                                       float xmax, float ymax, float zmax);
395
396 /* Declarations  des subroutines  mode immediat */
397
398 int EXPORT call_togl_begin_ajout_mode (
399                                        CALL_DEF_VIEW *aview
400                                        );
401
402 void EXPORT call_togl_end_ajout_mode (
403                                       );
404
405 int EXPORT call_togl_begin_immediat_mode (
406   CALL_DEF_VIEW *aview,
407   CALL_DEF_LAYER *anunderlayer,
408   CALL_DEF_LAYER *anoverlayer,
409   int doublebuffer,
410   int   retainmode
411   );
412
413 void EXPORT call_togl_end_immediat_mode (
414   int synchronize
415   );
416
417 void EXPORT call_togl_clear_immediat_mode (
418   CALL_DEF_VIEW *aview,
419   int aFlush
420   );
421
422 void EXPORT call_togl_transform (
423                                  CALL_DEF_MATRIX4X4 amatrix,
424                                  int mode
425                                  );
426
427 void EXPORT call_togl_begin_polyline (
428                                       );
429
430 void EXPORT call_togl_end_polyline (
431                                     );
432
433 void EXPORT call_togl_begin_polygon (
434                                      );
435
436 void EXPORT call_togl_end_polygon (
437                                    );
438
439 void EXPORT call_togl_begin_trianglemesh (
440   );
441
442 void EXPORT call_togl_end_trianglemesh (
443                                         );
444
445 void EXPORT call_togl_begin_marker (
446                                     );
447
448 void EXPORT call_togl_end_marker (
449                                   );
450
451 void EXPORT call_togl_begin_bezier (
452                                     );
453
454 void EXPORT call_togl_end_bezier (
455                                   );
456
457 void EXPORT call_togl_move (
458                             float x,
459                             float y,
460                             float z
461                             );
462
463 void EXPORT call_togl_movenormal (
464                                   float x,
465                                   float y,
466                                   float z,
467                                   float nx,
468                                   float ny,
469                                   float nz
470                                   );
471
472 void EXPORT call_togl_moveweight (
473                                   float x,
474                                   float y,
475                                   float z,
476                                   float w
477                                   );
478
479 void EXPORT call_togl_draw (
480                             float x,
481                             float y,
482                             float z
483                             );
484
485 void EXPORT call_togl_drawnormal (
486                                   float x,
487                                   float y,
488                                   float z,
489                                   float nx,
490                                   float ny,
491                                   float nz
492                                   );
493
494 void EXPORT call_togl_drawweight (
495                                   float x,
496                                   float y,
497                                   float z,
498                                   float w
499                                   );
500
501 void EXPORT call_togl_draw_text (
502                                  CALL_DEF_TEXT *atext
503                                  );
504
505 void EXPORT call_togl_draw_structure (
506                                       int StructId
507                                       );
508
509 void EXPORT call_togl_set_linecolor (
510                                      float r,
511                                      float g,
512                                      float b
513                                      );
514
515 void EXPORT call_togl_set_interiorcolor (
516   float r,
517   float g,
518   float b
519   );
520
521 void EXPORT call_togl_set_linetype (
522
523                                     long type
524
525                                     );
526
527 void EXPORT call_togl_set_interiortype (
528
529                                         long type
530
531                                         );
532
533 void EXPORT call_togl_set_linewidth (
534
535                                      float width
536
537                                      );
538
539 void EXPORT call_togl_set_textcolor (
540
541                                      float r,
542                                      float g,
543                                      float b
544
545                                      );
546
547 void EXPORT call_togl_set_textfont (
548
549                                     char *police,
550                                     float factor,
551                                     float space
552
553                                     );
554
555 void EXPORT call_togl_set_markercolor (
556
557                                        float r,
558                                        float g,
559                                        float b
560
561                                        );
562
563 void EXPORT call_togl_set_markertype (
564
565                                       long type,
566                                       float scale
567
568                                       );
569
570 void EXPORT call_togl_set_minmax (
571
572                                   float x1,
573                                   float y1,
574                                   float z1,
575                                   float x2,
576                                   float y2,
577                                   float z2
578
579                                   );
580
581 void EXPORT call_togl_set_rgb (
582
583                                float r,
584                                float g,
585                                float b
586
587                                );
588
589 /* Declarations des subroutines appelees du C++ */
590 /*    dans les packages Graphic3d et Visual3d   */
591
592 void EXPORT call_togl_opengroup (
593
594                                  CALL_DEF_GROUP *agroup
595
596                                  );
597
598 void EXPORT call_togl_closegroup (
599
600                                   CALL_DEF_GROUP *agroup
601
602                                   );
603
604 void EXPORT call_togl_cleargroup (
605
606                                   CALL_DEF_GROUP *agroup
607
608                                   );
609
610 void EXPORT call_togl_linecontextgroup (
611
612                                         CALL_DEF_GROUP *agroup,
613                                         int noinsert
614
615                                         );
616
617 void EXPORT call_togl_facecontextgroup (
618
619                                         CALL_DEF_GROUP *agroup,
620                                         int noinsert
621
622                                         );
623
624 void EXPORT call_togl_markercontextgroup (
625
626   CALL_DEF_GROUP *agroup,
627   int noinsert
628
629   );
630
631 void EXPORT call_togl_textcontextgroup (
632
633                                         CALL_DEF_GROUP *agroup,
634                                         int noinsert
635
636                                         );
637
638 void EXPORT call_togl_group (
639
640                              CALL_DEF_GROUP *agroup
641
642                              );
643
644 void EXPORT call_togl_marker (
645
646                               CALL_DEF_GROUP *agroup,
647                               CALL_DEF_MARKER *amarker
648
649                               );
650
651 void EXPORT call_togl_marker_set (
652
653                                   CALL_DEF_GROUP *agroup,
654                                   CALL_DEF_LISTMARKERS *almarkers
655
656                                   );
657
658 void EXPORT call_togl_polyline (
659
660                                 CALL_DEF_GROUP *agroup,
661                                 CALL_DEF_LISTPOINTS *alpoints
662
663                                 );
664
665 void EXPORT call_togl_polygon (
666
667                                CALL_DEF_GROUP *agroup,
668                                CALL_DEF_FACET *afacet
669
670                                );
671
672 void EXPORT call_togl_polygon_holes (
673
674                                      CALL_DEF_GROUP *agroup,
675                                      CALL_DEF_LISTFACETS *alfacets
676
677                                      );
678
679 void EXPORT call_togl_polygon_indices (
680
681                                        CALL_DEF_GROUP *agroup,
682                                        CALL_DEF_LISTPOINTS *alpoints,
683                                        CALL_DEF_LISTEDGES *aledges,
684                                        CALL_DEF_LISTINTEGERS *albounds
685
686                                        );
687
688 void EXPORT call_togl_pickid (
689
690                               CALL_DEF_GROUP *agroup
691
692                               );
693
694 void EXPORT call_togl_quadrangle (
695
696                                   CALL_DEF_GROUP *agroup,
697                                   CALL_DEF_QUAD *aquad
698
699                                   );
700
701 void EXPORT call_togl_removegroup (
702
703                                    CALL_DEF_GROUP *agroup
704
705                                    );
706
707 void EXPORT call_togl_text (
708
709                             CALL_DEF_GROUP *agroup,
710                             CALL_DEF_TEXT *atext
711
712                             );
713
714 void EXPORT call_togl_triangle (
715
716                                 CALL_DEF_GROUP *agroup,
717                                 CALL_DEF_TRIKE *atrike
718
719                                 );
720
721 void EXPORT call_togl_bezier (
722
723                               CALL_DEF_GROUP *agroup,
724                               CALL_DEF_LISTPOINTS *alpoints
725
726                               );
727
728 void EXPORT call_togl_bezier_weight (
729
730                                      CALL_DEF_GROUP *agroup,
731                                      CALL_DEF_LISTPOINTS *alpoints,
732                                      CALL_DEF_LISTREALS *alweights
733
734                                      );
735
736 void EXPORT call_togl_blink (
737
738                              CALL_DEF_STRUCTURE *astructure,
739                              int create
740
741                              );
742
743 void EXPORT call_togl_boundarybox (
744
745                                    CALL_DEF_STRUCTURE *astructure,
746                                    int create
747
748                                    );
749
750 void EXPORT call_togl_clearstructure (
751
752                                       CALL_DEF_STRUCTURE *astructure
753
754                                       );
755
756 void EXPORT call_togl_contextstructure (
757
758                                         CALL_DEF_STRUCTURE *astructure
759
760                                         );
761
762 void EXPORT call_togl_highlightcolor (
763
764                                       CALL_DEF_STRUCTURE *astructure,
765                                       CALL_DEF_COLOR *acolor,
766                                       int create
767
768                                       );
769
770 void EXPORT call_togl_namesetstructure (
771
772                                         CALL_DEF_STRUCTURE *astructure
773
774                                         );
775
776 void EXPORT call_togl_removestructure (
777
778                                        CALL_DEF_STRUCTURE *astructure
779
780                                        );
781
782 void EXPORT call_togl_structure (
783
784                                  CALL_DEF_STRUCTURE *astructure
785
786                                  );
787
788 void EXPORT call_togl_transformstructure (
789
790   CALL_DEF_STRUCTURE *astructure
791
792   );
793
794 void EXPORT call_togl_degeneratestructure (
795
796   CALL_DEF_STRUCTURE *astructure
797
798   );
799
800 void EXPORT call_togl_connect (
801
802                                CALL_DEF_STRUCTURE *afather,
803                                CALL_DEF_STRUCTURE *ason
804
805                                );
806
807 void EXPORT call_togl_disconnect (
808
809                                   CALL_DEF_STRUCTURE *afather,
810                                   CALL_DEF_STRUCTURE *ason
811
812                                   );
813
814 int EXPORT call_togl_begin_animation (
815
816                                       CALL_DEF_VIEW *aview
817
818                                       );
819
820 void EXPORT call_togl_end_animation (
821
822                                      CALL_DEF_VIEW *aview
823
824                                      );
825
826 int EXPORT call_togl_begin (
827
828                             char *adisplay
829
830                             );
831
832 /*RIC120302*/
833 int EXPORT call_togl_begin_display (
834
835                                     void *pdisplay
836
837                                     );
838 /*RIC120302*/
839
840 void EXPORT call_togl_end (
841
842
843                            );
844
845 void EXPORT call_togl_structure_exploration (
846
847   long Id,
848   long LabelBegin,
849   long LabelEnd
850
851   );
852
853 void EXPORT call_togl_element_exploration (
854
855   long Id,
856   long elem_num,
857   long *type,
858   CALL_DEF_POINT *pt,
859   CALL_DEF_NORMAL *npt,
860   CALL_DEF_COLOR *cpt,
861   CALL_DEF_NORMAL *nfa
862
863   );
864
865 void EXPORT call_togl_element_type (
866
867                                     long Id,
868                                     long elem_num,
869                                     long *type
870
871                                     );
872
873 void EXPORT call_togl_activateview (
874
875                                     CALL_DEF_VIEW *aview
876
877                                     );
878
879 void EXPORT call_togl_antialiasing (
880
881                                     CALL_DEF_VIEW *aview,
882                                     int tag
883
884                                     );
885
886 void EXPORT call_togl_background (
887
888                                   CALL_DEF_VIEW *aview
889
890                                   );
891
892 void EXPORT call_togl_gradient_background (
893
894                                            int ws, int type,
895                                            tel_colour tcolor1, tel_colour tcolor2
896                                           
897                                           );
898
899 void EXPORT call_togl_set_gradient_type (
900  
901                                          int ws, int type
902
903                                         );
904
905 int EXPORT call_togl_project_raster (
906
907                                      int wsid,
908                                      float x,
909                                      float y,
910                                      float z,
911                                      int *ixr,
912                                      int *iyr
913
914                                      );
915
916 int EXPORT call_togl_adopt_to_rect( 
917                                    int,
918                                    int,
919                                    int 
920                                    );
921
922 int EXPORT call_togl_unproject_raster (
923
924                                        int wsid,
925                                        int xm,
926                                        int ym,
927                                        int xM,
928                                        int yM,
929                                        int ixr,
930                                        int iyr,
931                                        float *x,
932                                        float *y,
933                                        float *z
934
935                                        );
936
937 int EXPORT call_togl_unproject_raster_with_ray (
938
939   int wsid,
940   int xm,
941   int ym,
942   int xM,
943   int yM,
944   int ixr,
945   int iyr,
946   float *x,
947   float *y,
948   float *z,
949   float *dx,
950   float *dy,
951   float *dz
952
953   );
954
955 void EXPORT call_togl_cliplimit (
956
957                                  CALL_DEF_VIEW *aview,
958                                  int wait
959
960                                  );
961
962 void EXPORT call_togl_deactivateview (
963
964                                       CALL_DEF_VIEW *aview
965
966                                       );
967
968 void EXPORT call_togl_depthcueing (
969
970                                    CALL_DEF_VIEW *aview,
971                                    int tag
972
973                                    );
974
975 void EXPORT call_togl_displaystructure (
976
977                                         CALL_DEF_VIEW *aview,
978                                         int StructId,
979                                         int Priority
980
981                                         );
982
983 void EXPORT call_togl_erasestructure (
984
985                                       int ViewId,
986                                       int StructId
987
988                                       );
989
990 void EXPORT call_togl_init_pick (
991
992
993                                  );
994
995 void EXPORT call_togl_pick (
996
997                             CALL_DEF_PICK *apick
998
999                             );
1000
1001 void EXPORT call_togl_ratio_window (
1002
1003                                     CALL_DEF_VIEW *aview
1004
1005                                     );
1006
1007 void EXPORT call_togl_redraw (
1008
1009                               CALL_DEF_VIEW *aview,
1010                               CALL_DEF_LAYER *anunderlayer,
1011                               CALL_DEF_LAYER *anoverlayer
1012
1013                               );
1014
1015 void EXPORT call_togl_redraw_area (
1016
1017                                    CALL_DEF_VIEW *aview,
1018                                    CALL_DEF_LAYER *anunderlayer,
1019                                    CALL_DEF_LAYER *anoverlayer,
1020                                    int x, int y, int width, int height
1021
1022                                    );
1023
1024 void EXPORT call_togl_removeview (
1025
1026                                   CALL_DEF_VIEW *aview
1027
1028                                   );
1029
1030 void EXPORT call_togl_setlight (
1031
1032                                 CALL_DEF_VIEW *aview
1033
1034                                 );
1035
1036 void EXPORT call_togl_setplane (
1037
1038                                 CALL_DEF_VIEW *aview
1039
1040                                 );
1041
1042 void EXPORT call_togl_setvisualisation (
1043
1044                                         CALL_DEF_VIEW *aview
1045
1046                                         );
1047
1048 void EXPORT call_togl_transparency (
1049
1050                                     int WsId,
1051                                     int ViewId,
1052                                     int Activity
1053
1054                                     );
1055
1056 void EXPORT call_togl_update (
1057
1058                               CALL_DEF_VIEW *aview,
1059                               CALL_DEF_LAYER *anunderlayer,
1060                               CALL_DEF_LAYER *anoverlayer
1061
1062                               );
1063
1064 int EXPORT call_togl_view (
1065
1066                            CALL_DEF_VIEW *aview
1067
1068                            );
1069
1070 int EXPORT call_togl_viewmapping (
1071
1072                                   CALL_DEF_VIEW *aview,
1073                                   int wait
1074
1075                                   );
1076
1077 int EXPORT call_togl_vieworientation (
1078
1079                                       CALL_DEF_VIEW *aview,
1080                                       int wait
1081
1082                                       );
1083
1084 int EXPORT call_togl_inquiretexture (
1085
1086
1087                                      );
1088
1089 int EXPORT call_togl_inquirelight (
1090
1091
1092                                    );
1093
1094 int EXPORT call_togl_inquireplane (
1095
1096
1097                                    );
1098
1099 int EXPORT call_togl_inquireview (
1100
1101
1102                                   );
1103
1104 int EXPORT call_togl_inquiremat (
1105
1106                                  CALL_DEF_VIEW *aview,
1107                                  CALL_DEF_MATRIX4X4 ori_matrix,
1108                                  CALL_DEF_MATRIX4X4 map_matrix
1109
1110                                  );
1111
1112 void EXPORT call_togl_view_exploration (
1113
1114                                         long Id
1115
1116                                         );
1117
1118 #ifdef OCC1188
1119 int EXPORT call_togl_create_texture (
1120
1121                                      int Type,
1122                                      unsigned int Width,
1123                                      unsigned int Height,
1124                                      unsigned char *Data,
1125                                      char *FileName             
1126
1127                                      );
1128
1129 void EXPORT call_togl_create_bg_texture (
1130
1131   CALL_DEF_VIEW *aview,
1132   int width,
1133   int height,
1134   unsigned char *data,
1135   int style
1136
1137   );
1138 #endif /* OCC1188 */
1139
1140 void EXPORT call_togl_set_bg_texture_style( 
1141
1142   CALL_DEF_VIEW* aview,
1143   int style
1144
1145   );
1146
1147 void EXPORT call_togl_destroy_texture (
1148
1149                                        int TexId
1150
1151                                        );
1152
1153 void EXPORT call_togl_modify_texture (
1154
1155                                       int TexId,
1156                                       CALL_DEF_INIT_TEXTURE *init_tex
1157
1158                                       );
1159
1160 void EXPORT call_togl_environment (
1161
1162                                    CALL_DEF_VIEW *aview
1163
1164                                    );           
1165
1166 /* Declarations des subroutines layer mode */
1167
1168 void EXPORT call_togl_layer2d (
1169
1170                                CALL_DEF_LAYER *alayer
1171
1172                                );
1173
1174 void EXPORT call_togl_removelayer2d (
1175
1176                                      CALL_DEF_LAYER *alayer
1177
1178                                      );
1179
1180 void EXPORT call_togl_begin_layer2d (
1181
1182                                      CALL_DEF_LAYER *alayer
1183
1184                                      );
1185
1186 void EXPORT call_togl_end_layer2d (
1187                                    );
1188
1189 void EXPORT call_togl_clear_layer2d (
1190
1191                                      CALL_DEF_LAYER *alayer
1192
1193                                      );
1194
1195 void EXPORT call_togl_begin_polyline2d (
1196                                         );
1197
1198 void EXPORT call_togl_end_polyline2d (
1199                                       );
1200
1201 void EXPORT call_togl_begin_polygon2d (
1202                                        );
1203
1204 void EXPORT call_togl_end_polygon2d (
1205                                      );
1206
1207 void EXPORT call_togl_move2d (
1208
1209                               float x,
1210                               float y
1211
1212                               );
1213
1214 void EXPORT call_togl_draw2d (
1215
1216                               float x,
1217                               float y
1218
1219                               );
1220
1221 void EXPORT call_togl_edge2d (
1222
1223                               float x,
1224                               float y
1225
1226                               );
1227
1228 void EXPORT call_togl_rectangle2d (
1229
1230                                    float x,
1231                                    float y,
1232                                    float w,
1233                                    float h
1234
1235                                    );
1236
1237 void EXPORT call_togl_set_color (
1238
1239                                  float r,
1240                                  float g,
1241                                  float b
1242
1243                                  );
1244
1245 void EXPORT call_togl_set_transparency (
1246
1247                                         float a
1248
1249                                         );
1250
1251 void EXPORT call_togl_unset_transparency (  );
1252
1253 void EXPORT call_togl_set_line_attributes (
1254
1255                                            long type,
1256                                            float width
1257
1258                                            );
1259
1260 void EXPORT call_togl_set_text_attributes (
1261
1262                                            Tchar* font,
1263                                            long type,
1264                                            float r,
1265                                            float g,
1266                                            float b
1267
1268                                            );
1269
1270 void EXPORT call_togl_set_text_attributes (
1271
1272                                            Tchar* font,
1273                                            Tint height,
1274                                            OSD_FontAspect type,
1275                                            float r,
1276                                            float g,
1277                                            float b
1278
1279                                            );
1280
1281 void EXPORT call_togl_set_text_scale_factors (
1282
1283                                               Tfloat x,
1284                                               Tfloat y
1285
1286                                               );
1287
1288 void EXPORT call_togl_text2d (
1289
1290                               Techar *s,
1291                               float x,
1292                               float y,
1293                               float height
1294
1295                               );
1296
1297 void EXPORT call_togl_textsize2d (
1298
1299                                   Techar *s,
1300                                   float height,
1301                                   float *width,
1302                                   float *ascent,
1303                                   float *descent
1304
1305                                   );
1306
1307 void EXPORT call_togl_backfacing (
1308
1309                                   CALL_DEF_VIEW*
1310
1311                                   );
1312
1313 /* *** group of parray functions *** */
1314
1315 void EXPORT call_togl_parray (
1316
1317                               CALL_DEF_GROUP *agroup,
1318                               CALL_DEF_PARRAY* parray
1319
1320                               );
1321
1322 void EXPORT call_togl_parray_remove (
1323
1324                                     CALL_DEF_GROUP *agroup,
1325                                     CALL_DEF_PARRAY* parray
1326
1327                                     );
1328
1329 void EXPORT call_togl_userdraw (
1330
1331                                 CALL_DEF_GROUP    *agroup,
1332                                 CALL_DEF_USERDRAW *anobject
1333
1334                                 );
1335
1336 /* ------------------------- */
1337 void EXPORT call_togl_print (
1338
1339                              CALL_DEF_VIEW *aview,
1340                              CALL_DEF_LAYER *anunderlayer,
1341                              CALL_DEF_LAYER *anoverlayer,
1342                              const Aspect_Drawable hPrintDC,
1343                              const int background,
1344                              const char* filename
1345
1346                              );
1347
1348
1349 #ifdef BUC61044
1350 void EXPORT call_togl_depthtest (
1351
1352                                  CALL_DEF_VIEW *aview,
1353                                  int            dFlag
1354
1355                                  );
1356
1357 int EXPORT call_togl_isdepthtest (
1358
1359                                   CALL_DEF_VIEW *aview
1360
1361                                   );
1362 #endif
1363
1364 #ifdef BUC61045
1365 void EXPORT call_togl_gllight (
1366
1367                                CALL_DEF_VIEW *aview,
1368                                int            dFlag
1369
1370                                );
1371
1372 int EXPORT call_togl_isgllight (
1373
1374                                 CALL_DEF_VIEW *aview
1375
1376                                 );
1377 #endif
1378
1379 /*----------------------------------------------------------------------*/
1380
1381 #endif