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