0025026: Visualization, Graphic3d_Plotter - remove unused class
[occt.git] / src / Visual3d / Visual3d_View.cdl
1 -- Created on: 1991-09-17
2 -- Created by: NW,JPB,CAL
3 -- Copyright (c) 1991-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 --              05-97: CAL; Ajout du Clear sur les TOS_COMPUTED.
18 --              10-97: CAL; Retrait des DataStructure.
19 --              11-97: CAL; Retrait de la dependance avec math.Calcul developpe.
20 --              11-97: CAL; Ajout de NumberOfDisplayedStructures
21 --              05-98: CAL; Perfs. Connection entre structures COMPUTED.
22 --              16-09-98: BGN; Points d'entree du Triedre (S3819, Phase 1)
23 --              22-09-98: BGN; S3989 (anciennement S3819)
24 --                             TypeOfTriedron* from Aspect(et pas Visual3d)
25 --              02-12-98: S4062. Ajout des layers.
26 --              13-09-99: GG; GER61454 Adds LightLimit() and PlaneLimit() methods
27 --              10-11-99: GG; Add PRO19603 Redraw( area ) method
28 --              14-01-00: GG; Add IMP140100 ViewManager() method
29 --              THA  - 17/08/00 Thomas HARTL <t-hartl@muenchen.matra-dtv.fr>
30 --                              -> Add Print methods (works only under Windows).-
31 --              GG - RIC120302 Add NEW SetWindow method.
32 --              30-04-02: JMB; MyDisplayedStructure is now a Map instead
33 --                             of a Set. Improves performance of Selection
34 --                             mechanisms
35
36 --              SAV  - 22/10/01 -> Add EnableDepthTest() & IsDepthTestEnabled() methods.
37 --              SAV  - 25/10/01 -> Add EnableGLLight() & IsGLLightEnabled() methods.
38 --              VSV - 28/05/02: ZBUFFER mode of Trihedron
39 --              SAV  - 23/12/02 Added methods too set background image
40
41 class View from Visual3d inherits DataStructureManager from Graphic3d
42
43         ---Version:
44
45         ---Purpose: Creation and edition of a view in a 3D visualiser.
46         --          A 3D view is composed of an "orientation" part defined
47         --          by the position of the observer, the direction of view,
48         --          and a "mapping" part defined by the type of projection
49         --          (parallel or perspective) and by the window-viewport
50         --          couple which allows passage from the projected coordinate
51         --          space into the screen space.
52         -- Summary of 3D Viewing
53         -- To define a view, you must define:
54         -- -   The view orientation transformation
55         -- -   The view mapping transformation
56         -- -   The view representation.
57         --  To activate a view, you must define:
58         -- -   The associated window.
59
60
61 uses
62
63     Array2OfReal            from TColStd,
64
65     Background              from Aspect,
66     GradientBackground      from Aspect,
67     Window                  from Aspect,
68     TypeOfUpdate            from Aspect,
69     TypeOfHighlightMethod   from Aspect,
70     TypeOfTriedronEcho      from Aspect,
71     TypeOfTriedronPosition  from Aspect,
72     Handle                  from Aspect,
73     RenderingContext        from Aspect,
74     GraphicCallbackProc     from Aspect,
75     ColorScale              from Aspect,
76     PrintAlgo               from Aspect,
77
78     BufferType              from Graphic3d,
79     CBitFields8             from Graphic3d,
80     CView                   from Graphic3d,
81     GraphicDriver           from Graphic3d,
82     PtrFrameBuffer          from Graphic3d,
83     Structure               from Graphic3d,
84     SequenceOfStructure     from Graphic3d,
85     MapOfStructure          from Graphic3d,
86     Camera_Handle           from Graphic3d,
87
88     ZLayerSettings          from Graphic3d,
89
90     ContextView             from Visual3d,
91     Layer                   from Visual3d,
92     Light                   from Visual3d,
93     SequenceOfLight         from Visual3d,
94     TypeOfAnswer            from Visual3d,
95     ViewManager             from Visual3d,
96     ViewManagerPtr          from Visual3d,
97
98     TypeOfBackfacingModel   from Visual3d,
99
100     NameOfColor             from Quantity,
101     FillMethod              from Aspect,
102     GradientFillMethod      from Aspect,
103     ExportFormat            from Graphic3d,
104     SortType                from Graphic3d,
105     Color                   from Quantity,
106     FontAspect              from Font,
107     AsciiString             from TCollection,
108     ExtendedString          from TCollection,
109     CGraduatedTrihedron     from Graphic3d,
110
111     PixMap                  from Image
112
113 raises
114     TransformError          from Visual3d,
115     ViewDefinitionError     from Visual3d
116
117 is
118
119         ----------------------------------------------
120         -- Summary of 3D Viewing                    --
121         --                                          --
122         -- To define a view, you must define        --
123         --                                          --
124         --      The view orientation transformation --
125         --      The view mapping transformation     --
126         --      The view representation.            --
127         --                                          --
128         -- To activate a view, you must define      --
129         --                                          --
130         --      The associated window.              --
131         ----------------------------------------------
132
133         Create ( AManager       : ViewManager from Visual3d )
134                 returns View from Visual3d;
135         ---Level: Public
136         ---Purpose: Creates a view in the viewer <AManager> with a default
137         --          orientation and a default mapping.
138
139         ---------------------------------------------------
140         -- Category: Methods to modify the class definition
141         ---------------------------------------------------
142
143         Activate ( me   : mutable )
144         ---Level: Public
145         ---Purpose: Activates the view <me>.
146         --          Map the associated window on the screen and
147         --          post the view in this window.
148         --  Category: Methods to modify the class definition
149         --  Warning: Raises ViewDefinitionError if the associated
150         --          window isn't defined.
151         raises ViewDefinitionError from Visual3d is static;
152
153         Deactivate ( me : mutable )
154         ---Level: Public
155         ---Purpose: Deactivates the view <me>.
156         --          Unmap the associated window on the screen and
157         --          unpost the view in this window.
158         --  Category: Methods to modify the class definition
159         --  Warning: Raises ViewDefinitionError if the associated
160         --          window isn't defined.
161         raises ViewDefinitionError from Visual3d is static;
162
163         Destroy ( me    : mutable )
164                 is redefined;
165         ---Level: Public
166         ---Purpose: Deletes and erases the view <me>.
167         ---Category: Methods to modify the class definition
168         ---C++: alias ~
169
170         Redraw ( me     : mutable )
171                 is static;
172         ---Level: Public
173         ---Purpose: Updates screen in all cases.
174         ---Category: Methods to modify the class definition
175
176   RedrawImmediate ( me : mutable )
177   is static;
178   ---Level: Public
179   ---Purpose: Updates layer of immediate presentations.
180
181         Redraw ( me     : mutable; x,y,width,height: Integer from Standard )
182                 is static;
183         ---Level: Public
184         ---Purpose: Updates screen area in all cases.
185         -- area is given by his xy min corner and size in pixel coordinates
186         ---Category: Methods to modify the class definition
187
188         Redraw ( me     : mutable;
189                  AnUnderLayer   : Layer from Visual3d;
190                  AnOverLayer    : Layer from Visual3d )
191                 is static;
192         ---Level: Internal
193         ---Purpose: Updates screen in all cases.
194         ---Category: Methods to modify the class definition
195
196   RedrawImmediate ( me            : mutable;
197                     theUnderLayer : Layer from Visual3d;
198                     theOverLayer  : Layer from Visual3d )
199   is static;
200   ---Level: Public
201   ---Purpose: Updates layer of immediate presentations.
202
203   Invalidate ( me : mutable )
204   is static;
205   ---Level: Public
206   ---Purpose: Invalidates view content but does not redraw it.
207
208         Redraw ( me     : mutable;
209                  AnUnderLayer   : Layer from Visual3d;
210                  AnOverLayer    : Layer from Visual3d;
211                  x,y,width,height: Integer from Standard )
212                 is static;
213         ---Level: Internal
214         ---Purpose: Updates screen area in all cases.
215         -- area is given by his xy min corner and size in pixel coordinates
216         ---Category: Methods to modify the class definition
217
218         Remove ( me     : mutable )
219                 is static;
220         ---Level: Public
221         ---Purpose: Deletes and erases the view <me>.
222         --  Warning: No more graphic operations in <me> after this call.
223         ---Category: Methods to modify the class definition
224
225         Resized ( me    : mutable )
226         ---Level: Public
227         ---Purpose: Updates the view <me> after the modification
228         --          of the associated window.
229         --  Category: Methods to modify the class definition
230         --  Warning: Raises ViewDefinitionError if the associated
231         --          window isn't defined.
232         raises ViewDefinitionError from Visual3d is static;
233
234         SetBackground ( me      : mutable;
235                         ABack   : Background from Aspect )
236         ---Level: Internal
237         ---Purpose: Modifies the default window background.
238         --  Category: Methods to modify the class definition
239         --  Warning: Raises ViewDefinitionError if the associated
240         --          window isn't defined.
241         raises ViewDefinitionError from Visual3d is static;
242
243         SetBackgroundImage( me : mutable; FileName : CString from Standard;
244                                           FillStyle : FillMethod from Aspect;
245                                           update    : Boolean from Standard )
246         ---Level: Internal
247         ---Purpose:
248         --  Category: Methods to modify the class definition
249         --  Warning: Raises ViewDefinitionError if the associated
250         --          window isn't defined.
251         raises ViewDefinitionError from Visual3d is static;
252
253         SetBgImageStyle( me : mutable; FillStyle : FillMethod from Aspect;
254                                        update    : Boolean from Standard )
255         ---Level: Internal
256         ---Purpose:
257         --  Category: Methods to modify the class definition
258         --  Warning: Raises ViewDefinitionError if the associated
259         --          window isn't defined.
260         raises ViewDefinitionError from Visual3d is static;
261
262         SetGradientBackground ( me      : mutable;
263                                 ABack   : GradientBackground from Aspect;
264                                 update  : Boolean from Standard )
265         ---Level: Internal
266         ---Purpose: Modifies the gradient window background.
267         --  Category: Methods to modify the class definition
268         --  Warning: Raises ViewDefinitionError if the associated
269         --          window isn't defined.
270         raises ViewDefinitionError from Visual3d is static;
271
272         SetBgGradientStyle( me : mutable;
273                             FillStyle : GradientFillMethod from Aspect;
274                             update    : Boolean from Standard )
275         ---Level: Internal
276         ---Purpose:
277         --  Category: Methods to modify the class definition
278         --  Warning: Raises ViewDefinitionError if the associated
279         --          window isn't defined.
280         raises ViewDefinitionError from Visual3d is static;
281
282         SetBackFacingModel ( me     : mutable;
283                         aModel : TypeOfBackfacingModel from Visual3d
284         ) is static;
285         ---Level   : Public
286         ---Purpose : Manages display of the back faces
287
288         BackFacingModel ( me )
289         returns TypeOfBackfacingModel from Visual3d is static;
290         ---Level   : Public
291         ---Purpose : Returns current state of the back faces display
292
293         SetContext ( me         : mutable;
294                      CTX        : ContextView from Visual3d )
295                 is static;
296         ---Level: Public
297         ---Purpose: Sets the context <CTX> in the view <me>.
298         ---Category: Methods to modify the class definition
299
300         SetTransform ( me       : mutable;
301                        AMatrix  : Array2OfReal from TColStd )
302         ---Level: Internal
303         ---Purpose: Sets the transformation matrix that is applied
304         --          to <MyViewOrientation> field of the view <me>.
305         --
306         --          <AMatrix> is defined as a 4*4 real matrix.
307         --
308         --              -------------------
309         --              | a11 a12 a13  t1 |
310         --              | a21 a22 a23  t2 |
311         --              | a31 a32 a33  t3 |
312         --              |  0   0   0   1  |
313         --              -------------------
314         --
315         --  Category: Methods to modify the class definition
316         --  Warning: Raises TransformError if the matrix isn't a 4x4 matrix.
317         raises TransformError from Visual3d is static;
318
319         SetViewMappingDefault ( me      : mutable )
320                 is static;
321         ---Level: Public
322         ---Purpose: Saves the current mapping which will be the
323         --          reference value for the reset of the mapping
324         --          done by the ViewmappingReset method.
325         ---Category: Methods to modify the class definition
326
327         SetViewOrientationDefault ( me  : mutable )
328                 is static;
329         ---Level: Public
330         ---Purpose: Saves the current orientation which will be the
331         --          reference value for the reset of the orientation
332         --          done by the ViewOrientationReset method.
333         ---Category: Methods to modify the class definition
334
335         SetWindow ( me          : mutable;
336                     AWindow     : Window from Aspect )
337         ---Level: Public
338         ---Purpose: Associates the window <AWindow> to the view <me>.
339         --          No new association if the window is already defined.
340         --  Category: Methods to modify the class definition
341         --  Warning: Raises ViewDefinitionError if it is impossible
342         --          to associate a view and a window.
343         --          (association already done or another problem)
344         --          Modifies the viewmapping of the associated view
345         --          when it calls the SetRatio method.
346         raises ViewDefinitionError from Visual3d is static;
347         ---Purpose:
348         --          After this call, each view is mapped in an unique window.
349         --
350         -- Programming example :
351         --
352         -- An example when we have 1 view and 1 window
353         -- -------------------------------------------
354         --
355   -- Handle(Aspect_DisplayConnection) aDisplayConnection;
356   -- 
357   -- // Display connection initialization only needed on Linux platform
358   -- // and on Mac OS X, in cases when you use Xlib for windows drawing.
359   -- aDisplayConnection = new Aspect_DisplayConnection();
360   --
361   -- // Graphic driver initialization
362   -- Handle(Graphic3d_GraphicDriver) aGraphicDriver = 
363   --   Graphic3d::InitGraphicDriver (aDisplayConnection);
364         --
365         -- // Define a view manager
366         -- Handle(Visual3d_ViewManager) aVisualManager = new Visual3d_ViewManager (aGraphicDriver);
367         --
368         -- // Define a view
369         -- Handle(Visual3d_View) aView = new Visual3d_View (aVisaulManager);
370         --
371         -- // Define a window
372         -- Handle(Xw_Window) aWindow = new Xw_Window
373         --      (aDisplayConnection, "Graphic View 1", 0.695, 0.695, 0.600, 0.600, Quantity_NOC_MATRAGRAY);
374         --
375         -- // Associate the view and the window
376         -- aView->SetWindow (aWindow);
377         --
378         -- // Map the window
379         -- aWindow->Map ();
380         --
381         -- // Activate the view
382         -- aView->Activate ();
383         --
384
385         SetWindow ( me          : mutable;
386                     AWindow     : Window from Aspect;
387                     AContext: RenderingContext from Aspect;
388                     ADisplayCB: GraphicCallbackProc from Aspect;
389                     AClientData: Address from Standard
390                   )
391         ---Level: Public
392         ---Purpose: Associates the window <AWindow> and context <AContext>
393         --          to the view <me>.
394         --          If <AContext> is not NULL the graphic context is used
395         --          directly to draw something in this view.
396         --          Otherwise an internal context is created.
397         --          If <ADisplayCB> is not NULL then a user display CB is
398         --          call at the end of the OCC graphic traversal and just
399         --          before the swap of buffers. The <aClientData> is pass
400         --          to this call back.
401         --          No new association if the window is already defined.
402         --  Category: Methods to modify the class definition
403         --  Warning: Raises ViewDefinitionError if it is impossible
404         --          to associate a view and a window.
405         --          (association already done or another problem)
406         --          Modifies the viewmapping of the associated view
407         --          when it calls the SetRatio method.
408         raises ViewDefinitionError from Visual3d is static;
409         ---Purpose:
410         --          After this call, each view is mapped in an unique window.
411
412         Update ( me     : mutable )
413                 is static;
414         ---Level: Public
415         ---Purpose: Updates screen in function of modifications of
416         --          the structures.
417         ---Category: Methods to modify the class definition
418
419         Update ( me             : mutable;
420                  AnUnderLayer   : Layer from Visual3d;
421                  AnOverLayer    : Layer from Visual3d )
422                 is static;
423         ---Level: Internal
424         ---Purpose: Updates screen in function of modifications of
425         --          the structures.
426         ---Category: Methods to modify the class definition
427
428         ViewMappingReset ( me   : mutable )
429                 is static;
430         ---Level: Public
431         ---Purpose: Sets the value of the mapping to be the same as
432         --          the mapping saved by the SetViewMappingDefaut method.
433         ---Category: Methods to modify the class definition
434
435         ViewOrientationReset ( me       : mutable )
436                 is static;
437         ---Level: Public
438         ---Purpose: Sets the value of the orientation to be the same as the
439         --          orientation saved by the SetViewOrientationDefaut method.
440         ---Category: Methods to modify the class definition
441
442         SetComputedMode ( me : mutable; aMode : Boolean from Standard ) is static;
443         ---Level: Advanced
444         ---Purpose: Switches computed HLR mode in the view
445         ---Category: Methods to modify the class definition
446
447         ComputedMode ( me ) returns Boolean from Standard is static;
448         ---Level: Advanced
449         ---Purpose: Returns the computed HLR mode state
450         ---Category: Inquire methods
451
452         ---------------------------------------------------
453         -- Category: Methods to modify the class definition
454         --           Triedron methods
455         ---------------------------------------------------
456
457         ZBufferTriedronSetup ( me  : mutable;
458                                XColor  : NameOfColor from Quantity = Quantity_NOC_RED;
459                                YColor  : NameOfColor from Quantity = Quantity_NOC_GREEN;
460                                ZColor  : NameOfColor from Quantity = Quantity_NOC_BLUE1;
461                                SizeRatio : Real from Standard = 0.8;
462                                AxisDiametr : Real from Standard = 0.05;
463                                NbFacettes  : Integer from Standard = 12)
464                  is static;
465         ---Level: Advanced
466         ---Purpose: Customization of the ZBUFFER Triedron.
467         ---         Initializes Colors of X Y and axis
468         ---         Scale ratio defines decreasing of trihedron size when
469         ---         its position is out of a View
470
471         TriedronDisplay ( me            : mutable;
472                           APosition     : TypeOfTriedronPosition from Aspect  = Aspect_TOTP_CENTER;
473                           AColor        : NameOfColor from Quantity = Quantity_NOC_WHITE ;
474                           AScale        : Real from Standard  =  0.02;
475                           AsWireframe   : Boolean from Standard = Standard_True )
476                 is static;
477         ---Level: Public
478         ---Purpose: Display of the Triedron.
479         ---         Initialize position, color and length of Triedron axes.
480         ---         The scale is a percent of the window width.
481         ---         If AsWireframe is FALSE triedron is shown in shaded mode
482         ---         AColor is not considered for ZBUFFER mode
483         ---Category:
484
485         TriedronErase ( me              : mutable )
486                 is static;
487         ---Level: Public
488         ---Purpose: Erases the Triedron.
489         ---Category:
490
491         TriedronEcho ( me       : mutable;
492                        AType    : TypeOfTriedronEcho from Aspect  = Aspect_TOTE_NONE )
493                 is static;
494         ---Level: Public
495         ---Purpose: Highlights the echo zone of the Triedron.
496         ---Category:
497
498     ------------------------------------------
499     ---Category: Graduated trihedron
500     ------------------------------------------
501
502     GetGraduatedTrihedron(me;
503                           -- Names of axes --
504                           xname, yname, zname : out ExtendedString from TCollection;
505                           -- Draw names --
506                           xdrawname, ydrawname, zdrawname : out Boolean from Standard;
507                           -- Draw values --
508                           xdrawvalues, ydrawvalues, zdrawvalues : out Boolean from Standard;
509                           -- Draw grid --
510                           drawgrid : out Boolean from Standard;
511                           -- Draw axes --
512                           drawaxes : out Boolean from Standard;
513                           -- Number of splits along axes --
514                           nbx, nby, nbz : out Integer from Standard;
515                           -- Offset for drawing values --
516                           xoffset, yoffset, zoffset : out Integer from Standard;
517                           -- Offset for drawing names of axes --
518                           xaxisoffset, yaxisoffset, zaxisoffset : out Integer from Standard;
519                           -- Draw tickmarks --
520                           xdrawtickmarks, ydrawtickmarks, zdrawtickmarks : out Boolean from Standard;
521                           -- Length of tickmarks --
522                           xtickmarklength, ytickmarklength, ztickmarklength : out Integer from Standard;
523                           -- Grid color --
524                           gridcolor : out Color from Quantity;
525                           -- Colors of axis names --
526                           xnamecolor, ynamecolor, znamecolor : out Color from Quantity;
527                           -- Colors of axis and values --
528                           xcolor, ycolor, zcolor : out Color from Quantity;
529                           -- Name of font for names of axes --
530                           fontOfNames : out AsciiString from TCollection;
531                           -- Style of names of axes --
532                           styleOfNames : out FontAspect from Font;
533                           -- Size of names of axes --
534                           sizeOfNames : out Integer from Standard;
535                           -- Name of font for values --
536                           fontOfValues : out AsciiString from TCollection;
537                           -- Style of values --
538                           styleOfValues : out FontAspect from Font;
539                           -- Size of values --
540                           sizeOfValues : out Integer from Standard)
541     returns Boolean from Standard
542     is static;
543     ---Purpose: Returns data of a graduated trihedron if displayed (return value is True)
544
545     GraduatedTrihedronDisplay(me : mutable;
546                               -- Names of axes --
547                               xname, yname, zname : ExtendedString from TCollection;
548                               -- Draw names --
549                               xdrawname, ydrawname, zdrawname : Boolean from Standard;
550                               -- Draw values --
551                               xdrawvalues, ydrawvalues, zdrawvalues : Boolean from Standard;
552                               -- Draw grid --
553                               drawgrid : Boolean from Standard;
554                               -- Draw axes --
555                               drawaxes : Boolean from Standard;
556                               -- Number of splits along axes --
557                               nbx, nby, nbz : Integer from Standard;
558                               -- Offset for drawing values --
559                               xoffset, yoffset, zoffset : Integer from Standard;
560                               -- Offset for drawing names of axes --
561                               xaxisoffset, yaxisoffset, zaxisoffset : Integer from Standard;
562                               -- Draw tickmarks --
563                               xdrawtickmarks, ydrawtickmarks, zdrawtickmarks : Boolean from Standard;
564                               -- Length of tickmarks --
565                               xtickmarklength, ytickmarklength, ztickmarklength : Integer from Standard;
566                               -- Grid color --
567                               gridcolor : Color from Quantity;
568                               -- Colors of axis names --
569                               xnamecolor, ynamecolor, znamecolor : Color from Quantity;
570                               -- Colors of axis and values --
571                               xcolor, ycolor, zcolor : Color from Quantity;
572                               -- Name of font for names of axes --
573                               fontOfNames : AsciiString from TCollection;
574                               -- Style of names of axes --
575                               styleOfNames : FontAspect from Font;
576                               -- Size of names of axes --
577                               sizeOfNames : Integer from Standard;
578                               -- Name of font for values --
579                               fontOfValues : AsciiString from TCollection;
580                               -- Style of values --
581                               styleOfValues : FontAspect from Font;
582                               -- Size of values --
583                               sizeOfValues : Integer from Standard)
584     ---Purpose: Displays a graduated trihedron.
585     is static;
586
587     GraduatedTrihedronErase(me : mutable)
588     ---Purpose: Erases a graduated trihedron from the view.
589     is static;
590
591         ----------------------------
592         ---Category: Inquire methods
593         ----------------------------
594
595         Background ( me )
596                 returns Background from Aspect
597                 is static;
598         ---Level: Internal
599         ---Purpose: Returns the value of the default window background.
600
601         GradientBackground ( me )
602                 returns GradientBackground from Aspect
603                 is static;
604         ---Level: Internal
605         ---Purpose: Returns the value of the window background.
606
607         ContainsFacet ( me )
608                 returns Boolean from Standard
609                 is static;
610         ---Level: Public
611         ---Purpose: Returns Standard_True if one of the structures
612         --          displayed in the view <me> contains Polygons,
613         --          Triangles or Quadrangles.
614
615         ContainsFacet ( me;
616                         ASet    : MapOfStructure from Graphic3d )
617                 returns Boolean from Standard
618                 is static;
619         ---Level: Public
620         ---Purpose: Returns Standard_True if one of the structures
621         --          in the set <ASet> contains Polygons, Triangles
622         --          or Quadrangles.
623
624         Context ( me )
625                 returns ContextView from Visual3d
626                 is static;
627         ---Level: Public
628         ---Purpose: Returns the current context of the view <me>.
629         ---C++: return const &
630
631         DisplayedStructures ( me; SG: in out MapOfStructure from Graphic3d )
632                 is static;
633         ---Level: Internal
634         ---Purpose: Returns the set of structures displayed in
635         --          the view <me>.
636
637         IsActive ( me )
638                 returns Boolean from Standard
639                 is static;
640         ---Level: Public
641         ---Purpose: Returns the activity flag of the view <me>.
642
643         IsDefined ( me )
644                 returns Boolean from Standard
645                 is static;
646         ---Level: Public
647         ---Purpose: Returns True if the window associated to the view
648         --          <me> is defined.
649
650         IsDeleted ( me )
651                 returns Boolean from Standard
652                 is static;
653         ---Level: Public
654         ---Purpose: Returns Standard_True is the view <me> is deleted.
655         --          <me> is deleted after the call Remove (me).
656         ---Category: Inquire methods
657
658     MinMaxValues (me;
659                   theXMin, theYMin, theZMin : out Real from Standard;
660                   theXMax, theYMax, theZMax : out Real from Standard;
661                   theToIgnoreInfiniteFlag   : Boolean from Standard = Standard_False)
662     is static;
663     ---Level: Public
664     ---Purpose: Returns the coordinates of the boundary box of all
665     --          structures displayed in the view <me>.
666     --          If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
667     --          also includes minimum and maximum limits of graphical elements
668     --          forming parts of infinite structures.
669
670     MinMaxValues (me;
671                   theSet : MapOfStructure from Graphic3d;
672                   theXMin, theYMin, theZMin : out Real from Standard;
673                   theXMax, theYMax, theZMax : out Real from Standard;
674                   theToIgnoreInfiniteFlag   : Boolean from Standard = Standard_False)
675     is static;
676     ---Level: Public
677     ---Purpose: Returns the coordinates of the boundary box of all
678     --          structures in the set <theSet>.
679     --          If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
680     --          also includes minimum and maximum limits of graphical elements
681     --          forming parts of infinite structures.
682
683     MinMaxValues (me;
684                   theXMin, theYMin        : out Real from Standard;
685                   theXMax, theYMax        : out Real from Standard;
686                   theToIgnoreInfiniteFlag : Boolean from Standard = Standard_False)
687     is static;
688     ---Level: Public
689     ---Purpose: Returns the coordinates of the projection of the
690     --          boundary box of all structures displayed in the view <me>.
691     --          If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
692     --          also includes minimum and maximum limits of graphical elements
693     --          forming parts of infinite structures.
694
695     MinMaxValues (me;
696                   theSet                  : MapOfStructure from Graphic3d;
697                   theXMin, theYMin        : out Real from Standard;
698                   theXMax, theYMax        : out Real from Standard;
699                   theToIgnoreInfiniteFlag : Boolean from Standard = Standard_False)
700     is static;
701     ---Level: Public
702     ---Purpose: Returns the coordinates of the projection of the
703     --          boundary box of all structures in the set <ASet>.
704     --          If <theToIgnoreInfiniteFlag> is TRUE, then the boundary box
705     --          also includes minimum and maximum limits of graphical elements
706     --          forming parts of infinite structures.
707
708         NumberOfDisplayedStructures ( me )
709                 returns Integer from Standard
710                 is static;
711         ---Level: Internal
712         ---Purpose: Returns number of displayed structures in
713         --          the view <me>.
714
715         Projects (me;
716                    AX, AY, AZ           : Real from Standard;
717                    APX, APY, APZ        : out Real from Standard )
718                 is static;
719         ---Level: Public
720         ---Purpose: Returns the coordinates of the projection of the
721         --          3d coordinates <AX>, <AY>, <AZ>.
722
723     DefaultCamera (me)
724         returns Camera_Handle from Graphic3d
725         is static;
726     ---Level: Public
727     ---Purpose: @return the default camera of <me>.
728     ---C++: return const &
729
730     Camera (me)
731         returns Camera_Handle from Graphic3d
732         is static;
733     ---Level: Public
734     ---Purpose: @return the camera of <me>.
735     ---C++: return const &
736
737     SetCamera (me : mutable; theCamera : Camera_Handle from Graphic3d) is static;
738     ---Level: Public
739     ---Purpose: Set camera object to provide orientation and projection matrices
740     -- for graphic driver.
741
742         Window ( me )
743                 returns Window from Aspect
744         ---Level: Public
745         ---Purpose: Returns the window associated to the view <me>.
746         --  Warning: Raises ViewDefinitionError if the associated
747         --          window isn't defined.
748         raises ViewDefinitionError from Visual3d is static;
749
750         LightLimit ( me ) returns Integer is static;
751         ---Level: Public
752         ---Purpose: Returns the MAX number of light associated to the view <me>.
753
754         PlaneLimit ( me ) returns Integer is static;
755         ---Level: Public
756         ---Purpose: Returns the MAX number of clipping planes
757         -- associated to the view <me>.
758
759         ViewManager ( me ) returns ViewManager from Visual3d is static;
760         ---Level: Advanced
761         ---Purpose: Returns the view manager handle which manage this view
762
763         ----------------------------
764         -- Category: Private methods
765         ----------------------------
766
767         AcceptDisplay ( me;
768                         AStructure      : Structure from Graphic3d )
769                 returns TypeOfAnswer from Visual3d
770                 is static private;
771         ---Level: Internal
772         ---Purpose: Is it possible to display the structure
773         --          <AStructure> in the view <me> ?
774         ---Category: Private methods
775
776         ReCompute ( me  : mutable;
777                     AStructure  : Structure from Graphic3d );
778         ---Level: Advanced
779         ---Purpose: Computes the new presentation of the
780         --          structure <AStructure> displayed in <me>
781         --          with the type Graphic3d_TOS_COMPUTED.
782         ---Category: Private methods
783
784         Compute ( me    : mutable ) is static private;
785         ---Level: Internal
786         ---Purpose: Computes the new presentation of the
787         --          Structures displayed in <me> with the type
788         --          Graphic3d_TOS_COMPUTED.
789         ---Category: Private methods
790
791         ChangeDisplayPriority ( me              : mutable;
792                                 AStructure      : Structure from Graphic3d;
793                                 OldPriority     : Integer from Standard;
794                                 NewPriority     : Integer from Standard )
795                 is static private;
796         ---Level: Internal
797         ---Purpose: Changes the display priority of the structure <AStructure>.
798         ---Category: Private methods
799
800
801         SetZLayerSettings ( me          : mutable;
802                             theLayerId  : Integer from Standard;
803                             theSettings : ZLayerSettings from Graphic3d )
804           is static private;
805         ---Purpose: Sets the settings for a single Z layer of specified view.
806
807         AddZLayer ( me         : mutable;
808                     theLayerId : Integer from Standard )
809           is static private;
810         ---Purpose: Add a new top-level Z layer to the view with ID
811         -- <theLayerId>. The z layer mechanism allows to display
812         -- structures in higher layers in overlay of structures in lower layers.
813         -- The layers in a particular view should be managed centrally
814         -- by its view manager so to avoid IDs mismatching and provide correct
815         -- display of graphics in all views.
816
817         RemoveZLayer ( me         : mutable;
818                        theLayerId : Integer from Standard )
819           is static private;
820         ---Purpose: Remove z layer from the view by its ID.
821
822         ChangeZLayer ( me           : mutable;
823                        theStructure : Structure from Graphic3d;
824                        theLayerId   : Integer from Standard )
825            is static private;
826         ---Purpose: Change Z layer of already displayed structure in the view.
827
828         Clear ( me              : mutable;
829                 AStructure      : Structure from Graphic3d;
830                 WithDestruction : Boolean from Standard )
831                 is static private;
832         ---Level: Internal
833         ---Purpose: Clears the structure <AStructure> to the view <me>.
834         ---Category: Private methods
835
836         Connect ( me            : mutable;
837                   AMother       : Structure from Graphic3d;
838                   ADaughter     : Structure from Graphic3d )
839                 is static private;
840         ---Level: Internal
841         ---Purpose: Connects the structures <AMother> and <ADaughter>.
842         ---Category: Private methods
843
844         Disconnect ( me         : mutable;
845                      AMother    : Structure from Graphic3d;
846                      ADaughter  : Structure from Graphic3d )
847                 is static private;
848         ---Level: Internal
849         ---Purpose: Disconnects the structures <AMother> and <ADaughter>.
850         ---Category: Private methods
851
852         Display ( me            : mutable;
853                   AStructure    : Structure from Graphic3d )
854                 is static private;
855         ---Level: Internal
856         ---Purpose: Display the structure <AStructure> to the view <me>.
857         ---Category: Private methods
858
859         Display ( me            : mutable;
860                   AStructure    : Structure from Graphic3d;
861                   AnUpdateMode  : TypeOfUpdate from Aspect )
862                 is static private;
863         ---Level: Internal
864         ---Purpose: Display the structure <AStructure> to the view <me>.
865         ---Category: Private methods
866
867   DisplayImmediate ( me : mutable;
868                      theStructure    : Structure from Graphic3d;
869                      theIsSingleView : Boolean   from Standard = Standard_True)
870   returns Boolean from Standard
871   is static;
872   ---Level: Internal
873   ---Purpose: Add structure to the list of immediate presentations.
874   -- @return true if structure has not been registered in this view
875
876   EraseImmediate ( me : mutable;
877                    theStructure : Structure from Graphic3d )
878   returns Boolean from Standard
879   is static;
880   ---Level: Internal
881   ---Purpose: Removes the structure from the list of immediate presentations.
882   -- @return true if structure has been registered in view
883
884   ClearImmediate ( me : mutable )
885   returns Boolean from Standard
886   is static;
887   ---Level: Internal
888   ---Purpose: Clears list of immediate presentations.
889   -- @return true if list was not empty
890
891         Erase ( me              : mutable;
892                 AStructure      : Structure from Graphic3d )
893                 is static private;
894         ---Level: Internal
895         ---Purpose: Erases the structure <AStructure> from the view <me>.
896         ---Category: Private methods
897
898         Erase ( me              : mutable;
899                 AStructure      : Structure from Graphic3d;
900                 AnUpdateMode    : TypeOfUpdate from Aspect )
901                 is static private;
902         ---Level: Internal
903         ---Purpose: Erases the structure <AStructure> from the view <me>.
904         ---Category: Private methods
905
906         Highlight ( me                  : mutable;
907                     AStructure          : Structure from Graphic3d;
908                     AMethod             : TypeOfHighlightMethod from Aspect )
909                 is static private;
910         ---Level: Internal
911         ---Purpose: Highlights the structure <AStructure> in the view <me>.
912         ---Category: Private methods
913
914         SetTransform ( me               : mutable;
915                        AStructure       : Structure from Graphic3d;
916                        ATrsf            : Array2OfReal from TColStd )
917                 is static private;
918         ---Level: Internal
919         ---Purpose: Transforms the structure <AStructure> in the view <me>.
920         ---Category: Private methods
921
922         UnHighlight ( me                : mutable;
923                       AStructure        : Structure from Graphic3d )
924                 is static private;
925         ---Level: Internal
926         ---Purpose: Suppress the highlighting on the structure <AStructure>
927         --          in the view <me>.
928         ---Category: Private methods
929
930         IsComputed ( me;
931                      AStructure : Structure from Graphic3d )
932                 returns Integer from Standard
933                 is static private;
934         ---Level: Internal
935         ---Purpose: Returns an index != 0 if the structure <AStructure>
936         --          have another structure computed for the view <me>.
937         ---Category: Private methods
938
939         Identification ( me )
940                 returns Integer from Standard
941                 is static;
942         ---Level: Internal
943         ---Purpose: Returns the identification number of the view <me>.
944         ---Category: Private methods
945
946         IsDisplayed ( me;
947                       AStructure        : Structure from Graphic3d )
948                 returns Boolean from Standard
949                 is static private;
950         ---Level: Internal
951         ---Purpose: Returns true if the structure <AStructure> is
952         --          displayed in the view <me>.
953         ---Category: Private methods
954
955         SetRatio ( me   : mutable )
956                 is static private;
957         ---Level: Internal
958         ---Purpose: Modifies the aspect ratio of the view <me> when the
959         --          associated window is defined or resized.
960         ---Category: Private methods
961
962         UpdateLights ( me       : mutable )
963                 is static private;
964         ---Level: Internal
965         ---Purpose: Updates the lights when the associated window is defined
966         --          and when the view is activated.
967         ---Category: Private methods
968
969         UpdatePlanes ( me       : mutable )
970                 is static private;
971         ---Level: Internal
972         ---Purpose: Updates the planes when the associated window is defined
973         --          and when the view is activated.
974         ---Category: Private methods
975
976         UpdateView ( me : mutable )
977                 is static private;
978         ---Level: Internal
979         ---Purpose: Updates the associated c structure before a call to the
980         --          graphic library.
981         ---Category: Private methods
982
983         -----------------------------
984         -- Category: Internal methods
985         -----------------------------
986
987         CView ( me )
988                 returns Address from Standard
989                 is static;
990         ---Level: Internal
991         ---Purpose: Returns the c structure associated to <me>.
992         ---Category: Private methods
993
994         GraphicDriver ( me )
995                 returns GraphicDriver from Graphic3d
996                 is static;
997         ---Level: Internal
998         ---Purpose: Returns the associated GraphicDriver.
999         ---Category: Internal methods
1000   ---C++: return const &
1001
1002         HaveTheSameOwner ( me;
1003                            AStructure   : Structure from Graphic3d )
1004                 returns Integer from Standard
1005                 is static private;
1006         ---Level: Internal
1007         ---Purpose: Returns an index != 0 if the structure <AStructure>
1008         --          have the same owner than another structure in the
1009         --          sequence of the computed structures.
1010         ---Category: Private methods
1011
1012           Print (me; AnUnderLayer : Layer from Visual3d;
1013                  AnOverLayer      : Layer from Visual3d;
1014                  hPrnDC           : Handle from Aspect;
1015                  showBackground   : Boolean;
1016                  filename         : CString;
1017                  printAlgorithm   : PrintAlgo from Aspect = Aspect_PA_STRETCH;
1018                  theScaleFactor   : Real from Standard = 1.0)
1019           returns Boolean from Standard is static;
1020
1021         ---Level: Internal
1022         ---Purpose: print the contents of all layers of the view to the printer.
1023         -- <hPrnDC> : Pass the PrinterDeviceContext (HDC),
1024         -- <showBackground> : When set to FALSE then print the view without background color
1025         -- (background is white)
1026         -- else set to TRUE for printing with current background color.
1027         -- <filename>: If != NULL, then the view will be printed to a file.
1028         -- <printAlgo>: Select print algorithm: stretch, tile.
1029         -- <theScaleFactor>: Scaling coefficient, used internally to scale the
1030         -- printings accordingly to the scale factor selected in the printer 
1031         -- properties dialog.
1032         -- Returns Standard_True if the data is passed to the printer, otherwise
1033         -- Standard_False if the print operation failed due to printer error
1034         -- or insufficient memory.
1035         --  Warning: Works only under Windows.
1036
1037           Print (me; hPrnDC     : Handle from Aspect;
1038                  showBackground : Boolean;
1039                  filename       : CString;
1040                  printAlgorithm : PrintAlgo from Aspect = Aspect_PA_STRETCH;
1041                  theScaleFactor : Real from Standard = 1.0 )
1042           returns Boolean from Standard is static;
1043
1044         ---Level: Internal
1045         ---Purpose: print the contents of the view to printer.
1046         -- <hPrnDC> : Pass the PrinterDeviceContext (HDC),
1047         -- <showBackground> : When set to FALSE then print the view without background color
1048         -- (background is white)
1049         -- else set to TRUE for printing with current background color.
1050         -- <filename>: If != NULL, then the view will be printed to a file.
1051         -- <printAlgo>: Select print algorithm: stretch, tile.
1052         -- <theScaleFactor>: Scaling coefficient, used internally to scale the
1053         -- printings accordingly to the scale factor selected in the printer 
1054         -- properties dialog.
1055         -- Returns Standard_True if the data is passed to the printer, otherwise
1056         -- Standard_False if the print operation failed due to printer error
1057         -- or insufficient memory.
1058         --  Warning: Works only under Windows.
1059
1060         SetTransparency ( me : mutable;
1061                 AFlag : Boolean from Standard )
1062                 is static;
1063         ---Level: Advanced
1064         ---Purpose: if <AFlag> is Standard_True then the transparency
1065         --          is managed in the view <me>.
1066         --          Default Standard_False
1067         ---Category: Internal methods
1068
1069         ZBufferIsActivated ( me )
1070                 returns Boolean from Standard
1071                 is static;
1072         ---Level: Advanced
1073         ---Purpose: Returns Standard_True if the ZBuffer is activated
1074         --          in the view <me> and Standard_False if not.
1075         ---Category: Internal methods
1076
1077         SetZBufferActivity ( me : mutable; AnActivity : Integer from Standard )
1078                 is static;
1079         ---Level: Advanced
1080         ---Purpose: Activates the ZBuffer if the integer <AnActivity>
1081         --          is equal to 1.
1082         --          Deactivates the ZBuffer if the integer <AnActivity>
1083         --          is equal to 0.
1084         --          If the integer <AnActivity> is equal to -1 then
1085         --          - the ZBuffer is activated if
1086         --              me->Context ().Visualization () == Visual3d_TOV_SHADING
1087         --          - the ZBuffer is deactivated if
1088         --              me->Context ().Visualization () == Visual3d_TOV_WIREFRAME
1089         ---Category: Internal methods
1090
1091         UnderLayer ( me )
1092                 returns Layer from Visual3d;
1093         ---Level: Internal
1094         ---Purpose: Returns the underlay of the view <me>.
1095         ---Category: Private methods
1096         ---C++: return const &
1097
1098         OverLayer ( me )
1099                 returns Layer from Visual3d;
1100         ---Level: Internal
1101         ---Purpose: Returns the underlay of the view <me>.
1102         ---Category: Private methods
1103         ---C++: return const &
1104
1105         EnableDepthTest( me; enable : Boolean from Standard )
1106         is static;
1107         ---Level: Public
1108         ---Purpose: turns on/off opengl depth
1109
1110         IsDepthTestEnabled( me ) returns Boolean from Standard
1111         is static;
1112         ---Level: Public
1113         ---Purpose: returns current state of the opengl depth testing
1114
1115         ReadDepths( me; x,y,width,height: Integer from Standard;
1116                         buffer : Address )
1117         is static;
1118         ---Purpose: Reads depths of shown pixels of the given rectangle
1119
1120         FBOCreate( me : mutable; width,height: Integer from Standard )
1121                   returns PtrFrameBuffer from Graphic3d
1122         is static;
1123         ---Level: Public
1124         ---Purpose: Generate offscreen FBO in the graphic library
1125
1126         FBORelease( me     : mutable;
1127                     fboPtr : in out PtrFrameBuffer from Graphic3d )
1128         is static;
1129         ---Level: Public
1130         ---Purpose: Remove offscreen FBO from the graphic library
1131
1132         FBOGetDimensions( me                  : mutable;
1133                           fboPtr              : PtrFrameBuffer from Graphic3d;
1134                           width, height       : out Integer from Standard;
1135                           widthMax, heightMax : out Integer from Standard )
1136         is static;
1137         ---Level: Public
1138         ---Purpose: Read offscreen FBO configuration.
1139
1140         FBOChangeViewport( me                  : mutable;
1141                            fboPtr              : in out PtrFrameBuffer from Graphic3d;
1142                            width, height       : Integer from Standard )
1143         is static;
1144         ---Level: Public
1145         ---Purpose: Change offscreen FBO viewport.
1146
1147         BufferDump( me            : mutable;
1148                     theImage      : in out PixMap from Image;
1149                     theBufferType : BufferType from Graphic3d )
1150                    returns Boolean from Standard
1151         is static;
1152         ---Level: Public
1153         ---Purpose: Dump active rendering buffer into specified memory buffer.
1154
1155         EnableGLLight( me; enable : Boolean from Standard )
1156         is static;
1157         ---Level: Public
1158         ---Purpose: turns on/off opengl lighting, currently used in triedron displaying
1159
1160         IsGLLightEnabled( me ) returns Boolean from Standard
1161         is static;
1162         ---Level: Public
1163         ---Purpose: returns the current state of the gl lighting
1164         --          currently used in triedron displaying
1165
1166         Export( me;
1167                 theFileName        : CString from Standard;
1168                 theFormat          : ExportFormat from Graphic3d;
1169                 theSortType        : SortType from Graphic3d = Graphic3d_ST_BSP_Tree;
1170                 thePrecision       : Real from Standard = 0.005;
1171                 theProgressBarFunc : Address from Standard = NULL;
1172                 theProgressObject  : Address from Standard = NULL )
1173         returns Boolean from Standard;
1174     ---Purpose:
1175     -- Export scene into the one of the Vector graphics formats (SVG, PS, PDF...).
1176     -- In contrast to Bitmaps, Vector graphics is scalable (so you may got quality benefits on printing to laser printer).
1177     -- Notice however that results may differ a lot and do not contain some elements.
1178
1179 fields
1180
1181 --
1182 -- Classe: Visual3d_View
1183 --
1184 -- Purpose: Declaration of the variables specific to views.
1185 --
1186 -- Reminder: A view is defined by:
1187 -- - a ViewManager
1188 -- - a ContextView
1189
1190   -- the associated C structure
1191   MyCView   : CView from Graphic3d;
1192
1193   -- the context of the view : Aliasing, Depth-Cueing, Lights ...
1194   MyContext : ContextView from Visual3d;
1195
1196   -- the associated window
1197   MyWindow  : Window from Aspect;
1198
1199   -- association Structure_COMPUTE and Structure_Computed
1200   MyTOCOMPUTESequence : SequenceOfStructure from Graphic3d;
1201   MyCOMPUTEDSequence  : SequenceOfStructure from Graphic3d;
1202
1203   -- the graphic driver used
1204   MyGraphicDriver : GraphicDriver from Graphic3d;
1205
1206   -- the background of the associated window
1207   MyBackground    : Background from Aspect;
1208
1209   -- the gradient background of the associated window
1210   MyGradientBackground  : GradientBackground from Aspect;
1211
1212   -- the displayed structures in the view
1213   MyDisplayedStructure  : MapOfStructure from Graphic3d;
1214
1215   myImmediateStructures : MapOfStructure from Graphic3d;
1216
1217   -- the ViewManager associated with the view
1218   MyPtrViewManager : ViewManagerPtr from Visual3d;
1219
1220   -- Booleans
1221   MyCBitFields     : CBitFields8 from Graphic3d;
1222
1223   MyGTrihedron     : CGraduatedTrihedron from Graphic3d;
1224
1225   myDefaultCamera  : Camera_Handle from Graphic3d;
1226
1227 friends
1228
1229   class ViewManager from Visual3d
1230
1231 end View;