File indexing completed on 2026-07-24 09:18:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _V3d_Viewer_HeaderFile
0018 #define _V3d_Viewer_HeaderFile
0019
0020 #include <Aspect_GridDrawMode.hxx>
0021 #include <Aspect_GridType.hxx>
0022 #include <Graphic3d_StructureManager.hxx>
0023 #include <Graphic3d_Vertex.hxx>
0024 #include <Graphic3d_ZLayerSettings.hxx>
0025 #include <TColStd_MapOfInteger.hxx>
0026 #include <TColStd_SequenceOfInteger.hxx>
0027 #include <TCollection_ExtendedString.hxx>
0028 #include <V3d_ListOfLight.hxx>
0029 #include <V3d_ListOfView.hxx>
0030 #include <V3d_TypeOfOrientation.hxx>
0031 #include <V3d_TypeOfView.hxx>
0032 #include <V3d_TypeOfVisualization.hxx>
0033 #include <Quantity_Color.hxx>
0034
0035 class Aspect_Grid;
0036 class Graphic3d_AspectMarker3d;
0037 class Graphic3d_GraphicDriver;
0038 class Graphic3d_Group;
0039 class Graphic3d_Structure;
0040 class V3d_CircularGrid;
0041 class V3d_RectangularGrid;
0042 class V3d_View;
0043
0044
0045
0046
0047
0048 class V3d_Viewer : public Standard_Transient
0049 {
0050 friend class V3d_View;
0051 DEFINE_STANDARD_RTTIEXT(V3d_Viewer, Standard_Transient)
0052 public:
0053
0054
0055
0056
0057 Standard_EXPORT V3d_Viewer(const Handle(Graphic3d_GraphicDriver)& theDriver);
0058
0059
0060 Standard_EXPORT Standard_Boolean IfMoreViews() const;
0061
0062
0063 Standard_EXPORT Handle(V3d_View) CreateView();
0064
0065
0066 Standard_EXPORT void SetViewOn();
0067
0068
0069
0070 Standard_EXPORT void SetViewOn(const Handle(V3d_View)& theView);
0071
0072
0073
0074 Standard_EXPORT void SetViewOff();
0075
0076
0077
0078
0079 Standard_EXPORT void SetViewOff(const Handle(V3d_View)& theView);
0080
0081
0082 void Update() { Redraw(); }
0083
0084
0085
0086
0087
0088 Standard_EXPORT void Redraw() const;
0089
0090
0091 Standard_EXPORT void RedrawImmediate() const;
0092
0093
0094 Standard_EXPORT void Invalidate() const;
0095
0096
0097 Standard_EXPORT void Remove();
0098
0099
0100 const Handle(Graphic3d_GraphicDriver)& Driver() const { return myDriver; }
0101
0102
0103 Handle(Graphic3d_StructureManager) StructureManager() const { return myStructureManager; }
0104
0105
0106
0107 const Graphic3d_RenderingParams& DefaultRenderingParams() const
0108 {
0109 return myDefaultRenderingParams;
0110 }
0111
0112
0113 void SetDefaultRenderingParams(const Graphic3d_RenderingParams& theParams)
0114 {
0115 myDefaultRenderingParams = theParams;
0116 }
0117
0118
0119
0120 void SetDefaultBackgroundColor(const Quantity_Color& theColor)
0121 {
0122 myBackground.SetColor(theColor);
0123 }
0124
0125
0126 const Aspect_GradientBackground& GetGradientBackground() const { return myGradientBackground; }
0127
0128
0129
0130 void SetDefaultBgGradientColors(
0131 const Quantity_Color& theColor1,
0132 const Quantity_Color& theColor2,
0133 const Aspect_GradientFillMethod theFillStyle = Aspect_GradientFillMethod_Horizontal)
0134 {
0135 myGradientBackground.SetColors(theColor1, theColor2, theFillStyle);
0136 }
0137
0138
0139 Standard_Real DefaultViewSize() const { return myViewSize; }
0140
0141
0142 Standard_EXPORT void SetDefaultViewSize(const Standard_Real theSize);
0143
0144
0145 V3d_TypeOfOrientation DefaultViewProj() const { return myViewProj; }
0146
0147
0148 void SetDefaultViewProj(const V3d_TypeOfOrientation theOrientation)
0149 {
0150 myViewProj = theOrientation;
0151 }
0152
0153
0154 V3d_TypeOfVisualization DefaultVisualization() const { return myVisualization; }
0155
0156
0157 void SetDefaultVisualization(const V3d_TypeOfVisualization theType) { myVisualization = theType; }
0158
0159
0160 Graphic3d_TypeOfShadingModel DefaultShadingModel() const
0161 {
0162 return myDefaultRenderingParams.ShadingModel;
0163 }
0164
0165
0166 void SetDefaultShadingModel(const Graphic3d_TypeOfShadingModel theType)
0167 {
0168 myDefaultRenderingParams.ShadingModel = theType;
0169 }
0170
0171
0172
0173 V3d_TypeOfView DefaultTypeOfView() const { return myDefaultTypeOfView; }
0174
0175
0176
0177 void SetDefaultTypeOfView(const V3d_TypeOfView theType) { myDefaultTypeOfView = theType; }
0178
0179
0180 Quantity_Color DefaultBackgroundColor() const { return myBackground.Color(); }
0181
0182
0183 void DefaultBgGradientColors(Quantity_Color& theColor1, Quantity_Color& theColor2) const
0184 {
0185 myGradientBackground.Colors(theColor1, theColor2);
0186 }
0187
0188
0189
0190 Standard_EXPORT void GetAllZLayers(TColStd_SequenceOfInteger& theLayerSeq) const;
0191
0192
0193
0194
0195
0196
0197
0198
0199 Standard_Boolean AddZLayer(
0200 Graphic3d_ZLayerId& theLayerId,
0201 const Graphic3d_ZLayerSettings& theSettings = Graphic3d_ZLayerSettings())
0202 {
0203 return InsertLayerBefore(theLayerId, theSettings, Graphic3d_ZLayerId_Top);
0204 }
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216 Standard_EXPORT Standard_Boolean InsertLayerBefore(Graphic3d_ZLayerId& theNewLayerId,
0217 const Graphic3d_ZLayerSettings& theSettings,
0218 const Graphic3d_ZLayerId theLayerAfter);
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230 Standard_EXPORT Standard_Boolean InsertLayerAfter(Graphic3d_ZLayerId& theNewLayerId,
0231 const Graphic3d_ZLayerSettings& theSettings,
0232 const Graphic3d_ZLayerId theLayerBefore);
0233
0234
0235
0236
0237 Standard_EXPORT Standard_Boolean RemoveZLayer(const Graphic3d_ZLayerId theLayerId);
0238
0239
0240 Standard_EXPORT const Graphic3d_ZLayerSettings& ZLayerSettings(
0241 const Graphic3d_ZLayerId theLayerId) const;
0242
0243
0244 Standard_EXPORT void SetZLayerSettings(const Graphic3d_ZLayerId theLayerId,
0245 const Graphic3d_ZLayerSettings& theSettings);
0246
0247 public:
0248
0249 const V3d_ListOfView& ActiveViews() const { return myActiveViews; }
0250
0251
0252 V3d_ListOfViewIterator ActiveViewIterator() const
0253 {
0254 return V3d_ListOfViewIterator(myActiveViews);
0255 }
0256
0257
0258 Standard_Boolean LastActiveView() const { return myActiveViews.Extent() == 1; }
0259
0260 public:
0261
0262 const V3d_ListOfView& DefinedViews() const { return myDefinedViews; }
0263
0264
0265 V3d_ListOfViewIterator DefinedViewIterator() const
0266 {
0267 return V3d_ListOfViewIterator(myDefinedViews);
0268 }
0269
0270 public:
0271
0272
0273
0274
0275
0276 Standard_EXPORT void SetDefaultLights();
0277
0278
0279 Standard_EXPORT void SetLightOn(const Handle(V3d_Light)& theLight);
0280
0281
0282 Standard_EXPORT void SetLightOn();
0283
0284
0285 Standard_EXPORT void SetLightOff(const Handle(V3d_Light)& theLight);
0286
0287
0288 Standard_EXPORT void SetLightOff();
0289
0290
0291 Standard_EXPORT void AddLight(const Handle(V3d_Light)& theLight);
0292
0293
0294 Standard_EXPORT void DelLight(const Handle(V3d_Light)& theLight);
0295
0296
0297 Standard_EXPORT void UpdateLights();
0298
0299 Standard_EXPORT Standard_Boolean IsGlobalLight(const Handle(V3d_Light)& TheLight) const;
0300
0301
0302 const V3d_ListOfLight& ActiveLights() const { return myActiveLights; }
0303
0304
0305 V3d_ListOfLightIterator ActiveLightIterator() const
0306 {
0307 return V3d_ListOfLightIterator(myActiveLights);
0308 }
0309
0310 public:
0311
0312 const V3d_ListOfLight& DefinedLights() const { return myDefinedLights; }
0313
0314
0315 V3d_ListOfLightIterator DefinedLightIterator() const
0316 {
0317 return V3d_ListOfLightIterator(myDefinedLights);
0318 }
0319
0320 public:
0321
0322 Standard_EXPORT void Erase() const;
0323
0324
0325 Standard_EXPORT void UnHighlight() const;
0326
0327 public:
0328
0329 Standard_Boolean ComputedMode() const { return myComputedMode; }
0330
0331
0332 void SetComputedMode(const Standard_Boolean theMode) { myComputedMode = theMode; }
0333
0334
0335 Standard_Boolean DefaultComputedMode() const { return myDefaultComputedMode; }
0336
0337
0338 void SetDefaultComputedMode(const Standard_Boolean theMode) { myDefaultComputedMode = theMode; }
0339
0340 public:
0341 const gp_Ax3& PrivilegedPlane() const { return myPrivilegedPlane; }
0342
0343 Standard_EXPORT void SetPrivilegedPlane(const gp_Ax3& thePlane);
0344
0345 Standard_EXPORT void DisplayPrivilegedPlane(const Standard_Boolean theOnOff,
0346 const Standard_Real theSize = 1);
0347
0348 public:
0349
0350 Standard_EXPORT void ActivateGrid(const Aspect_GridType aGridType,
0351 const Aspect_GridDrawMode aGridDrawMode);
0352
0353
0354 Standard_EXPORT void DeactivateGrid();
0355
0356
0357
0358 Standard_EXPORT void SetGridEcho(const Standard_Boolean showGrid = Standard_True);
0359
0360
0361
0362
0363
0364
0365
0366 Standard_EXPORT void SetGridEcho(const Handle(Graphic3d_AspectMarker3d)& aMarker);
0367
0368
0369 Standard_Boolean GridEcho() const { return myGridEcho; }
0370
0371
0372 Standard_EXPORT Standard_Boolean IsGridActive();
0373
0374
0375 Handle(Aspect_Grid) Grid(bool theToCreate = true) { return Grid(myGridType, theToCreate); }
0376
0377
0378 Standard_EXPORT Handle(Aspect_Grid) Grid(Aspect_GridType theGridType, bool theToCreate = true);
0379
0380
0381 Aspect_GridType GridType() const { return myGridType; }
0382
0383
0384 Standard_EXPORT Aspect_GridDrawMode GridDrawMode();
0385
0386
0387 Standard_EXPORT void RectangularGridValues(Standard_Real& theXOrigin,
0388 Standard_Real& theYOrigin,
0389 Standard_Real& theXStep,
0390 Standard_Real& theYStep,
0391 Standard_Real& theRotationAngle);
0392
0393
0394
0395
0396
0397
0398 Standard_EXPORT void SetRectangularGridValues(const Standard_Real XOrigin,
0399 const Standard_Real YOrigin,
0400 const Standard_Real XStep,
0401 const Standard_Real YStep,
0402 const Standard_Real RotationAngle);
0403
0404
0405 Standard_EXPORT void CircularGridValues(Standard_Real& theXOrigin,
0406 Standard_Real& theYOrigin,
0407 Standard_Real& theRadiusStep,
0408 Standard_Integer& theDivisionNumber,
0409 Standard_Real& theRotationAngle);
0410
0411
0412
0413
0414
0415
0416 Standard_EXPORT void SetCircularGridValues(const Standard_Real XOrigin,
0417 const Standard_Real YOrigin,
0418 const Standard_Real RadiusStep,
0419 const Standard_Integer DivisionNumber,
0420 const Standard_Real RotationAngle);
0421
0422
0423 Standard_EXPORT void CircularGridGraphicValues(Standard_Real& theRadius,
0424 Standard_Real& theOffSet);
0425
0426
0427
0428
0429
0430 Standard_EXPORT void SetCircularGridGraphicValues(const Standard_Real Radius,
0431 const Standard_Real OffSet);
0432
0433
0434 Standard_EXPORT void RectangularGridGraphicValues(Standard_Real& theXSize,
0435 Standard_Real& theYSize,
0436 Standard_Real& theOffSet);
0437
0438
0439
0440
0441
0442 Standard_EXPORT void SetRectangularGridGraphicValues(const Standard_Real XSize,
0443 const Standard_Real YSize,
0444 const Standard_Real OffSet);
0445
0446
0447 Standard_EXPORT void ShowGridEcho(const Handle(V3d_View)& theView,
0448 const Graphic3d_Vertex& thePoint);
0449
0450
0451 Standard_EXPORT void HideGridEcho(const Handle(V3d_View)& theView);
0452
0453 public:
0454
0455 Standard_DEPRECATED("Deprecated method - IsGridActive() should be used instead")
0456
0457 Standard_Boolean IsActive() { return IsGridActive(); }
0458
0459
0460 Standard_DEPRECATED("Deprecated method - ActiveViews() should be used instead")
0461
0462 void InitActiveViews() { myActiveViewsIterator.Initialize(myActiveViews); }
0463
0464
0465 Standard_DEPRECATED("Deprecated method - ActiveViews() should be used instead")
0466
0467 Standard_Boolean MoreActiveViews() const { return myActiveViewsIterator.More(); }
0468
0469
0470 Standard_DEPRECATED("Deprecated method - ActiveViews() should be used instead")
0471
0472 void NextActiveViews()
0473 {
0474 if (!myActiveViews.IsEmpty())
0475 myActiveViewsIterator.Next();
0476 }
0477
0478 Standard_DEPRECATED("Deprecated method - ActiveViews() should be used instead")
0479
0480 const Handle(V3d_View)& ActiveView() const { return myActiveViewsIterator.Value(); }
0481
0482
0483 Standard_DEPRECATED("Deprecated method - DefinedViews() should be used instead")
0484
0485 void InitDefinedViews() { myDefinedViewsIterator.Initialize(myDefinedViews); }
0486
0487
0488 Standard_DEPRECATED("Deprecated method - DefinedViews() should be used instead")
0489
0490 Standard_Boolean MoreDefinedViews() const { return myDefinedViewsIterator.More(); }
0491
0492
0493 Standard_DEPRECATED("Deprecated method - DefinedViews() should be used instead")
0494
0495 void NextDefinedViews()
0496 {
0497 if (!myDefinedViews.IsEmpty())
0498 myDefinedViewsIterator.Next();
0499 }
0500
0501 Standard_DEPRECATED("Deprecated method - DefinedViews() should be used instead")
0502
0503 const Handle(V3d_View)& DefinedView() const { return myDefinedViewsIterator.Value(); }
0504
0505
0506 Standard_DEPRECATED("Deprecated method - ActiveLights() should be used instead")
0507
0508 void InitActiveLights() { myActiveLightsIterator.Initialize(myActiveLights); }
0509
0510
0511 Standard_DEPRECATED("Deprecated method - ActiveLights() should be used instead")
0512
0513 Standard_Boolean MoreActiveLights() const { return myActiveLightsIterator.More(); }
0514
0515
0516 Standard_DEPRECATED("Deprecated method - ActiveLights() should be used instead")
0517
0518 void NextActiveLights() { myActiveLightsIterator.Next(); }
0519
0520 Standard_DEPRECATED("Deprecated method - ActiveLights() should be used instead")
0521
0522 const Handle(V3d_Light)& ActiveLight() const { return myActiveLightsIterator.Value(); }
0523
0524
0525 Standard_DEPRECATED("Deprecated method - DefinedLights() should be used instead")
0526
0527 void InitDefinedLights() { myDefinedLightsIterator.Initialize(myDefinedLights); }
0528
0529
0530 Standard_DEPRECATED("Deprecated method - DefinedLights() should be used instead")
0531
0532 Standard_Boolean MoreDefinedLights() const { return myDefinedLightsIterator.More(); }
0533
0534
0535 Standard_DEPRECATED("Deprecated method - DefinedLights() should be used instead")
0536
0537 void NextDefinedLights()
0538 {
0539 if (!myDefinedLights.IsEmpty())
0540 myDefinedLightsIterator.Next();
0541 }
0542
0543 Standard_DEPRECATED("Deprecated method - DefinedLights() should be used instead")
0544
0545 const Handle(V3d_Light)& DefinedLight() const { return myDefinedLightsIterator.Value(); }
0546
0547
0548 Standard_EXPORT void DumpJson(Standard_OStream& theOStream, Standard_Integer theDepth = -1) const;
0549
0550 private:
0551
0552 const Aspect_Background& GetBackgroundColor() const { return myBackground; }
0553
0554
0555 Standard_EXPORT void AddView(const Handle(V3d_View)& theView);
0556
0557
0558 Standard_EXPORT void DelView(const V3d_View* theView);
0559
0560 private:
0561 Handle(Graphic3d_GraphicDriver) myDriver;
0562 Handle(Graphic3d_StructureManager) myStructureManager;
0563 TColStd_MapOfInteger myLayerIds;
0564 Aspect_GenId myZLayerGenId;
0565
0566 V3d_ListOfView myDefinedViews;
0567 V3d_ListOfView myActiveViews;
0568 V3d_ListOfLight myDefinedLights;
0569 V3d_ListOfLight myActiveLights;
0570
0571 Aspect_Background myBackground;
0572 Aspect_GradientBackground myGradientBackground;
0573 Standard_Real myViewSize;
0574 V3d_TypeOfOrientation myViewProj;
0575 V3d_TypeOfVisualization myVisualization;
0576 V3d_TypeOfView myDefaultTypeOfView;
0577 Graphic3d_RenderingParams myDefaultRenderingParams;
0578
0579 V3d_ListOfView::Iterator myActiveViewsIterator;
0580 V3d_ListOfView::Iterator myDefinedViewsIterator;
0581 V3d_ListOfLight::Iterator myActiveLightsIterator;
0582 V3d_ListOfLight::Iterator myDefinedLightsIterator;
0583
0584 Standard_Boolean myComputedMode;
0585 Standard_Boolean myDefaultComputedMode;
0586
0587 gp_Ax3 myPrivilegedPlane;
0588 Handle(Graphic3d_Structure) myPlaneStructure;
0589 Standard_Boolean myDisplayPlane;
0590 Standard_Real myDisplayPlaneLength;
0591
0592 Handle(V3d_RectangularGrid) myRGrid;
0593 Handle(V3d_CircularGrid) myCGrid;
0594 Aspect_GridType myGridType;
0595 Standard_Boolean myGridEcho;
0596 Handle(Graphic3d_Structure) myGridEchoStructure;
0597 Handle(Graphic3d_Group) myGridEchoGroup;
0598 Handle(Graphic3d_AspectMarker3d) myGridEchoAspect;
0599 Graphic3d_Vertex myGridEchoLastVert;
0600 };
0601
0602 DEFINE_STANDARD_HANDLE(V3d_Viewer, Standard_Transient)
0603
0604 #endif