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