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