ded602a1f01e5593ab86cad7a106a9bf3d92a787
[occt.git] / src / Graphic3d / Graphic3d_GraphicDriver.cdl
1 -- Created on: 1997-01-28
2 -- Created by: CAL
3 -- Copyright (c) 1997-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 deferred class GraphicDriver from Graphic3d inherits TShared
18
19     ---Version:
20
21     ---Purpose: This class allows the definition of a graphic driver
22     --      (currently only OpenGl driver is used).
23
24     ---Keywords: OpenGl
25
26     ---Warning:
27     ---References:
28
29 uses
30
31     SharedLibrary       from OSD,
32
33     Array1OfInteger     from TColStd,
34     Array1OfReal        from TColStd,
35     Array2OfReal        from TColStd,
36
37     AsciiString         from TCollection,
38     ExtendedString      from TCollection,
39
40     NameOfColor         from Quantity,
41     Color               from Quantity,
42
43     PlaneAngle          from Quantity,
44
45     PixMap              from Image,
46
47     Array1OfEdge        from Aspect,
48     CLayer2d            from Aspect,
49     TypeOfTriedronEcho  from Aspect,
50     TypeOfTriedronPosition  from Aspect,
51     Handle              from Aspect,
52     Display             from Aspect,
53     PrintAlgo           from Aspect,
54     DisplayConnection_Handle from Aspect,
55
56     AspectLine3d        from Graphic3d,
57     AspectMarker3d      from Graphic3d,
58     AspectText3d        from Graphic3d,
59     AspectFillArea3d    from Graphic3d,
60     HorizontalTextAlignment from Graphic3d,
61     CBitFields20        from Graphic3d,
62     CGroup              from Graphic3d,
63     CLight              from Graphic3d,
64     CPick               from Graphic3d,
65     CPlane              from Graphic3d,
66     CStructure          from Graphic3d,
67     CView               from Graphic3d,
68     BufferType          from Graphic3d,
69     Structure           from Graphic3d,
70     TextPath            from Graphic3d,
71     TypeOfComposition   from Graphic3d,
72     TypeOfPrimitive     from Graphic3d,
73     Vector              from Graphic3d,
74     Array1OfVertex      from Graphic3d,
75     Array2OfVertex      from Graphic3d,
76     Vertex              from Graphic3d,
77     VerticalTextAlignment   from Graphic3d,
78     PrimitiveArray      from Graphic3d,
79     PtrFrameBuffer      from Graphic3d,
80     HArray1OfByte       from TColStd,
81     FillMethod          from Aspect,
82     GradientFillMethod  from Aspect,
83     ExportFormat        from Graphic3d,
84     SortType            from Graphic3d,
85     HArray1OfReal       from TColStd,
86     CUserDraw           from Graphic3d,
87     NListOfHAsciiString from Graphic3d,
88     FontAspect          from Font,
89     CGraduatedTrihedron from Graphic3d,
90     ClipPlane           from Graphic3d,
91     Ax2                 from gp
92
93 raises
94
95     TransformError      from Graphic3d
96
97 is
98         Initialize ( AShrName       : CString from Standard )
99                 returns mutable GraphicDriver from Graphic3d;
100         ---Level: Public
101         ---Purpose: Initialises the Driver
102
103     -------------------------
104     -- Category: Init methods
105     -------------------------
106
107     Begin (me: mutable;
108            theDisplayConnection: DisplayConnection_Handle from Aspect)
109        returns Boolean from Standard
110        is deferred;
111     ---Purpose: Starts graphic driver with given connection
112
113     End ( me    : mutable )
114         is deferred;
115     ---Purpose: call_togl_end
116
117     ----------------------------
118     -- Category: Inquire methods
119     ----------------------------
120
121     InquireLightLimit ( me  : mutable )
122         returns Integer from Standard
123         is deferred;
124     ---Purpose: call_togl_inquirelight
125
126     InquirePlaneLimit ( me  : mutable )
127         returns Integer from Standard
128         is deferred;
129     ---Purpose: call_togl_inquireplane
130
131     InquireViewLimit ( me   : mutable )
132         returns Integer from Standard
133         is deferred;
134     ---Purpose: call_togl_inquireview
135
136     ------------------------------
137     -- Category: Highlight methods
138     ------------------------------
139
140     Blink ( me          : mutable;
141             ACStructure : CStructure from Graphic3d;
142             Create      : Boolean from Standard )
143         is deferred;
144     ---Purpose: call_togl_blink
145
146     BoundaryBox ( me            : mutable;
147                   ACStructure   : CStructure from Graphic3d;
148                   Create        : Boolean from Standard )
149         is deferred;
150     ---Purpose: call_togl_boundarybox
151
152     HighlightColor ( me             : mutable;
153                      ACStructure    : CStructure from Graphic3d;
154                      R              : ShortReal from Standard;
155                      G              : ShortReal from Standard;
156                      B              : ShortReal from Standard;
157                      Create         : Boolean from Standard )
158         is deferred;
159     ---Purpose: call_togl_highlightcolor
160
161     NameSetStructure ( me       : mutable;
162                ACStructure  : CStructure from Graphic3d )
163         is deferred;
164     ---Purpose: call_togl_namesetstructure
165
166     -------------------------------------
167     -- Category: Group management methods
168     -------------------------------------
169
170     ClearGroup ( me     : mutable;
171              ACGroup    : CGroup from Graphic3d )
172         is deferred;
173     ---Purpose: call_togl_cleargroup
174
175     FaceContextGroup ( me       : mutable;
176                        ACGroup  : CGroup from Graphic3d;
177                        NoInsert : Integer from Standard )
178         is deferred;
179     ---Purpose: call_togl_facecontextgroup
180
181     Group ( me  : mutable;
182         ACGroup : in out CGroup from Graphic3d )
183         is deferred;
184     ---Purpose: call_togl_group
185
186     LineContextGroup ( me       : mutable;
187                        ACGroup  : CGroup from Graphic3d;
188                        NoInsert : Integer from Standard )
189         is deferred;
190     ---Purpose: call_togl_linecontextgroup
191
192     MarkerContextGroup ( me         : mutable;
193                          ACGroup    : CGroup from Graphic3d;
194                          NoInsert   : Integer from Standard )
195         is deferred;
196     ---Purpose: call_togl_markercontextgroup
197
198     RemoveGroup ( me        : mutable;
199                   ACGroup   : CGroup from Graphic3d )
200         is deferred;
201     ---Purpose: call_togl_removegroup
202
203     TextContextGroup ( me       : mutable;
204                        ACGroup  : CGroup from Graphic3d;
205                        NoInsert : Integer from Standard )
206         is deferred;
207     ---Purpose: call_togl_textcontextgroup
208
209     -----------------------------------------
210     -- Category: Structure management methods
211     -----------------------------------------
212
213     ClearStructure ( me             : mutable;
214                      ACStructure    : CStructure from Graphic3d )
215         is deferred;
216     ---Purpose: call_togl_clearstructure
217
218     Connect ( me        : mutable;
219               AFather   : CStructure from Graphic3d;
220               ASon      : CStructure from Graphic3d )
221         is deferred;
222     ---Purpose: call_togl_connect
223
224     ContextStructure ( me           : mutable;
225                        ACStructure  : CStructure from Graphic3d )
226         is deferred;
227     ---Purpose: call_togl_contextstructure
228
229     Disconnect ( me         : mutable;
230                  AFather    : CStructure from Graphic3d;
231                  ASon       : CStructure from Graphic3d )
232         is deferred;
233     ---Purpose: call_togl_disconnect
234
235     DisplayStructure ( me           : mutable;
236                        ACView       : CView from Graphic3d;
237                        ACStructure  : CStructure from Graphic3d;
238                        APriority    : Integer from Standard )
239         is deferred;
240     ---Purpose: call_togl_displaystructure
241
242     EraseStructure ( me             : mutable;
243                      ACView         : CView from Graphic3d;
244                      ACStructure    : CStructure from Graphic3d )
245         is deferred;
246     ---Purpose: call_togl_erasestructure
247
248     RemoveStructure ( me            : mutable;
249                       ACStructure   : CStructure from Graphic3d )
250         is deferred;
251     ---Purpose: call_togl_removestructure
252
253     Structure ( me          : mutable;
254                 ACStructure : in out CStructure from Graphic3d )
255         is deferred;
256     ---Purpose: call_togl_structure
257
258     ------------------------------------
259     -- Category: Structured mode methods
260     ------------------------------------
261
262     ActivateView ( me       : mutable;
263                    ACView   : CView from Graphic3d )
264         is deferred;
265     ---Purpose: call_togl_activateview
266
267     AntiAliasing ( me       : mutable;
268                    ACView   : CView from Graphic3d;
269                    AFlag    : Boolean from Standard )
270         is deferred;
271     ---Purpose: call_togl_antialiasing
272
273     Background ( me     : mutable;
274                  ACView : CView from Graphic3d )
275         is deferred;
276     ---Purpose: call_togl_background
277
278     GradientBackground ( me     : mutable;
279                          ACView : CView from Graphic3d;
280                          AColor1: Color from Quantity;
281                          AColor2: Color from Quantity;
282                          FillStyle : GradientFillMethod from Aspect
283                        )
284     is deferred;
285     ---Purpose: call_togl_gradient_background
286
287
288     BackgroundImage( me           : mutable;
289                      FileName     : CString from Standard;
290                      ACView       : CView from Graphic3d;
291                      FillStyle    : FillMethod from Aspect )
292     is deferred;
293
294     SetBgImageStyle( me        : mutable;
295                      ACView    : CView from Graphic3d;
296                      FillStyle : FillMethod from Aspect )
297     is deferred;
298
299     SetBgGradientStyle( me        : mutable;
300                         ACView    : CView from Graphic3d;
301                         FillStyle : GradientFillMethod from Aspect )
302     is deferred;
303
304     ClipLimit ( me      : mutable;
305                 ACView  : CView from Graphic3d;
306                 AWait   : Boolean from Standard )
307         is deferred;
308     ---Purpose: call_togl_cliplimit
309
310     DeactivateView ( me     : mutable;
311                      ACView : CView from Graphic3d )
312         is deferred;
313     ---Purpose: call_togl_deactivateview
314
315     DepthCueing ( me        : mutable;
316                   ACView    : CView from Graphic3d;
317                   AFlag     : Boolean from Standard )
318         is deferred;
319     ---Purpose: call_togl_cliplimit
320
321     RatioWindow ( me        : mutable;
322                   ACView    : CView from Graphic3d )
323         is deferred;
324     ---Purpose: call_togl_ratio_window
325
326     Redraw ( me             : mutable;
327              ACView         : CView from Graphic3d;
328              ACUnderLayer   : CLayer2d from Aspect;
329              ACOverLayer    : CLayer2d from Aspect;
330              x              : Integer = 0;
331              y              : Integer = 0;
332              width              : Integer = 0;
333              height     : Integer = 0 )
334         is deferred;
335     ---Purpose: call_togl_redraw
336     --  Warning: when the redraw area has a null size, the full view is redrawn
337
338     RemoveView ( me     : mutable;
339                 ACView  : CView from Graphic3d )
340         is deferred;
341     ---Purpose: call_togl_removeview
342
343     SetLight ( me       : mutable;
344            ACView   : CView from Graphic3d )
345         is deferred;
346     ---Purpose: call_togl_setlight
347
348     SetClipPlanes (me : mutable; theCView : CView from Graphic3d) is deferred;
349     ---Purpose: Pass clip planes to the associated graphic driver view.
350
351     SetClipPlanes (me : mutable; theCStructure : CStructure from Graphic3d) is deferred;
352     ---Purpose: Pass clip planes to the associated graphic driver structure.
353
354     SetCamera (me : mutable; theCView : CView from Graphic3d)
355          is deferred;
356     ---Purpose: Inform graphic driver if camera assigned to view changes.
357
358     SetVisualisation ( me       : mutable;
359                        ACView   : CView from Graphic3d )
360         is deferred;
361     ---Purpose: call_togl_setvisualisation
362
363     TransformStructure ( me             : mutable;
364                          ACStructure    : CStructure from Graphic3d )
365         is deferred;
366     ---Purpose: call_togl_transformstructure
367
368     Transparency ( me       : mutable;
369                    ACView   : CView from Graphic3d;
370                    AFlag    : Boolean from Standard )
371         is deferred;
372     ---Purpose: call_togl_transparency
373
374     Update ( me             : mutable;
375              ACView         : CView from Graphic3d;
376              ACUnderLayer   : CLayer2d from Aspect;
377              ACOverLayer    : CLayer2d from Aspect )
378             is deferred;
379     ---Purpose: call_togl_update
380
381     View ( me   : mutable;
382            ACView   : in out CView from Graphic3d )
383         returns Boolean from Standard
384         is deferred;
385     ---Purpose: call_togl_view
386
387         Environment ( me        : mutable;
388                       ACView    : CView from Graphic3d )
389         is deferred;
390     ---Purpose:
391
392     SetStencilTestOptions ( me          : mutable;
393                             theCGroup   : CGroup from Graphic3d;
394                             theIsEnabled: Boolean from Standard)
395     is deferred;
396     ---Purpose: sets the stencil test to theIsEnabled state;
397     
398     SetFlippingOptions (me          : mutable;
399                         theCGroup   : CGroup from Graphic3d;
400                         theIsEnabled: Boolean from Standard;
401                         theRefPlane : Ax2 from gp)
402     is deferred;
403     ---Purpose: sets the flipping to theIsEnabled state for the given graphic group.
404
405     ----------------------------------------
406     -- Category: Methods to create Text
407     -- for Purpose : see Graphic3d_Group.cdl
408     ----------------------------------------
409
410     Text ( me   : mutable;
411            ACGroup  : CGroup from Graphic3d;
412            AText    : CString from Standard;
413            APoint   : Vertex from Graphic3d;
414            AHeight  : Real from Standard;
415            AAngle   : PlaneAngle from Quantity;
416            ATp  : TextPath from Graphic3d;
417            AHta : HorizontalTextAlignment from Graphic3d;
418            AVta : VerticalTextAlignment from Graphic3d;
419            EvalMinMax   : Boolean from Standard = Standard_True )
420         is deferred;
421     ---Purpose: call_togl_text
422
423     Text ( me   : mutable;
424            ACGroup  : CGroup from Graphic3d;
425            AText    : CString from Standard;
426            APoint   : Vertex from Graphic3d;
427            AHeight  : Real from Standard;
428            EvalMinMax   : Boolean from Standard = Standard_True )
429         is deferred;
430     ---Purpose: call_togl_text
431
432     Text ( me   : mutable;
433            ACGroup  : CGroup from Graphic3d;
434            AText    : ExtendedString from TCollection;
435            APoint   : Vertex from Graphic3d;
436            AHeight  : Real from Standard;
437            AAngle   : PlaneAngle from Quantity;
438            ATp  : TextPath from Graphic3d;
439            AHta : HorizontalTextAlignment from Graphic3d;
440            AVta : VerticalTextAlignment from Graphic3d;
441            EvalMinMax   : Boolean from Standard = Standard_True )
442         is deferred;
443     ---Purpose: call_togl_text
444
445     Text ( me   : mutable;
446            ACGroup  : CGroup from Graphic3d;
447            AText    : ExtendedString from TCollection;
448            APoint   : Vertex from Graphic3d;
449            AHeight  : Real from Standard;
450            EvalMinMax   : Boolean from Standard = Standard_True )
451         is deferred;
452     ---Purpose: call_togl_text
453
454     ----------------------------------------
455     ---Category: Methods to create Triangle
456     -- for Purpose : see Graphic3d_Group.cdl
457     ----------------------------------------
458
459     PrimitiveArray( me          : mutable;
460                     ACGroup     : CGroup from Graphic3d;
461                     parray      : PrimitiveArray from Graphic3d;
462                     EvalMinMax  : Boolean from Standard = Standard_True )
463         is deferred;
464         ---Purpose: call_togl_parray
465
466     UserDraw( me          : mutable;
467               ACGroup     : CGroup from Graphic3d;
468               AUserDraw   : CUserDraw from Graphic3d )
469         is deferred;
470         ---Purpose: call_togl_userdraw
471
472     EnableVBO( me       : mutable;
473                status   : Boolean from Standard )
474                is deferred;
475     ---Purpose: enables/disables usage of OpenGL vertex buffer arrays while drawing primitiev arrays
476
477     MemoryInfo (me;
478                 theFreeBytes : out Size from Standard;
479                 theInfo      : out AsciiString from TCollection) returns Boolean from Standard is deferred;
480     ---Purpose: Returns information about GPU memory usage.
481
482     ----------------------------------------
483     ---Category: Methods to create Triedron
484     -- for Purpose : see Graphic3d_Group.cdl
485     ----------------------------------------
486
487     ZBufferTriedronSetup ( me          : mutable;
488                            XColor      : NameOfColor from Quantity = Quantity_NOC_RED;
489                            YColor      : NameOfColor from Quantity = Quantity_NOC_GREEN;
490                            ZColor      : NameOfColor from Quantity = Quantity_NOC_BLUE1;
491                            SizeRatio   : Real from Standard = 0.8;
492                            AxisDiametr : Real from Standard = 0.05;
493                            NbFacettes  : Integer from Standard = 12)
494          is deferred;
495         ---Purpose: call_togl_ztriedron_setup
496
497     TriedronDisplay ( me            : mutable;
498                       ACView        : CView from Graphic3d;
499                       APosition     : TypeOfTriedronPosition from Aspect  = Aspect_TOTP_CENTER;
500                       AColor        : NameOfColor from Quantity = Quantity_NOC_WHITE ;
501                       AScale        : Real from Standard  =  0.02;
502                       AsWireframe   : Boolean from Standard = Standard_True )
503         is deferred;
504     ---Purpose: call_togl_triedron_display
505
506
507     TriedronErase ( me      : mutable;
508                   ACView    : CView from Graphic3d)
509         is deferred;
510     ---Purpose: call_togl_triedron_erase
511
512
513     TriedronEcho ( me       : mutable;
514                    ACView   : CView from Graphic3d;
515                    AType    : TypeOfTriedronEcho from Aspect  = Aspect_TOTE_NONE )
516         is deferred;
517     ---Purpose: call_togl_triedron_echo
518
519     ---------------------------------
520     ---Category: Graduated  trihedron
521     ---------------------------------
522
523     GraduatedTrihedronDisplay(me : mutable;
524                               view : CView from Graphic3d;
525                               cubic : CGraduatedTrihedron from Graphic3d)
526     ---Purpose: call_togl_graduatedtrihedron_display
527     is deferred;
528
529     GraduatedTrihedronErase(me : mutable;
530                             view : CView from Graphic3d)
531     ---Purpose: call_togl_graduatedtrihedron_erase
532     is deferred;
533
534     GraduatedTrihedronMinMaxValues(me : mutable;
535                                    xmin : ShortReal from Standard;
536                                    ymin : ShortReal from Standard;
537                                    zmin : ShortReal from Standard;
538                                    xmax : ShortReal from Standard;
539                                    ymax : ShortReal from Standard;
540                                    zmax : ShortReal from Standard)
541     ---Purpose: call_togl_graduatedtrihedron_minmaxvalues
542     is deferred;
543
544     ----------------------------------
545     -- Category: Ajout mode methods
546     ----------------------------------
547
548     BeginAddMode ( me   : mutable;
549                 ACView      : CView from Graphic3d)
550         returns Boolean from Standard
551         is deferred;
552     ---Purpose: call_togl_begin_ajout_mode
553
554     EndAddMode ( me     : mutable)
555         is deferred;
556     ---Purpose: call_togl_end_ajout_mode
557
558     ----------------------------------
559     -- Category: Immediat mode methods
560     ----------------------------------
561
562     SetImmediateModeDrawToFront (me                   : mutable;
563                                  theCView             : CView from Graphic3d;
564                                  theDrawToFrontBuffer : Boolean from Standard)
565     returns Boolean from Standard
566     is deferred;
567     ---Purpose: @param theDrawToFrontBuffer Advanced option to modify rendering mode:
568     -- 1. TRUE.  Drawing immediate mode structures directly to the front buffer over the scene image.
569     --    Fast, so preferred for interactive work (used by default).
570     --    However these extra drawings will be missed in image dump since it is performed from back buffer.
571     --    Notice that since no pre-buffering used the V-Sync will be ignored and rendering could be seen
572     --    in run-time (in case of slow hardware) and/or tearing may appear.
573     --    So this is strongly recommended to draw only simple (fast) structures.
574     -- 2. FALSE. Drawing immediate mode structures to the back buffer.
575     --    The complete scene is redrawn first, so this mode is slower if scene contains complex data and/or V-Sync is turned on.
576     --    But it works in any case and is especially useful for view dump because the dump image is read from the back buffer.
577     -- @return previous mode.
578
579     BeginImmediatMode ( me              : mutable;
580                         ACView          : CView from Graphic3d;
581                         ACUnderLayer    : CLayer2d from Aspect;
582                         ACOverLayer     : CLayer2d from Aspect;
583                         DoubleBuffer    : Boolean from Standard;
584                         RetainMode      : Boolean from Standard)
585         returns Boolean from Standard
586         is deferred;
587     ---Purpose: call_togl_begin_immediat_mode
588
589     ClearImmediatMode ( me  : mutable; ACView       : CView from Graphic3d;
590                   aFlush        : Boolean from Standard = Standard_True)
591         is deferred;
592     ---Purpose: call_togl_clear_immediat_mode
593
594     DrawStructure ( me          : mutable;
595                     ACStructure : CStructure from Graphic3d )
596         is deferred;
597     ---Purpose: call_togl_draw_structure
598
599     EndImmediatMode ( me            : mutable;
600                       Synchronize   : Integer from Standard )
601         is deferred;
602     ---Purpose: call_togl_end_immediat_mode
603
604     -------------------------------
605     -- Category: Layer mode methods
606     -------------------------------
607
608     Layer ( me      : mutable;
609             ACLayer : in out CLayer2d from Aspect )
610         is deferred;
611     ---Purpose: call_togl_layer2d
612
613     RemoveLayer ( me        : mutable;
614                   ACLayer   : CLayer2d from Aspect )
615         is deferred;
616     ---Purpose: call_togl_removelayer2d
617
618     BeginLayer ( me         : mutable;
619                  ACLayer    : CLayer2d from Aspect )
620         is deferred;
621     ---Purpose: call_togl_begin_layer2d
622
623     BeginPolygon2d ( me : mutable )
624         is deferred;
625     ---Purpose: call_togl_begin_polygon2d
626
627     BeginPolyline2d ( me    : mutable )
628         is deferred;
629     ---Purpose: call_togl_begin_polyline2d
630
631     ClearLayer ( me         : mutable;
632                  ACLayer    : CLayer2d from Aspect )
633         is deferred;
634     ---Purpose: call_togl_clear_layer2d
635
636     Draw ( me   : mutable;
637            X    : ShortReal from Standard;
638            Y    : ShortReal from Standard )
639         is deferred;
640     ---Purpose: call_togl_draw2d
641
642     Edge ( me   : mutable;
643            X    : ShortReal from Standard;
644            Y    : ShortReal from Standard )
645         is deferred;
646     ---Purpose: call_togl_edge2d
647
648     EndLayer ( me       : mutable )
649         is deferred;
650     ---Purpose: call_togl_end_layer2d
651
652     EndPolygon2d ( me   : mutable )
653         is deferred;
654     ---Purpose: call_togl_end_polygon2d
655
656     EndPolyline2d ( me  : mutable )
657         is deferred;
658     ---Purpose: call_togl_end_polyline2d
659
660     Move ( me   : mutable;
661            X    : ShortReal from Standard;
662            Y    : ShortReal from Standard )
663         is deferred;
664     ---Purpose: call_togl_move2d
665
666     Rectangle ( me              : mutable;
667                 X, Y            : ShortReal from Standard;
668                 Width, Height   : ShortReal from Standard )
669         is deferred;
670     ---Purpose: call_togl_rectangle2d
671
672     SetColor ( me   : mutable;
673                R    : ShortReal from Standard;
674                G    : ShortReal from Standard;
675                B    : ShortReal from Standard )
676         is deferred;
677     ---Purpose: call_togl_set_color
678
679     SetTransparency ( me    : mutable;
680            ATransparency    : ShortReal from Standard )
681         is deferred;
682     ---Purpose: call_togl_set_transparency
683
684     UnsetTransparency ( me  : mutable )
685         is deferred;
686     ---Purpose: call_togl_unset_transparency
687
688     SetLineAttributes ( me      : mutable;
689                         Type    : Integer from Standard;
690                         Width   : ShortReal from Standard )
691         is deferred;
692     ---Purpose: call_togl_set_line_attributes
693
694
695     SetTextAttributes ( me      : mutable;
696                         Font    : CString from Standard;
697                         Type    : Integer from Standard;
698                         R       : ShortReal from Standard;
699                         G       : ShortReal from Standard;
700                         B       : ShortReal from Standard )
701         is deferred;
702     ---Purpose: Set text attributes for under-/overlayer.
703     -- <Font> argument defines the name of the font to be used,
704     -- <Type> argument defines the display type of the text,
705     -- <R> <G> <B> values define the color of decal or subtitle background.
706     -- To set the color of the text you can use the SetColor method.
707
708     Text ( me       : mutable;
709            AText    : CString from Standard;
710            X, Y     : ShortReal from Standard;
711            AHeight  : ShortReal from Standard )
712         is deferred;
713     ---Purpose: call_togl_text2d
714     -- If AHeight < 0 default text height is used by driver (DefaultTextHeight method)
715
716     DefaultTextHeight( me )
717         returns ShortReal from Standard
718         is deferred;
719
720
721     TextSize( me;
722               AText    : CString from Standard;
723               AHeight  : ShortReal from Standard;
724               AWidth   : in out ShortReal from Standard;
725               AnAscent : in out ShortReal from Standard;
726               ADescent : in out ShortReal from Standard )
727             is deferred;
728     ---Purpose: call_togl_textsize2d
729
730         SetBackFacingModel ( me    : mutable;
731                              aView : CView from Graphic3d )
732             is deferred;
733         ---Purpose: call_togl_backfacing
734
735         SetDepthTestEnabled( me; view : CView from Graphic3d;
736                                  isEnabled : Boolean from Standard )
737     is deferred;
738     ---Purpose: call_togl_depthtest
739
740         IsDepthTestEnabled( me; view : CView from Graphic3d )
741     returns Boolean from Standard is deferred;
742     ---Purpose: call_togl_isdepthtest
743
744         ReadDepths( me;
745                     view          : CView from Graphic3d;
746                     x, y          : Integer;
747                     width, height : Integer;
748                     buffer        : Address )
749     is deferred;
750     ---Purpose: Reads depths of shown pixels of the given
751     --          rectangle (glReadPixels with GL_DEPTH_COMPONENT)
752
753         FBOCreate( me            : mutable;
754                    view          : CView from Graphic3d;
755                    width, height : Integer from Standard )
756                   returns PtrFrameBuffer from Graphic3d
757     is deferred;
758     ---Purpose: Generate offscreen FBO in the graphic library.
759     --          If not supported on hardware returns NULL.
760
761         FBORelease( me            : mutable;
762                     view          : CView from Graphic3d;
763                     fboPtr        : in out PtrFrameBuffer from Graphic3d )
764     is deferred;
765     ---Purpose: Remove offscreen FBO from the graphic library
766
767         FBOGetDimensions( me                  : mutable;
768                           view                : CView from Graphic3d;
769                           fboPtr              : PtrFrameBuffer from Graphic3d;
770                           width, height       : out Integer from Standard;
771                           widthMax, heightMax : out Integer from Standard )
772     is deferred;
773     ---Purpose: Read offscreen FBO configuration.
774
775         FBOChangeViewport( me                  : mutable;
776                            view                : CView from Graphic3d;
777                            fboPtr              : in out PtrFrameBuffer from Graphic3d;
778                            width, height       : Integer from Standard )
779     is deferred;
780     ---Purpose: Change offscreen FBO viewport.
781
782         BufferDump( me            : mutable;
783                     theCView      : CView from Graphic3d;
784                     theImage      : in out PixMap from Image;
785                     theBufferType : BufferType from Graphic3d )
786                    returns Boolean from Standard
787     is deferred;
788     ---Purpose: Dump active rendering buffer into specified memory buffer.
789
790         SetGLLightEnabled( me; view : CView from Graphic3d;
791                                isEnabled : Boolean from Standard )
792     is deferred;
793     ---Purpose: call_togl_gllight
794
795         IsGLLightEnabled( me; view : CView from Graphic3d )
796     returns Boolean from Standard is deferred;
797     ---Purpose: call_togl_isgllight
798
799     Print (me;
800            ACView          : CView from Graphic3d;
801            ACUnderLayer    : CLayer2d from Aspect;
802            ACOverLayer     : CLayer2d from Aspect;
803            hPrnDC          : Handle from Aspect;
804            showBackground  : Boolean;
805            filename        : CString;
806            printAlgorithm  : PrintAlgo from Aspect = Aspect_PA_STRETCH;
807            theScaleFactor  : Real from Standard = 1.0 )
808         returns Boolean from Standard is deferred;
809       ---Level: Internal
810       ---Purpose: print the contents of all layers of the view to the printer.
811     -- <hPrnDC> : Pass the PrinterDeviceContext (HDC),
812     -- <showBackground> : When set to FALSE then print the view without background color
813     -- (background is white)
814       -- else set to TRUE for printing with current background color.
815     -- <filename>: If != NULL, then the view will be printed to a file.
816     -- <printAlgorithm>: Select print algorithm: stretch, tile.   
817     -- <theScaleFactor>: Scaling coefficient, used internally to scale the
818     -- printings accordingly to the scale factor selected in the printer 
819     -- properties dialog.
820     -- Returns Standard_True if the data is passed to the printer, otherwise
821     -- Standard_False if the print operation failed due to the printer errors, 
822     -- or insufficient system memory available.
823     ---Warning: Works only under Windows.
824
825         Export( me: mutable;
826                 theFileName         : CString from Standard;
827                 theFormat           : ExportFormat from Graphic3d;
828                 theSortType         : SortType from Graphic3d;
829                 theWidth, theHeight : Integer from Standard;
830                 theView             : CView from Graphic3d;
831                 theLayerUnder       : CLayer2d from Aspect;
832                 theLayerOver        : CLayer2d from Aspect;
833                 thePrecision        : Real from Standard = 0.005;
834                 theProgressBarFunc  : Address from Standard = NULL;
835                 theProgressObject   : Address from Standard = NULL )
836         returns Boolean from Standard
837         is deferred;
838     ---Purpose:
839     -- Export scene into the one of the Vector graphics formats (SVG, PS, PDF...).
840     -- In contrast to Bitmaps, Vector graphics is scalable (so you may got quality benefits on printing to laser printer).
841     -- Notice however that results may differ a lot and do not contain some elements.
842
843     AddZLayer( me         : mutable;
844                theCView   : CView from Graphic3d;
845                theLayerId : Integer from Standard )
846         is deferred;
847         ---Purpose: Add a new top-level z layer with ID <theLayerId> for
848         -- the view. Z layers allow drawing structures in higher layers
849         -- in foreground of structures in lower layers. To add a structure
850         -- to desired layer on display it is necessary to set the layer
851         -- ID for the structure.
852
853     RemoveZLayer( me         : mutable;
854                   theCView   : CView from Graphic3d;
855                   theLayerId : Integer from Standard )
856         is deferred;
857         ---Purpose: Remove Z layer from the specified view. All structures
858         -- displayed at the moment in layer will be displayed in default layer
859         -- ( the bottom-level z layer ). To unset layer ID from associated
860         -- structures use method UnsetZLayer (...).
861
862     UnsetZLayer( me         : mutable;
863                  theLayerId : Integer from Standard ) 
864         is deferred;
865         ---Purpose: Unset Z layer ID for all structures. The structure
866         -- indexes will be set to default layer ( the bottom-level z layer
867         -- with ID = 0 ).
868
869     ChangeZLayer( me            : mutable;
870                   theCStructure : CStructure from Graphic3d;
871                   theLayerId    : Integer from Standard )
872         is deferred;
873         ---Purpose: Change Z layer of a structure. The new z layer ID will
874         -- be used to define the associated layer for structure on display.
875
876     ChangeZLayer( me            : mutable;
877                   theCStructure : CStructure from Graphic3d;
878                   theCView      : CView from Graphic3d;
879                   theNewLayerId : Integer from Standard )
880         is deferred;
881         ---Purpose: Change Z layer of a structure already presented in view.
882
883     GetZLayer( me;
884                theCStructure : CStructure from Graphic3d )
885         returns Integer from Standard is deferred;
886         ---Purpose: Get Z layer ID of structure. If the structure doesn't
887         -- exists in graphic driver, the method returns -1.
888
889     -----------------------------
890     -- Category: Internal methods
891     -----------------------------
892
893     PrintBoolean ( me;
894                    AComment : CString from Standard;
895                    AValue   : Boolean from Standard );
896
897     PrintCGroup ( me;
898                   ACGroup   : CGroup from Graphic3d;
899                   AField    : Integer from Standard );
900
901     PrintCLight ( me;
902                   ACLight   : CLight from Graphic3d;
903                   AField    : Integer from Standard );
904
905     PrintCPick ( me;
906                  ACPick    : CPick from Graphic3d;
907                  AField    : Integer from Standard );
908
909     PrintCStructure ( me;
910                       ACStructure   : CStructure from Graphic3d;
911                       AField    : Integer from Standard );
912
913     PrintCView ( me;
914                  ACView : CView from Graphic3d;
915                  AField : Integer from Standard );
916
917     PrintFunction ( me;
918                     AFunc   : CString from Standard );
919
920     PrintInteger ( me;
921                    AComment  : CString from Standard;
922                    AValue    : Integer from Standard );
923
924     PrintIResult ( me;
925                    AFunc    : CString from Standard;
926                    AResult  : Integer from Standard );
927
928     PrintShortReal ( me;
929                      AComment   : CString from Standard;
930                      AValue     : ShortReal from Standard );
931
932     PrintMatrix ( me;
933                   AComment  : CString from Standard;
934                   AMatrix   : Array2OfReal from TColStd )
935         raises TransformError from Graphic3d;
936
937     PrintString ( me;
938                   AComment  : CString from Standard;
939                   AString   : CString from Standard );
940
941     SetTrace ( me       : mutable;
942                ALevel   : Integer from Standard )
943         is static;
944
945     Trace ( me )
946         returns Integer from Standard
947         is static;
948
949     --ListOfAvalableFontNames( me;
950     --           lst: out NListOfHAsciiString from Graphic3d )
951     --           returns Boolean from Standard
952     --           is deferred;
953     --  Purpose:  Initialize list of names of avalable system fonts
954     --            returns Standard_False if fails
955     --  ABD Integration support of system fonts (using FTGL and FreeType)
956
957     GetDisplayConnection (me)
958        returns DisplayConnection_Handle from Aspect;
959     ---C++: return const &
960
961     ---Purpose: returns Handle to display connection
962
963     IsDeviceLost (me)
964       returns Boolean from Standard;
965     -- Purpose: @return Standard_True in cases when the last view has been removed but some objects still present.
966
967     ResetDeviceLostFlag (me: mutable);
968     -- Purpose: Resets DeviceLostFlag to default (Standard_False) state.
969
970 fields
971
972     MyTraceLevel       : Integer from Standard is protected;
973     MySharedLibrary    : SharedLibrary from OSD is protected;
974     myDisplayConnection: DisplayConnection_Handle from Aspect is protected;
975     myDeviceLostFlag   : Boolean from Standard is protected;
976
977 end GraphicDriver from Graphic3d;