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