1 // Created on: 1992-01-17
2 // Created by: GG
3 // Copyright (c) 1992-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 #ifndef _V3d_Viewer_HeaderFile
18 #define _V3d_Viewer_HeaderFile
19 
20 #include <Aspect_Background.hxx>
21 #include <Aspect_GenId.hxx>
22 #include <Aspect_GradientBackground.hxx>
23 #include <Aspect_GradientFillMethod.hxx>
24 #include <Aspect_GridDrawMode.hxx>
25 #include <Aspect_GridType.hxx>
26 
27 #include <gp_Ax3.hxx>
28 #include <Graphic3d_StructureManager.hxx>
29 #include <Graphic3d_TypeOfShadingModel.hxx>
30 #include <Graphic3d_Vertex.hxx>
31 #include <Graphic3d_ZLayerSettings.hxx>
32 
33 #include <Standard.hxx>
34 #include <Standard_Boolean.hxx>
35 #include <Standard_CString.hxx>
36 #include <Standard_ExtString.hxx>
37 #include <Standard_Integer.hxx>
38 #include <Standard_Real.hxx>
39 #include <Standard_Type.hxx>
40 
41 #include <TColStd_MapOfInteger.hxx>
42 #include <TColStd_ListIteratorOfListOfTransient.hxx>
43 #include <TColStd_SequenceOfInteger.hxx>
44 #include <TCollection_AsciiString.hxx>
45 #include <TCollection_ExtendedString.hxx>
46 
47 #include <V3d_ListOfLight.hxx>
48 #include <V3d_ListOfView.hxx>
49 #include <V3d_TypeOfOrientation.hxx>
50 #include <V3d_TypeOfView.hxx>
51 #include <V3d_TypeOfVisualization.hxx>
52 
53 #include <Quantity_Color.hxx>
54 
55 class Aspect_Grid;
56 class Graphic3d_AspectMarker3d;
57 class Graphic3d_GraphicDriver;
58 class Graphic3d_Group;
59 class Graphic3d_Structure;
60 class V3d_BadValue;
61 class V3d_CircularGrid;
62 class V3d_RectangularGrid;
63 class V3d_View;
64 class Quantity_Color;
65 
66 //! Defines services on Viewer type objects.
67 //! The methods of this class allow editing and
68 //! interrogation of the parameters linked to the viewer
69 //! its friend classes (View,light,plane).
70 class V3d_Viewer : public Standard_Transient
71 {
72   friend class V3d_View;
73   DEFINE_STANDARD_RTTIEXT(V3d_Viewer, Standard_Transient)
74 public:
75 
76   //! Create a Viewer with the given graphic driver and with default parameters:
77   //! - View orientation: V3d_XposYnegZpos
78   //! - View background: Quantity_NOC_GRAY30
79   //! - Shading model: V3d_GOURAUD
80   Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver);
81 
82   //! Returns True if One View more can be defined in this Viewer.
83   Standard_EXPORT Standard_Boolean IfMoreViews() const;
84 
85   //! Creates a view in the viewer according to its default parameters.
86   Standard_EXPORT Handle(V3d_View) CreateView();
87 
88   //! Activates all of the views of a viewer attached to a window.
89   Standard_EXPORT void SetViewOn();
90 
91   //! Activates a particular view in the Viewer.
92   //! Must be call if the Window attached to the view has been Deiconified.
93   Standard_EXPORT void SetViewOn (const Handle(V3d_View)& theView);
94 
95   //! Deactivates all the views of a Viewer
96   //! attached to a window.
97   Standard_EXPORT void SetViewOff();
98 
99   //! Deactivates a particular view in the Viewer.
100   //! Must be call if the Window attached to the view
101   //! has been Iconified .
102   Standard_EXPORT void SetViewOff (const Handle(V3d_View)& theView);
103 
104   //! Deprecated, Redraw() should be used instead.
Update()105   void Update() { Redraw(); }
106 
107   //! Redraws all the views of the Viewer even if no
108   //! modification has taken place. Must be called if
109   //! all the views of the Viewer are exposed, as for
110   //! example in a global DeIconification.
111   Standard_EXPORT void Redraw() const;
112 
113   //! Updates layer of immediate presentations.
114   Standard_EXPORT void RedrawImmediate() const;
115 
116   //! Invalidates viewer content but does not redraw it.
117   Standard_EXPORT void Invalidate() const;
118 
119   //! Suppresses the Viewer.
120   Standard_EXPORT void Remove();
121 
122   //! Return Graphic Driver instance.
Handle(Graphic3d_GraphicDriver)123   const Handle(Graphic3d_GraphicDriver)& Driver() const { return myDriver; }
124 
125   //! Returns the structure manager associated to this viewer.
StructureManager() const126   Handle(Graphic3d_StructureManager) StructureManager() const { return myStructureManager; }
127 
128   //! Return default Rendering Parameters.
129   //! By default these parameters are set in a new V3d_View.
DefaultRenderingParams() const130   const Graphic3d_RenderingParams& DefaultRenderingParams() const { return myDefaultRenderingParams; }
131 
132   //! Set default Rendering Parameters.
SetDefaultRenderingParams(const Graphic3d_RenderingParams & theParams)133   void SetDefaultRenderingParams (const Graphic3d_RenderingParams& theParams) { myDefaultRenderingParams = theParams; }
134 
135   //! Defines the default background colour of views
136   //! attached to the viewer by supplying the color object
SetDefaultBackgroundColor(const Quantity_Color & theColor)137   void SetDefaultBackgroundColor (const Quantity_Color& theColor) { myBackground.SetColor (theColor); }
138 
139   //! Returns the gradient background of the view.
GetGradientBackground() const140   const Aspect_GradientBackground& GetGradientBackground() const { return myGradientBackground; }
141 
142   //! Defines the default gradient background colours of views
143   //! attached to the viewer by supplying the colour objects
SetDefaultBgGradientColors(const Quantity_Color & theColor1,const Quantity_Color & theColor2,const Aspect_GradientFillMethod theFillStyle=Aspect_GFM_HOR)144   void SetDefaultBgGradientColors (const Quantity_Color& theColor1,
145                                    const Quantity_Color& theColor2,
146                                    const Aspect_GradientFillMethod theFillStyle = Aspect_GFM_HOR)
147   {
148     myGradientBackground.SetColors (theColor1, theColor2, theFillStyle);
149   }
150 
151   //! Returns the default size of the view.
DefaultViewSize() const152   Standard_Real DefaultViewSize() const { return myViewSize; }
153 
154   //! Gives a default size for the creation of views of the viewer.
155   Standard_EXPORT void SetDefaultViewSize (const Standard_Real theSize);
156 
157   //! Returns the default Projection.
DefaultViewProj() const158   V3d_TypeOfOrientation DefaultViewProj() const { return myViewProj; }
159 
160   //! Sets the default projection for creating views in the viewer.
SetDefaultViewProj(const V3d_TypeOfOrientation theOrientation)161   void SetDefaultViewProj (const V3d_TypeOfOrientation theOrientation) { myViewProj = theOrientation; }
162 
163   //! Returns the default type of Visualization.
DefaultVisualization() const164   V3d_TypeOfVisualization DefaultVisualization() const { return myVisualization; }
165 
166   //! Gives the default visualization mode.
SetDefaultVisualization(const V3d_TypeOfVisualization theType)167   void SetDefaultVisualization (const V3d_TypeOfVisualization theType) { myVisualization = theType; }
168 
169   //! Returns the default type of Shading
DefaultShadingModel() const170   Graphic3d_TypeOfShadingModel DefaultShadingModel() const { return myShadingModel; }
171 
172   //! Gives the default type of SHADING.
SetDefaultShadingModel(const Graphic3d_TypeOfShadingModel theType)173   void SetDefaultShadingModel (const Graphic3d_TypeOfShadingModel theType) { myShadingModel = theType; }
174 
175   //! Returns the default type of View (orthographic or perspective projection) to be returned by CreateView() method.
DefaultTypeOfView() const176   V3d_TypeOfView DefaultTypeOfView() const { return myDefaultTypeOfView; }
177 
178   //! Set the default type of View (orthographic or perspective projection) to be returned by CreateView() method.
SetDefaultTypeOfView(const V3d_TypeOfView theType)179   void SetDefaultTypeOfView (const V3d_TypeOfView theType) { myDefaultTypeOfView = theType; }
180 
181   //! Returns the default background colour object.
DefaultBackgroundColor() const182   Quantity_Color DefaultBackgroundColor() const { return myBackground.Color(); }
183 
184   //! Returns the gradient background colour objects of the view.
DefaultBgGradientColors(Quantity_Color & theColor1,Quantity_Color & theColor2) const185   void DefaultBgGradientColors (Quantity_Color& theColor1, Quantity_Color& theColor2) const { myGradientBackground.Colors (theColor1, theColor2); }
186 
187   //! Return all Z layer ids in sequence ordered by overlay level from lowest layer to highest ( foreground ).
188   //! The first layer ID in sequence is the default layer that can't be removed.
189   Standard_EXPORT void GetAllZLayers (TColStd_SequenceOfInteger& theLayerSeq) const;
190 
191   //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value.
192   //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view.
193   //! Custom layers will be inserted before Graphic3d_ZLayerId_Top (e.g. between Graphic3d_ZLayerId_Default and before Graphic3d_ZLayerId_Top).
194   //! @param theLayerId [out] id of created layer
195   //! @param theSettings [in] new layer settings
196   //! @return FALSE if the layer can not be created
AddZLayer(Graphic3d_ZLayerId & theLayerId,const Graphic3d_ZLayerSettings & theSettings=Graphic3d_ZLayerSettings ())197   Standard_Boolean AddZLayer (Graphic3d_ZLayerId& theLayerId,
198                               const Graphic3d_ZLayerSettings& theSettings = Graphic3d_ZLayerSettings())
199   {
200     return InsertLayerBefore (theLayerId, theSettings, Graphic3d_ZLayerId_Top);
201   }
202 
203   //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value.
204   //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view.
205   //! Layer rendering order is defined by its position in list (altered by theLayerAfter)
206   //! and IsImmediate() flag (all layers with IsImmediate() flag are drawn afterwards);
207   //! @param theNewLayerId [out] id of created layer; layer id is arbitrary and does not depend on layer position in the list
208   //! @param theSettings    [in] new layer settings
209   //! @param theLayerAfter  [in] id of layer to append new layer before
210   //! @return FALSE if the layer can not be created
211   Standard_EXPORT Standard_Boolean InsertLayerBefore (Graphic3d_ZLayerId& theNewLayerId,
212                                                       const Graphic3d_ZLayerSettings& theSettings,
213                                                       const Graphic3d_ZLayerId theLayerAfter);
214 
215   //! Add a new top-level Z layer to all managed views and get its ID as <theLayerId> value.
216   //! The Z layers are controlled entirely by viewer, it is not possible to add a layer to a particular view.
217   //! Layer rendering order is defined by its position in list (altered by theLayerAfter)
218   //! and IsImmediate() flag (all layers with IsImmediate() flag are drawn afterwards);
219   //! @param theNewLayerId [out] id of created layer; layer id is arbitrary and does not depend on layer position in the list
220   //! @param theSettings    [in] new layer settings
221   //! @param theLayerBefore [in] id of layer to append new layer after
222   //! @return FALSE if the layer can not be created
223   Standard_EXPORT Standard_Boolean InsertLayerAfter (Graphic3d_ZLayerId& theNewLayerId,
224                                                      const Graphic3d_ZLayerSettings& theSettings,
225                                                      const Graphic3d_ZLayerId theLayerBefore);
226 
227   //! Remove Z layer with ID <theLayerId>.
228   //! Method returns Standard_False if the layer can not be removed or doesn't exists.
229   //! By default, there are always default bottom-level layer that can't be removed.
230   Standard_EXPORT Standard_Boolean RemoveZLayer (const Graphic3d_ZLayerId theLayerId);
231 
232   //! Returns the settings of a single Z layer.
233   Standard_EXPORT const Graphic3d_ZLayerSettings& ZLayerSettings (const Graphic3d_ZLayerId theLayerId) const;
234 
235   //! Sets the settings for a single Z layer.
236   Standard_EXPORT void SetZLayerSettings (const Graphic3d_ZLayerId theLayerId, const Graphic3d_ZLayerSettings& theSettings);
237 
238 public:
239 
240   //! Return an iterator for active views.
ActiveViewIterator() const241   V3d_ListOfViewIterator ActiveViewIterator() const { return V3d_ListOfViewIterator (myActiveViews); }
242 
243   //! Initializes an internal iterator on the active views.
InitActiveViews()244   void InitActiveViews() { myActiveViewsIterator.Initialize (myActiveViews); }
245 
246   //! Returns true if there are more active view(s) to return.
MoreActiveViews() const247   Standard_Boolean MoreActiveViews() const { return myActiveViewsIterator.More(); }
248 
249   //! Go to the next active view (if there is not, ActiveView will raise an exception)
NextActiveViews()250   void NextActiveViews() { if (!myActiveViews.IsEmpty()) myActiveViewsIterator.Next(); }
251 
Handle(V3d_View)252   const Handle(V3d_View)& ActiveView() const { return myActiveViewsIterator.Value(); }
253 
254   //! returns true if there is only one active view.
LastActiveView() const255   Standard_Boolean LastActiveView() const { return myActiveViews.Extent() == 1; }
256 
257 public:
258 
259   //! Return an iterator for defined views.
DefinedViewIterator() const260   V3d_ListOfViewIterator DefinedViewIterator() const { return V3d_ListOfViewIterator (myDefinedViews); }
261 
262   //! Initializes an internal iterator on the Defined views.
InitDefinedViews()263   void InitDefinedViews() { myDefinedViewsIterator.Initialize (myDefinedViews); }
264 
265   //! returns true if there are more Defined view(s) to return.
MoreDefinedViews() const266   Standard_Boolean MoreDefinedViews() const { return myDefinedViewsIterator.More(); }
267 
268   //! Go to the next Defined view (if there is not, DefinedView will raise an exception)
NextDefinedViews()269   void NextDefinedViews() { if (!myDefinedViews.IsEmpty()) myDefinedViewsIterator.Next(); }
270 
Handle(V3d_View)271   const Handle(V3d_View)& DefinedView() const { return myDefinedViewsIterator.Value(); }
272 
273 public: //! @name lights management
274 
275   //! Defines default lights:
276   //!  positional-light 0.3 0. 0.
277   //!  directional-light V3d_XnegYposZpos
278   //!  directional-light V3d_XnegYneg
279   //!  ambient-light
280   Standard_EXPORT void SetDefaultLights();
281 
282   //! Activates MyLight in the viewer.
283   Standard_EXPORT void SetLightOn (const Handle(V3d_Light)& theLight);
284 
285   //! Activates all the lights defined in this viewer.
286   Standard_EXPORT void SetLightOn();
287 
288   //! Deactivates MyLight in this viewer.
289   Standard_EXPORT void SetLightOff (const Handle(V3d_Light)& theLight);
290 
291   //! Deactivate all the Lights defined in this viewer.
292   Standard_EXPORT void SetLightOff();
293 
294   //! Adds Light in Sequence Of Lights.
295   Standard_EXPORT void AddLight (const Handle(V3d_Light)& theLight);
296 
297   //! Delete Light in Sequence Of Lights.
298   Standard_EXPORT void DelLight (const Handle(V3d_Light)& theLight);
299 
300   //! Updates the lights of all the views of a viewer.
301   Standard_EXPORT void UpdateLights();
302 
303   Standard_EXPORT Standard_Boolean IsGlobalLight (const Handle(V3d_Light)& TheLight) const;
304 
305   //! Return an iterator for defined lights.
ActiveLightIterator() const306   V3d_ListOfLightIterator ActiveLightIterator() const { return V3d_ListOfLightIterator (myActiveLights); }
307 
308   //! Initializes an internal iteratator on the active Lights.
InitActiveLights()309   void InitActiveLights() { myActiveLightsIterator.Initialize (myActiveLights); }
310 
311   //! returns true if there are more active Light(s) to return.
MoreActiveLights() const312   Standard_Boolean MoreActiveLights() const { return myActiveLightsIterator.More(); }
313 
314   //! Go to the next active Light (if there is not, ActiveLight() will raise an exception)
NextActiveLights()315   void NextActiveLights() { myActiveLightsIterator.Next(); }
316 
Handle(V3d_Light)317   const Handle(V3d_Light)& ActiveLight() const { return myActiveLightsIterator.Value(); }
318 
319 public:
320 
321   //! Return an iterator for defined lights.
DefinedLightIterator() const322   V3d_ListOfLightIterator DefinedLightIterator() const { return V3d_ListOfLightIterator (myDefinedLights); }
323 
324   //! Initializes an internal iterattor on the Defined Lights.
InitDefinedLights()325   void InitDefinedLights() { myDefinedLightsIterator.Initialize (myDefinedLights); }
326 
327   //! Returns true if there are more Defined Light(s) to return.
MoreDefinedLights() const328   Standard_Boolean MoreDefinedLights() const { return myDefinedLightsIterator.More(); }
329 
330   //! Go to the next Defined Light (if there is not, DefinedLight() will raise an exception)
NextDefinedLights()331   void NextDefinedLights() { if (!myDefinedLights.IsEmpty()) myDefinedLightsIterator.Next(); }
332 
Handle(V3d_Light)333   const Handle(V3d_Light)& DefinedLight() const { return myDefinedLightsIterator.Value(); }
334 
335 public: //! @name objects management
336 
337   //! Erase all Objects in All the views.
338   Standard_EXPORT void Erase() const;
339 
340   //! UnHighlight all Objects in All the views.
341   Standard_EXPORT void UnHighlight() const;
342 
343 public:
344 
345   //! returns true if the computed mode can be used.
ComputedMode() const346   Standard_Boolean ComputedMode() const { return myComputedMode; }
347 
348   //! Set if the computed mode can be used.
SetComputedMode(const Standard_Boolean theMode)349   void SetComputedMode (const Standard_Boolean theMode) { myComputedMode = theMode; }
350 
351   //! returns true if by default the computed mode must be used.
DefaultComputedMode() const352   Standard_Boolean DefaultComputedMode() const { return myDefaultComputedMode; }
353 
354   //! Set if by default the computed mode must be used.
SetDefaultComputedMode(const Standard_Boolean theMode)355   void SetDefaultComputedMode (const Standard_Boolean theMode) { myDefaultComputedMode = theMode; }
356 
357 public: //! @name privileged plane management
358 
PrivilegedPlane() const359   const gp_Ax3& PrivilegedPlane() const { return myPrivilegedPlane; }
360 
361   Standard_EXPORT void SetPrivilegedPlane (const gp_Ax3& thePlane);
362 
363   Standard_EXPORT void DisplayPrivilegedPlane (const Standard_Boolean theOnOff, const Standard_Real theSize = 1);
364 
365 public: //! @name grid management
366 
367   //! Activates the grid in all views of <me>.
368   Standard_EXPORT void ActivateGrid (const Aspect_GridType aGridType, const Aspect_GridDrawMode aGridDrawMode);
369 
370   //! Deactivates the grid in all views of <me>.
371   Standard_EXPORT void DeactivateGrid();
372 
373   //! Show/Don't show grid echo to the hit point.
374   //! If TRUE,the grid echo will be shown at ConvertToGrid() time.
375   Standard_EXPORT void SetGridEcho (const Standard_Boolean showGrid = Standard_True);
376 
377   //! Show grid echo <aMarker> to the hit point.
378   //! Warning: When the grid echo marker is not set,
379   //! a default marker is build with the attributes:
380   //! marker type : Aspect_TOM_STAR
381   //! marker color : Quantity_NOC_GRAY90
382   //! marker size : 3.0
383   Standard_EXPORT void SetGridEcho (const Handle(Graphic3d_AspectMarker3d)& aMarker);
384 
385   //! Returns TRUE when grid echo must be displayed at hit point.
GridEcho() const386   Standard_Boolean GridEcho() const { return myGridEcho; }
387 
388   //! Returns Standard_True if a grid is activated in <me>.
389   Standard_EXPORT Standard_Boolean IsActive() const;
390 
391   //! Returns the defined grid in <me>.
392   Standard_EXPORT Handle(Aspect_Grid) Grid() const;
393 
394   //! Returns the current grid type defined in <me>.
GridType() const395   Aspect_GridType GridType() const { return myGridType; }
396 
397   //! Returns the current grid draw mode defined in <me>.
398   Standard_EXPORT Aspect_GridDrawMode GridDrawMode() const;
399 
400   //! Returns the definition of the rectangular grid.
401   Standard_EXPORT void RectangularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& XStep, Standard_Real& YStep, Standard_Real& RotationAngle) const;
402 
403   //! Sets the definition of the rectangular grid.
404   //! <XOrigin>, <YOrigin> defines the origin of the grid.
405   //! <XStep> defines the interval between 2 vertical lines.
406   //! <YStep> defines the interval between 2 horizontal lines.
407   //! <RotationAngle> defines the rotation angle of the grid.
408   Standard_EXPORT void SetRectangularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real XStep, const Standard_Real YStep, const Standard_Real RotationAngle);
409 
410   //! Returns the definition of the circular grid.
411   Standard_EXPORT void CircularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& RadiusStep, Standard_Integer& DivisionNumber, Standard_Real& RotationAngle) const;
412 
413   //! Sets the definition of the circular grid.
414   //! <XOrigin>, <YOrigin> defines the origin of the grid.
415   //! <RadiusStep> defines the interval between 2 circles.
416   //! <DivisionNumber> defines the section number of one half circle.
417   //! <RotationAngle> defines the rotation angle of the grid.
418   Standard_EXPORT void SetCircularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real RadiusStep, const Standard_Integer DivisionNumber, const Standard_Real RotationAngle);
419 
420   //! Returns the location and the size of the grid.
421   Standard_EXPORT void CircularGridGraphicValues (Standard_Real& Radius, Standard_Real& OffSet) const;
422 
423   //! Sets the location and the size of the grid.
424   //! <XSize> defines the width of the grid.
425   //! <YSize> defines the height of the grid.
426   //! <OffSet> defines the displacement along the plane normal.
427   Standard_EXPORT void SetCircularGridGraphicValues (const Standard_Real Radius, const Standard_Real OffSet);
428 
429   //! Returns the location and the size of the grid.
430   Standard_EXPORT void RectangularGridGraphicValues (Standard_Real& XSize, Standard_Real& YSize, Standard_Real& OffSet) const;
431 
432   //! Sets the location and the size of the grid.
433   //! <XSize> defines the width of the grid.
434   //! <YSize> defines the height of the grid.
435   //! <OffSet> defines the displacement along the plane normal.
436   Standard_EXPORT void SetRectangularGridGraphicValues (const Standard_Real XSize, const Standard_Real YSize, const Standard_Real OffSet);
437 
438   //! Display grid echo at requested point in the view.
439   Standard_EXPORT void ShowGridEcho (const Handle(V3d_View)& theView, const Graphic3d_Vertex& thePoint);
440 
441   //! Temporarly hide grid echo.
442   Standard_EXPORT void HideGridEcho (const Handle(V3d_View)& theView);
443 
444 public: //! @name deprecated methods
445 
446   Standard_DEPRECATED("This constructor is deprecated")
447   Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver,
448                               const Standard_ExtString theName,
449                               const Standard_CString theDomain = "",
450                               const Standard_Real theViewSize = 1000.0,
451                               const V3d_TypeOfOrientation theViewProj = V3d_XposYnegZpos,
452                               const Quantity_Color& theViewBackground = Quantity_NOC_GRAY30,
453                               const V3d_TypeOfVisualization theVisualization = V3d_ZBUFFER,
454                               const Graphic3d_TypeOfShadingModel theShadingModel = Graphic3d_TOSM_VERTEX,
455                               const Standard_Boolean theComputedMode = Standard_True,
456                               const Standard_Boolean theDefaultComputedMode = Standard_True);
457 
458   //! Defines the default base colour of views attached
459   //! to the Viewer by supplying the type of colour
460   //! definition and the three component values.
461   Standard_DEPRECATED("This method is deprecated - SetDefaultBackgroundColor() taking Quantity_Color should be used instead")
SetDefaultBackgroundColor(const Quantity_TypeOfColor theType,const Standard_Real theV1,const Standard_Real theV2,const Standard_Real theV3)462   void SetDefaultBackgroundColor (const Quantity_TypeOfColor theType,
463                                   const Standard_Real theV1,
464                                   const Standard_Real theV2,
465                                   const Standard_Real theV3)
466   {
467     Standard_Real aV1 = theV1;
468     Standard_Real aV2 = theV2;
469     Standard_Real aV3 = theV3;
470     if (aV1 < 0.0) aV1 = 0.0; else if (aV1 > 1.0) aV1 = 1.0;
471     if (aV2 < 0.0) aV2 = 0.0; else if (aV2 > 1.0) aV2 = 1.0;
472     if (aV3 < 0.0) aV3 = 0.0; else if (aV3 > 1.0) aV3 = 1.0;
473     SetDefaultBackgroundColor (Quantity_Color (aV1, aV2, aV3, theType));
474   }
475 
476   Standard_DEPRECATED("This method is deprecated - DefaultBackgroundColor() without arguments should be used instead")
DefaultBackgroundColor(const Quantity_TypeOfColor theType,Standard_Real & theV1,Standard_Real & theV2,Standard_Real & theV3) const477   void DefaultBackgroundColor (const Quantity_TypeOfColor theType, Standard_Real& theV1, Standard_Real& theV2, Standard_Real& theV3) const
478   {
479     Quantity_Color aColor = DefaultBackgroundColor();
480     aColor.Values (theV1, theV2, theV3, theType) ;
481   }
482 
483 private:
484 
485   //! Returns the default background colour.
GetBackgroundColor() const486   const Aspect_Background& GetBackgroundColor() const { return myBackground; }
487 
488   //! Adds View in Sequence Of Views.
489   Standard_EXPORT void AddView (const Handle(V3d_View)& theView);
490 
491   //! Delete View in Sequence Of Views.
492   Standard_EXPORT void DelView (const Handle(V3d_View)& theView);
493 
494 private:
495 
496   Handle(Graphic3d_GraphicDriver) myDriver;
497   Handle(Graphic3d_StructureManager) myStructureManager;
498   TColStd_MapOfInteger myLayerIds;
499   Aspect_GenId myZLayerGenId;
500 
501   V3d_ListOfView  myDefinedViews;
502   V3d_ListOfView  myActiveViews;
503   V3d_ListOfLight myDefinedLights;
504   V3d_ListOfLight myActiveLights;
505 
506   Aspect_Background myBackground;
507   Aspect_GradientBackground myGradientBackground;
508   Standard_Real myViewSize;
509   V3d_TypeOfOrientation myViewProj;
510   V3d_TypeOfVisualization myVisualization;
511   Graphic3d_TypeOfShadingModel myShadingModel;
512   V3d_TypeOfView myDefaultTypeOfView;
513   Graphic3d_RenderingParams myDefaultRenderingParams;
514 
515   V3d_ListOfView::Iterator  myActiveViewsIterator;
516   V3d_ListOfView::Iterator  myDefinedViewsIterator;
517   V3d_ListOfLight::Iterator myActiveLightsIterator;
518   V3d_ListOfLight::Iterator myDefinedLightsIterator;
519 
520   Standard_Boolean myComputedMode;
521   Standard_Boolean myDefaultComputedMode;
522 
523   gp_Ax3 myPrivilegedPlane;
524   Handle(Graphic3d_Structure) myPlaneStructure;
525   Standard_Boolean myDisplayPlane;
526   Standard_Real myDisplayPlaneLength;
527 
528   Handle(V3d_RectangularGrid) myRGrid;
529   Handle(V3d_CircularGrid) myCGrid;
530   Aspect_GridType myGridType;
531   Standard_Boolean myGridEcho;
532   Handle(Graphic3d_Structure) myGridEchoStructure;
533   Handle(Graphic3d_Group) myGridEchoGroup;
534   Handle(Graphic3d_AspectMarker3d) myGridEchoAspect;
535   Graphic3d_Vertex myGridEchoLastVert;
536 
537 };
538 
539 DEFINE_STANDARD_HANDLE(V3d_Viewer, Standard_Transient)
540 
541 #endif // _V3d_Viewer_HeaderFile
542