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