1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0028889: Visualization, V3d_View - View specific Graphic3d_Structure should be removed if the view is removed

V3d_View::Remove() - erase trihedron and grid structures from structure manager.
This commit is contained in:
kgv
2017-07-10 08:54:15 +03:00
parent 25e59720d6
commit 475c2302d4
15 changed files with 217 additions and 327 deletions

View File

@@ -11,14 +11,11 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
// Modified 23/02/98 : FMN ; Remplacement PI par Standard_PI
#include <Aspect_CircularGrid.hxx>
#include <Aspect_Grid.hxx>
#include <Standard_NegativeValue.hxx>
#include <Standard_NullValue.hxx>
#include <Standard_NumericError.hxx>
#include <Standard_Type.hxx>
IMPLEMENT_STANDARD_RTTIEXT(Aspect_CircularGrid,Aspect_Grid)

View File

@@ -28,12 +28,9 @@ class Standard_NegativeValue;
class Standard_NullValue;
class Standard_NumericError;
class Aspect_CircularGrid;
DEFINE_STANDARD_HANDLE(Aspect_CircularGrid, Aspect_Grid)
class Aspect_CircularGrid : public Aspect_Grid
{
DEFINE_STANDARD_RTTIEXT(Aspect_CircularGrid, Aspect_Grid)
public:
//! creates a new grid. By default this grid is not
@@ -49,7 +46,7 @@ public:
Standard_EXPORT void SetGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real RadiusStep, const Standard_Integer DivisionNumber, const Standard_Real RotationAngle);
//! returns the point of the grid the closest to the point X,Y
Standard_EXPORT void Compute (const Standard_Real X, const Standard_Real Y, Standard_Real& gridX, Standard_Real& gridY) const Standard_OVERRIDE;
Standard_EXPORT virtual void Compute (const Standard_Real X, const Standard_Real Y, Standard_Real& gridX, Standard_Real& gridY) const Standard_OVERRIDE;
//! returns the x step of the grid.
Standard_EXPORT Standard_Real RadiusStep() const;
@@ -57,9 +54,7 @@ public:
//! returns the x step of the grid.
Standard_EXPORT Standard_Integer DivisionNumber() const;
Standard_EXPORT void Init() Standard_OVERRIDE;
DEFINE_STANDARD_RTTIEXT(Aspect_CircularGrid,Aspect_Grid)
Standard_EXPORT virtual void Init() Standard_OVERRIDE;
private:
@@ -71,4 +66,6 @@ private:
};
DEFINE_STANDARD_HANDLE(Aspect_CircularGrid, Aspect_Grid)
#endif // _Aspect_CircularGrid_HeaderFile

View File

