0029367: Visualization - simplify interface of V3d_View and V3d_Viewer
[occt.git] / src / V3d / V3d_Viewer.hxx
CommitLineData
42cf5bc1 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
c357e426 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>
dc89236f 29#include <Graphic3d_TypeOfShadingModel.hxx>
c357e426 30#include <Graphic3d_Vertex.hxx>
31#include <Graphic3d_ZLayerSettings.hxx>
32
42cf5bc1 33#include <Standard.hxx>
c357e426 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>
42cf5bc1 39#include <Standard_Type.hxx>
40
c357e426 41#include <TColStd_MapOfInteger.hxx>
42#include <TColStd_ListIteratorOfListOfTransient.hxx>
43#include <TColStd_SequenceOfInteger.hxx>
42cf5bc1 44#include <TCollection_AsciiString.hxx>
c357e426 45#include <TCollection_ExtendedString.hxx>
46
6a24c6de 47#include <V3d_ListOfLight.hxx>
48#include <V3d_ListOfView.hxx>
42cf5bc1 49#include <V3d_TypeOfOrientation.hxx>
42cf5bc1 50#include <V3d_TypeOfView.hxx>
c357e426 51#include <V3d_TypeOfVisualization.hxx>
52
6a24c6de 53#include <Quantity_Color.hxx>
c357e426 54
55class Aspect_Grid;
56class Graphic3d_AspectMarker3d;
42cf5bc1 57class Graphic3d_GraphicDriver;
42cf5bc1 58class Graphic3d_Group;
c357e426 59class Graphic3d_Structure;
42cf5bc1 60class V3d_BadValue;
c357e426 61class V3d_CircularGrid;
c357e426 62class V3d_RectangularGrid;
42cf5bc1 63class V3d_View;
64class Quantity_Color;
42cf5bc1 65
42cf5bc1 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).
6a24c6de 70class V3d_Viewer : public Standard_Transient
42cf5bc1 71{
6a24c6de 72 friend class V3d_View;
6a24c6de 73 DEFINE_STANDARD_RTTIEXT(V3d_Viewer, Standard_Transient)
42cf5bc1 74public:
75
6a24c6de 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.
42cf5bc1 86 Standard_EXPORT Handle(V3d_View) CreateView();
87
6a24c6de 88 //! Activates all of the views of a viewer attached to a window.
42cf5bc1 89 Standard_EXPORT void SetViewOn();
90
6a24c6de 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
42cf5bc1 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 .
6a24c6de 102 Standard_EXPORT void SetViewOff (const Handle(V3d_View)& theView);
42cf5bc1 103
104 //! Deprecated, Redraw() should be used instead.
6a24c6de 105 void Update() { Redraw(); }
106
42cf5bc1 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();
6a24c6de 121
122 //! Return Graphic Driver instance.
123 const Handle(Graphic3d_GraphicDriver)& Driver() const { return myDriver; }
124
125 //! Returns the structure manager associated to this viewer.
126 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.
130 const Graphic3d_RenderingParams& DefaultRenderingParams() const { return myDefaultRenderingParams; }
131
132 //! Set default Rendering Parameters.
133 void SetDefaultRenderingParams (const Graphic3d_RenderingParams& theParams) { myDefaultRenderingParams = theParams; }
134
42cf5bc1 135 //! Defines the default background colour of views
42cf5bc1 136 //! attached to the viewer by supplying the color object
6a24c6de 137 void SetDefaultBackgroundColor (const Quantity_Color& theColor) { myBackground.SetColor (theColor); }
138
139 //! Returns the gradient background of the view.
140 const Aspect_GradientBackground& GetGradientBackground() const { return myGradientBackground; }
42cf5bc1 141
142 //! Defines the default gradient background colours of views
143 //! attached to the viewer by supplying the colour objects
6a24c6de 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.
152 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.
158 V3d_TypeOfOrientation DefaultViewProj() const { return myViewProj; }
159
160 //! Sets the default projection for creating views in the viewer.
161 void SetDefaultViewProj (const V3d_TypeOfOrientation theOrientation) { myViewProj = theOrientation; }
162
163 //! Returns the default type of Visualization.
164 V3d_TypeOfVisualization DefaultVisualization() const { return myVisualization; }
165
166 //! Gives the default visualization mode.
167 void SetDefaultVisualization (const V3d_TypeOfVisualization theType) { myVisualization = theType; }
168
169 //! Returns the default type of Shading
dc89236f 170 Graphic3d_TypeOfShadingModel DefaultShadingModel() const { return myShadingModel; }
c357e426 171
42cf5bc1 172 //! Gives the default type of SHADING.
dc89236f 173 void SetDefaultShadingModel (const Graphic3d_TypeOfShadingModel theType) { myShadingModel = theType; }
6a24c6de 174
9e04ccdc 175 //! Returns the default type of View (orthographic or perspective projection) to be returned by CreateView() method.
176 V3d_TypeOfView DefaultTypeOfView() const { return myDefaultTypeOfView; }
177
178 //! Set the default type of View (orthographic or perspective projection) to be returned by CreateView() method.
6a24c6de 179 void SetDefaultTypeOfView (const V3d_TypeOfView theType) { myDefaultTypeOfView = theType; }
180
181 //! Returns the default background colour object.
182 Quantity_Color DefaultBackgroundColor() const { return myBackground.Color(); }
183
184 //! Returns the gradient background colour objects of the view.
185 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.
1c728f2d 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
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);
6a24c6de 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.
8f138407 230 Standard_EXPORT Standard_Boolean RemoveZLayer (const Graphic3d_ZLayerId theLayerId);
6a24c6de 231
232 //! Returns the settings of a single Z layer.
1c728f2d 233 Standard_EXPORT const Graphic3d_ZLayerSettings& ZLayerSettings (const Graphic3d_ZLayerId theLayerId) const;
6a24c6de 234
235 //! Sets the settings for a single Z layer.
8f138407 236 Standard_EXPORT void SetZLayerSettings (const Graphic3d_ZLayerId theLayerId, const Graphic3d_ZLayerSettings& theSettings);
6a24c6de 237
238public:
239
f7fc0c03 240 //! Return a list of active views.
241 const V3d_ListOfView& ActiveViews() const { return myActiveViews; }
242
6a24c6de 243 //! Return an iterator for active views.
244 V3d_ListOfViewIterator ActiveViewIterator() const { return V3d_ListOfViewIterator (myActiveViews); }
245
6a24c6de 246 //! returns true if there is only one active view.
247 Standard_Boolean LastActiveView() const { return myActiveViews.Extent() == 1; }
248
249public:
250
f7fc0c03 251 //! Return a list of defined views.
252 const V3d_ListOfView& DefinedViews() const { return myDefinedViews; }
253
6a24c6de 254 //! Return an iterator for defined views.
255 V3d_ListOfViewIterator DefinedViewIterator() const { return V3d_ListOfViewIterator (myDefinedViews); }
256
6a24c6de 257public: //! @name lights management
258
259 //! Defines default lights:
260 //! positional-light 0.3 0. 0.
261 //! directional-light V3d_XnegYposZpos
262 //! directional-light V3d_XnegYneg
263 //! ambient-light
264 Standard_EXPORT void SetDefaultLights();
265
42cf5bc1 266 //! Activates MyLight in the viewer.
6a24c6de 267 Standard_EXPORT void SetLightOn (const Handle(V3d_Light)& theLight);
42cf5bc1 268
269 //! Activates all the lights defined in this viewer.
270 Standard_EXPORT void SetLightOn();
271
c357e426 272 //! Deactivates MyLight in this viewer.
6a24c6de 273 Standard_EXPORT void SetLightOff (const Handle(V3d_Light)& theLight);
42cf5bc1 274
275 //! Deactivate all the Lights defined in this viewer.
276 Standard_EXPORT void SetLightOff();
992ed6b3 277
278 //! Adds Light in Sequence Of Lights.
279 Standard_EXPORT void AddLight (const Handle(V3d_Light)& theLight);
280
42cf5bc1 281 //! Delete Light in Sequence Of Lights.
6a24c6de 282 Standard_EXPORT void DelLight (const Handle(V3d_Light)& theLight);
42cf5bc1 283
6a24c6de 284 //! Updates the lights of all the views of a viewer.
285 Standard_EXPORT void UpdateLights();
286
42cf5bc1 287 Standard_EXPORT Standard_Boolean IsGlobalLight (const Handle(V3d_Light)& TheLight) const;
6a24c6de 288
f7fc0c03 289 //! Return a list of active lights.
290 const V3d_ListOfLight& ActiveLights() const { return myActiveLights; }
291
6a24c6de 292 //! Return an iterator for defined lights.
293 V3d_ListOfLightIterator ActiveLightIterator() const { return V3d_ListOfLightIterator (myActiveLights); }
294
6a24c6de 295public:
296
f7fc0c03 297 //! Return a list of defined lights.
298 const V3d_ListOfLight& DefinedLights() const { return myDefinedLights; }
299
6a24c6de 300 //! Return an iterator for defined lights.
301 V3d_ListOfLightIterator DefinedLightIterator() const { return V3d_ListOfLightIterator (myDefinedLights); }
302
6a24c6de 303public: //! @name objects management
304
305 //! Erase all Objects in All the views.
306 Standard_EXPORT void Erase() const;
307
308 //! UnHighlight all Objects in All the views.
309 Standard_EXPORT void UnHighlight() const;
310
311public:
312
42cf5bc1 313 //! returns true if the computed mode can be used.
6a24c6de 314 Standard_Boolean ComputedMode() const { return myComputedMode; }
315
316 //! Set if the computed mode can be used.
317 void SetComputedMode (const Standard_Boolean theMode) { myComputedMode = theMode; }
318
42cf5bc1 319 //! returns true if by default the computed mode must be used.
6a24c6de 320 Standard_Boolean DefaultComputedMode() const { return myDefaultComputedMode; }
321
322 //! Set if by default the computed mode must be used.
323 void SetDefaultComputedMode (const Standard_Boolean theMode) { myDefaultComputedMode = theMode; }
324
325public: //! @name privileged plane management
326
67b3d2a8 327 const gp_Ax3& PrivilegedPlane() const { return myPrivilegedPlane; }
6a24c6de 328
329 Standard_EXPORT void SetPrivilegedPlane (const gp_Ax3& thePlane);
330
ee2be2a8 331 Standard_EXPORT void DisplayPrivilegedPlane (const Standard_Boolean theOnOff, const Standard_Real theSize = 1);
6a24c6de 332
333public: //! @name grid management
334
42cf5bc1 335 //! Activates the grid in all views of <me>.
336 Standard_EXPORT void ActivateGrid (const Aspect_GridType aGridType, const Aspect_GridDrawMode aGridDrawMode);
337
338 //! Deactivates the grid in all views of <me>.
339 Standard_EXPORT void DeactivateGrid();
340
341 //! Show/Don't show grid echo to the hit point.
342 //! If TRUE,the grid echo will be shown at ConvertToGrid() time.
343 Standard_EXPORT void SetGridEcho (const Standard_Boolean showGrid = Standard_True);
344
345 //! Show grid echo <aMarker> to the hit point.
346 //! Warning: When the grid echo marker is not set,
347 //! a default marker is build with the attributes:
348 //! marker type : Aspect_TOM_STAR
349 //! marker color : Quantity_NOC_GRAY90
350 //! marker size : 3.0
351 Standard_EXPORT void SetGridEcho (const Handle(Graphic3d_AspectMarker3d)& aMarker);
352
67b3d2a8 353 //! Returns TRUE when grid echo must be displayed at hit point.
354 Standard_Boolean GridEcho() const { return myGridEcho; }
42cf5bc1 355
356 //! Returns Standard_True if a grid is activated in <me>.
357 Standard_EXPORT Standard_Boolean IsActive() const;
358
359 //! Returns the defined grid in <me>.
360 Standard_EXPORT Handle(Aspect_Grid) Grid() const;
67b3d2a8 361
42cf5bc1 362 //! Returns the current grid type defined in <me>.
67b3d2a8 363 Aspect_GridType GridType() const { return myGridType; }
42cf5bc1 364
365 //! Returns the current grid draw mode defined in <me>.
366 Standard_EXPORT Aspect_GridDrawMode GridDrawMode() const;
367
368 //! Returns the definition of the rectangular grid.
ee2be2a8 369 Standard_EXPORT void RectangularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& XStep, Standard_Real& YStep, Standard_Real& RotationAngle) const;
42cf5bc1 370
371 //! Sets the definition of the rectangular grid.
372 //! <XOrigin>, <YOrigin> defines the origin of the grid.
373 //! <XStep> defines the interval between 2 vertical lines.
374 //! <YStep> defines the interval between 2 horizontal lines.
375 //! <RotationAngle> defines the rotation angle of the grid.
ee2be2a8 376 Standard_EXPORT void SetRectangularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real XStep, const Standard_Real YStep, const Standard_Real RotationAngle);
42cf5bc1 377
378 //! Returns the definition of the circular grid.
ee2be2a8 379 Standard_EXPORT void CircularGridValues (Standard_Real& XOrigin, Standard_Real& YOrigin, Standard_Real& RadiusStep, Standard_Integer& DivisionNumber, Standard_Real& RotationAngle) const;
42cf5bc1 380
381 //! Sets the definition of the circular grid.
382 //! <XOrigin>, <YOrigin> defines the origin of the grid.
383 //! <RadiusStep> defines the interval between 2 circles.
384 //! <DivisionNumber> defines the section number of one half circle.
385 //! <RotationAngle> defines the rotation angle of the grid.
ee2be2a8 386 Standard_EXPORT void SetCircularGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real RadiusStep, const Standard_Integer DivisionNumber, const Standard_Real RotationAngle);
42cf5bc1 387
388 //! Returns the location and the size of the grid.
ee2be2a8 389 Standard_EXPORT void CircularGridGraphicValues (Standard_Real& Radius, Standard_Real& OffSet) const;
42cf5bc1 390
391 //! Sets the location and the size of the grid.
392 //! <XSize> defines the width of the grid.
393 //! <YSize> defines the height of the grid.
394 //! <OffSet> defines the displacement along the plane normal.
ee2be2a8 395 Standard_EXPORT void SetCircularGridGraphicValues (const Standard_Real Radius, const Standard_Real OffSet);
42cf5bc1 396
397 //! Returns the location and the size of the grid.
ee2be2a8 398 Standard_EXPORT void RectangularGridGraphicValues (Standard_Real& XSize, Standard_Real& YSize, Standard_Real& OffSet) const;
42cf5bc1 399
400 //! Sets the location and the size of the grid.
401 //! <XSize> defines the width of the grid.
402 //! <YSize> defines the height of the grid.
403 //! <OffSet> defines the displacement along the plane normal.
ee2be2a8 404 Standard_EXPORT void SetRectangularGridGraphicValues (const Standard_Real XSize, const Standard_Real YSize, const Standard_Real OffSet);
42cf5bc1 405
42cf5bc1 406 //! Display grid echo at requested point in the view.
407 Standard_EXPORT void ShowGridEcho (const Handle(V3d_View)& theView, const Graphic3d_Vertex& thePoint);
42cf5bc1 408
409 //! Temporarly hide grid echo.
410 Standard_EXPORT void HideGridEcho (const Handle(V3d_View)& theView);
c357e426 411
6a24c6de 412public: //! @name deprecated methods
413
414 Standard_DEPRECATED("This constructor is deprecated")
415 Standard_EXPORT V3d_Viewer (const Handle(Graphic3d_GraphicDriver)& theDriver,
416 const Standard_ExtString theName,
417 const Standard_CString theDomain = "",
ee2be2a8 418 const Standard_Real theViewSize = 1000.0,
6a24c6de 419 const V3d_TypeOfOrientation theViewProj = V3d_XposYnegZpos,
87432b82 420 const Quantity_Color& theViewBackground = Quantity_NOC_GRAY30,
6a24c6de 421 const V3d_TypeOfVisualization theVisualization = V3d_ZBUFFER,
dc89236f 422 const Graphic3d_TypeOfShadingModel theShadingModel = Graphic3d_TOSM_VERTEX,
6a24c6de 423 const Standard_Boolean theComputedMode = Standard_True,
424 const Standard_Boolean theDefaultComputedMode = Standard_True);
42cf5bc1 425
6a24c6de 426 //! Defines the default base colour of views attached
427 //! to the Viewer by supplying the type of colour
428 //! definition and the three component values.
429 Standard_DEPRECATED("This method is deprecated - SetDefaultBackgroundColor() taking Quantity_Color should be used instead")
430 void SetDefaultBackgroundColor (const Quantity_TypeOfColor theType,
ee2be2a8 431 const Standard_Real theV1,
432 const Standard_Real theV2,
433 const Standard_Real theV3)
6a24c6de 434 {
435 Standard_Real aV1 = theV1;
436 Standard_Real aV2 = theV2;
437 Standard_Real aV3 = theV3;
438 if (aV1 < 0.0) aV1 = 0.0; else if (aV1 > 1.0) aV1 = 1.0;
439 if (aV2 < 0.0) aV2 = 0.0; else if (aV2 > 1.0) aV2 = 1.0;
440 if (aV3 < 0.0) aV3 = 0.0; else if (aV3 > 1.0) aV3 = 1.0;
441 SetDefaultBackgroundColor (Quantity_Color (aV1, aV2, aV3, theType));
442 }
443
444 Standard_DEPRECATED("This method is deprecated - DefaultBackgroundColor() without arguments should be used instead")
ee2be2a8 445 void DefaultBackgroundColor (const Quantity_TypeOfColor theType, Standard_Real& theV1, Standard_Real& theV2, Standard_Real& theV3) const
6a24c6de 446 {
447 Quantity_Color aColor = DefaultBackgroundColor();
448 aColor.Values (theV1, theV2, theV3, theType) ;
449 }
42cf5bc1 450
f7fc0c03 451 //! Initializes an internal iterator on the active views.
452 Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead")
453 void InitActiveViews() { myActiveViewsIterator.Initialize (myActiveViews); }
454
455 //! Returns true if there are more active view(s) to return.
456 Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead")
457 Standard_Boolean MoreActiveViews() const { return myActiveViewsIterator.More(); }
458
459 //! Go to the next active view (if there is not, ActiveView will raise an exception)
460 Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead")
461 void NextActiveViews() { if (!myActiveViews.IsEmpty()) myActiveViewsIterator.Next(); }
462
463 Standard_DEPRECATED ("Deprecated method - ActiveViews() should be used instead")
464 const Handle(V3d_View)& ActiveView() const { return myActiveViewsIterator.Value(); }
465
466 //! Initializes an internal iterator on the Defined views.
467 Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead")
468 void InitDefinedViews() { myDefinedViewsIterator.Initialize (myDefinedViews); }
469
470 //! returns true if there are more Defined view(s) to return.
471 Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead")
472 Standard_Boolean MoreDefinedViews() const { return myDefinedViewsIterator.More(); }
473
474 //! Go to the next Defined view (if there is not, DefinedView will raise an exception)
475 Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead")
476 void NextDefinedViews() { if (!myDefinedViews.IsEmpty()) myDefinedViewsIterator.Next(); }
477
478 Standard_DEPRECATED ("Deprecated method - DefinedViews() should be used instead")
479 const Handle(V3d_View)& DefinedView() const { return myDefinedViewsIterator.Value(); }
480
481 //! Initializes an internal iteratator on the active Lights.
482 Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead")
483 void InitActiveLights() { myActiveLightsIterator.Initialize (myActiveLights); }
484
485 //! returns true if there are more active Light(s) to return.
486 Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead")
487 Standard_Boolean MoreActiveLights() const { return myActiveLightsIterator.More(); }
488
489 //! Go to the next active Light (if there is not, ActiveLight() will raise an exception)
490 Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead")
491 void NextActiveLights() { myActiveLightsIterator.Next(); }
492
493 Standard_DEPRECATED ("Deprecated method - ActiveLights() should be used instead")
494 const Handle(V3d_Light)& ActiveLight() const { return myActiveLightsIterator.Value(); }
495
496 //! Initializes an internal iterattor on the Defined Lights.
497 Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead")
498 void InitDefinedLights() { myDefinedLightsIterator.Initialize (myDefinedLights); }
499
500 //! Returns true if there are more Defined Light(s) to return.
501 Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead")
502 Standard_Boolean MoreDefinedLights() const { return myDefinedLightsIterator.More(); }
503
504 //! Go to the next Defined Light (if there is not, DefinedLight() will raise an exception)
505 Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead")
506 void NextDefinedLights() { if (!myDefinedLights.IsEmpty()) myDefinedLightsIterator.Next(); }
507
508 Standard_DEPRECATED ("Deprecated method - DefinedLights() should be used instead")
509 const Handle(V3d_Light)& DefinedLight() const { return myDefinedLightsIterator.Value(); }
510
42cf5bc1 511private:
512
42cf5bc1 513 //! Returns the default background colour.
6a24c6de 514 const Aspect_Background& GetBackgroundColor() const { return myBackground; }
515
42cf5bc1 516 //! Adds View in Sequence Of Views.
6a24c6de 517 Standard_EXPORT void AddView (const Handle(V3d_View)& theView);
42cf5bc1 518
519 //! Delete View in Sequence Of Views.
6a24c6de 520 Standard_EXPORT void DelView (const Handle(V3d_View)& theView);
42cf5bc1 521
c357e426 522private:
523
42cf5bc1 524 Handle(Graphic3d_GraphicDriver) myDriver;
c357e426 525 Handle(Graphic3d_StructureManager) myStructureManager;
6a24c6de 526 TColStd_MapOfInteger myLayerIds;
527 Aspect_GenId myZLayerGenId;
528
529 V3d_ListOfView myDefinedViews;
530 V3d_ListOfView myActiveViews;
531 V3d_ListOfLight myDefinedLights;
532 V3d_ListOfLight myActiveLights;
533
534 Aspect_Background myBackground;
535 Aspect_GradientBackground myGradientBackground;
536 Standard_Real myViewSize;
537 V3d_TypeOfOrientation myViewProj;
538 V3d_TypeOfVisualization myVisualization;
dc89236f 539 Graphic3d_TypeOfShadingModel myShadingModel;
6a24c6de 540 V3d_TypeOfView myDefaultTypeOfView;
832ae82d 541 Graphic3d_RenderingParams myDefaultRenderingParams;
6a24c6de 542
543 V3d_ListOfView::Iterator myActiveViewsIterator;
544 V3d_ListOfView::Iterator myDefinedViewsIterator;
545 V3d_ListOfLight::Iterator myActiveLightsIterator;
546 V3d_ListOfLight::Iterator myDefinedLightsIterator;
547
42cf5bc1 548 Standard_Boolean myComputedMode;
549 Standard_Boolean myDefaultComputedMode;
6a24c6de 550
42cf5bc1 551 gp_Ax3 myPrivilegedPlane;
552 Handle(Graphic3d_Structure) myPlaneStructure;
553 Standard_Boolean myDisplayPlane;
ee2be2a8 554 Standard_Real myDisplayPlaneLength;
6a24c6de 555
42cf5bc1 556 Handle(V3d_RectangularGrid) myRGrid;
557 Handle(V3d_CircularGrid) myCGrid;
558 Aspect_GridType myGridType;
559 Standard_Boolean myGridEcho;
560 Handle(Graphic3d_Structure) myGridEchoStructure;
561 Handle(Graphic3d_Group) myGridEchoGroup;
562 Handle(Graphic3d_AspectMarker3d) myGridEchoAspect;
563 Graphic3d_Vertex myGridEchoLastVert;
6a24c6de 564
42cf5bc1 565};
566
6a24c6de 567DEFINE_STANDARD_HANDLE(V3d_Viewer, Standard_Transient)
568
42cf5bc1 569#endif // _V3d_Viewer_HeaderFile