@@ -11,123 +11,96 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <Aspect_Grid.hxx>
#include <Quantity_Color.hxx>
#include <Standard_Type.hxx>
IMPLEMENT_STANDARD_RTTIEXT(Aspect_Grid,Standard_Transient)
Aspect_Grid::Aspect_Grid(
const Standard_Real anXOrigin,
const Standard_Real anYOrigin,
const Standard_Real anAngle,
const Quantity_Color& aColor,
const Quantity_Color& aTenthColor)
: myRotationAngle(anAngle),
myXOrigin(anXOrigin),
myYOrigin(anYOrigin),
myColor(aColor),
myTenthColor(aTenthColor),
myIsActive(Standard_False),
myDrawMode(Aspect_GDM_Lines)
Aspect_Grid::Aspect_Grid (const Standard_Real theXOrigin,
const Standard_Real theYOrigin,
const Standard_Real theAngle,
const Quantity_Color& theColor,
const Quantity_Color& theTenthColor)
: myRotationAngle (theAngle),
myXOrigin (theXOrigin),
myYOrigin (theYOrigin),
myColor (theColor),
myTenthColor (theTenthColor),
myIsActive (Standard_False),
myDrawMode (Aspect_GDM_Lines)
{
//
}
void Aspect_Grid::SetXOrigin(const Standard_Real anOrigin) {
myXOrigin = anOrigin;
void Aspect_Grid::SetXOrigin (const Standard_Real theOrigin)
{
myXOrigin = theOrigin;
Init();
UpdateDisplay();
}
void Aspect_Grid::SetYOrigin(const Standard_Real anOrigin) {
myYOrigin = anOrigin;
void Aspect_Grid::SetYOrigin (const Standard_Real theOrigin)
{
myYOrigin = theOrigin;
Init();
UpdateDisplay();
}
void Aspect_Grid::SetRotationAngle(const Standard_Real anAngle){
myRotationAngle = anAngle;
Init();
UpdateDisplay();
}
void Aspect_Grid::Rotate(const Standard_Real anAngle) {
myRotationAngle += anAngle;
Init();
UpdateDisplay();
}
void Aspect_Grid::Translate(const Standard_Real aDx,
const Standard_Real aDy) {
myXOrigin += aDx;
myYOrigin += aDy;
void Aspect_Grid::SetRotationAngle (const Standard_Real theAngle)
{
myRotationAngle = theAngle;
Init();
UpdateDisplay();
}
void Aspect_Grid::SetColors(const Quantity_Color& aColor,
const Quantity_Color& aTenthColor) {
myColor = aColor;
myTenthColor = aTenthColor;
void Aspect_Grid::Rotate (const Standard_Real theAngle)
{
myRotationAngle += theAngle;
Init();
UpdateDisplay();
}
void Aspect_Grid::Colors(Quantity_Color& aColor,
Quantity_Color& aTenthColor) const {
aColor = myColor;
aTenthColor = myTenthColor;
void Aspect_Grid::Translate (const Standard_Real theDx,
const Standard_Real theDy)
{
myXOrigin += theDx;
myYOrigin += theDy;
Init();
UpdateDisplay();
}
void Aspect_Grid::Hit(const Standard_Real X,
const Standard_Real Y,
Standard_Real& gridX,
Standard_Real& gridY) const {
if (myIsActive) {
Compute(X,Y,gridX,gridY);}
else{
gridX = X;
gridY = Y;
void Aspect_Grid::SetColors (const Quantity_Color& theColor,
const Quantity_Color& theTenthColor)
{
myColor = theColor;
myTenthColor = theTenthColor;
UpdateDisplay();
}
void Aspect_Grid::Colors (Quantity_Color& theColor,
Quantity_Color& theTenthColor) const
{
theColor = myColor;
theTenthColor = myTenthColor;
}
void Aspect_Grid::Hit (const Standard_Real theX,
const Standard_Real theY,
Standard_Real& theGridX,
Standard_Real& theGridY) const
{
if (myIsActive)
{
Compute (theX, theY, theGridX, theGridY);
}
else
{
theGridX = theX;
theGridY = theY;
}
}
void Aspect_Grid::Activate () {
myIsActive = Standard_True;
}
void Aspect_Grid::Deactivate () {
myIsActive = Standard_False;
}
Standard_Real Aspect_Grid::XOrigin() const {
return myXOrigin;
}
Standard_Real Aspect_Grid::YOrigin() const {
return myYOrigin;
}
Standard_Real Aspect_Grid::RotationAngle() const {
return myRotationAngle;
}
Standard_Boolean Aspect_Grid::IsActive() const {
return myIsActive;
}
void Aspect_Grid::Display() {}
void Aspect_Grid::Erase () const {}
void Aspect_Grid::UpdateDisplay () {}
Standard_Boolean Aspect_Grid::IsDisplayed() const {
return Standard_False;}
void Aspect_Grid::SetDrawMode(const Aspect_GridDrawMode aDrawMode) {
myDrawMode = aDrawMode;
void Aspect_Grid::SetDrawMode (const Aspect_GridDrawMode theDrawMode)
{
myDrawMode = theDrawMode;
UpdateDisplay();
}
Aspect_GridDrawMode Aspect_Grid::DrawMode() const {
return myDrawMode;
}

View File

@@ -25,12 +25,9 @@
#include <Aspect_GridDrawMode.hxx>
#include <Standard_Transient.hxx>
class Aspect_Grid;
DEFINE_STANDARD_HANDLE(Aspect_Grid, Standard_Transient)
class Aspect_Grid : public Standard_Transient
{
DEFINE_STANDARD_RTTIEXT(Aspect_Grid, Standard_Transient)
public:
//! defines the x Origin of the grid.
@@ -39,7 +36,7 @@ public:
//! defines the y Origin of the grid.
Standard_EXPORT void SetYOrigin (const Standard_Real anOrigin);
//! defines the orientation of the the grid.
//! defines the orientation of the grid.
Standard_EXPORT void SetRotationAngle (const Standard_Real anAngle);
//! Rotate the grid from a relative angle.
@@ -62,23 +59,23 @@ public:
//! activates the grid. The Hit method will return
//! gridx and gridx computed according to the steps
//! of the grid.
Standard_EXPORT void Activate();
void Activate() { myIsActive = Standard_True; }
//! deactivates the grid. The hit method will return
//! gridx and gridx as the enter value X & Y.
Standard_EXPORT void Deactivate();
void Deactivate() { myIsActive = Standard_False; }
//! returns the x Origin of the grid.
Standard_EXPORT Standard_Real XOrigin() const;
Standard_Real XOrigin() const { return myXOrigin; }
//! returns the x Origin of the grid.
Standard_EXPORT Standard_Real YOrigin() const;
Standard_Real YOrigin() const { return myYOrigin; }
//! returns the x Angle of the grid.
Standard_EXPORT Standard_Real RotationAngle() const;
Standard_Real RotationAngle() const { return myRotationAngle; }
//! Returns TRUE when the grid is active.
Standard_EXPORT Standard_Boolean IsActive() const;
Standard_Boolean IsActive() const { return myIsActive; }
//! Returns the colors of the grid.
Standard_EXPORT void Colors (Quantity_Color& aColor, Quantity_Color& aTenthColor) const;
@@ -87,41 +84,43 @@ public:
Standard_EXPORT void SetDrawMode (const Aspect_GridDrawMode aDrawMode);
//! Returns the grid aspect.
Standard_EXPORT Aspect_GridDrawMode DrawMode() const;
Aspect_GridDrawMode DrawMode() const { return myDrawMode; }
//! Display the grid at screen.
Standard_EXPORT virtual void Display();
Standard_EXPORT virtual void Display() = 0;
//! Erase the grid from screen.
Standard_EXPORT virtual void Erase() const;
Standard_EXPORT virtual void Erase() const = 0;
//! Returns TRUE when the grid is displayed at screen.
Standard_EXPORT virtual Standard_Boolean IsDisplayed() const;
Standard_EXPORT virtual Standard_Boolean IsDisplayed() const = 0;
Standard_EXPORT virtual void Init() = 0;
DEFINE_STANDARD_RTTIEXT(Aspect_Grid,Standard_Transient)
protected:
//! creates a new grid. By default this grid is not
//! active.
Standard_EXPORT Aspect_Grid(const Standard_Real anXOrigin = 0.0, const Standard_Real anYOrigin = 0.0, const Standard_Real aRotationAngle = 0, const Quantity_Color& aColor = Quantity_NOC_GRAY50, const Quantity_Color& aTenthColor = Quantity_NOC_GRAY70);
//! Creates a new grid. By default this grid is not active.
Standard_EXPORT Aspect_Grid (const Standard_Real theXOrigin = 0.0,
const Standard_Real theYOrigin = 0.0,
const Standard_Real theRotationAngle = 0,
const Quantity_Color& theColor = Quantity_NOC_GRAY50,
const Quantity_Color& theTenthColor = Quantity_NOC_GRAY70);
//! Updates the grid parameters.
Standard_EXPORT virtual void UpdateDisplay();
Standard_EXPORT virtual void UpdateDisplay() = 0;
protected:
Standard_Real myRotationAngle;
Standard_Real myXOrigin;
Standard_Real myYOrigin;
Quantity_Color myColor;
Quantity_Color myTenthColor;
private:
Standard_Boolean myIsActive;
Aspect_GridDrawMode myDrawMode;
};
DEFINE_STANDARD_HANDLE(Aspect_Grid, Standard_Transient)
#endif // _Aspect_Grid_HeaderFile

View File

@@ -11,13 +11,11 @@
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
// Modified 23/02/98 : FMN ; Remplacement PI par Standard_PI
#include <Aspect_RectangularGrid.hxx>
#include <Standard_NegativeValue.hxx>
#include <Standard_NullValue.hxx>
#include <Standard_NumericError.hxx>
#include <Standard_Type.hxx>
IMPLEMENT_STANDARD_RTTIEXT(Aspect_RectangularGrid,Aspect_Grid)
@@ -157,5 +155,3 @@ Standard_Boolean Aspect_RectangularGrid::CheckAngle(const Standard_Real alpha,
const Standard_Real beta) const {
return (Abs( Sin(alpha) * Cos(beta + M_PI / 2.) - Cos(alpha) * Sin(beta + M_PI / 2.)) != 0) ;
}

View File

@@ -27,15 +27,11 @@ class Standard_NegativeValue;
class Standard_NullValue;
class Standard_NumericError;
class Aspect_RectangularGrid;
DEFINE_STANDARD_HANDLE(Aspect_RectangularGrid, Aspect_Grid)
class Aspect_RectangularGrid : public Aspect_Grid
{
DEFINE_STANDARD_RTTIEXT(Aspect_RectangularGrid, Aspect_Grid)
public:
//! creates a new grid. By default this grid is not
//! active.
//! The first angle is given relatively to the horizontal.
@@ -56,7 +52,7 @@ public:
Standard_EXPORT void SetGridValues (const Standard_Real XOrigin, const Standard_Real YOrigin, const Standard_Real XStep, const Standard_Real YStep, const Standard_Real RotationAngle);
//! returns the point of the grid the closest to the point X,Y
Standard_EXPORT void Compute (const Standard_Real X, const Standard_Real Y, Standard_Real& gridX, Standard_Real& gridY) const Standard_OVERRIDE;
Standard_EXPORT virtual void Compute (const Standard_Real X, const Standard_Real Y, Standard_Real& gridX, Standard_Real& gridY) const Standard_OVERRIDE;
//! returns the x step of the grid.
Standard_EXPORT Standard_Real XStep() const;
@@ -70,14 +66,14 @@ public:
//! returns the y Angle of the grid, relatively to the vertical.
Standard_EXPORT Standard_Real SecondAngle() const;
Standard_EXPORT void Init() Standard_OVERRIDE;
DEFINE_STANDARD_RTTIEXT(Aspect_RectangularGrid,Aspect_Grid)
Standard_EXPORT virtual void Init() Standard_OVERRIDE;
private:
Standard_EXPORT Standard_Boolean CheckAngle (const Standard_Real alpha, const Standard_Real beta) const;
private:
Standard_Real myXStep;
Standard_Real myYStep;
Standard_Real myFirstAngle;
@@ -91,4 +87,6 @@ private:
};
DEFINE_STANDARD_HANDLE(Aspect_RectangularGrid, Aspect_Grid)
#endif // _Aspect_RectangularGrid_HeaderFile