0026154: Visualization - v3d viewer grid disappears due to automatic z-fit
authorkgv <kgv@opencascade.com>
Mon, 29 Jul 2019 14:49:58 +0000 (17:49 +0300)
committerbugmaster <bugmaster@opencascade.com>
Tue, 30 Jul 2019 16:33:20 +0000 (19:33 +0300)
V3d_RectangularGrid, V3d_CircularGrid, fixed initialization of presentation bounding box (lost Z offset).

src/V3d/V3d_CircularGrid.cxx
src/V3d/V3d_RectangularGrid.cxx

index 567cb88..ccf2092 100644 (file)
 
 IMPLEMENT_STANDARD_RTTIEXT(V3d_CircularGrid,Aspect_CircularGrid)
 
-#define DIVISION 8
-#define MYFACTOR 50.
+namespace
+{
+  static const Standard_Real THE_DEFAULT_GRID_STEP = 10.0;
+  #define DIVISION 8
+  #define MYFACTOR 50.
+}
 
 //! Dummy implementation of Graphic3d_Structure overriding ::Compute() method for handling Device Lost.
 class V3d_CircularGrid::CircularGridStructure : public Graphic3d_Structure
@@ -58,7 +62,15 @@ V3d_CircularGrid::V3d_CircularGrid (const V3d_ViewerPointer& aViewer, const Quan
 : Aspect_CircularGrid (1.,8),
   myViewer (aViewer),
   myCurAreDefined (Standard_False),
-  myToComputePrs (Standard_False)
+  myToComputePrs (Standard_False),
+  myCurDrawMode (Aspect_GDM_Lines),
+  myCurXo (0.0),
+  myCurYo (0.0),
+  myCurAngle (0.0),
+  myCurStep (0.0),
+  myCurDivi (0),
+  myRadius (0.5 * aViewer->DefaultViewSize()),
+  myOffSet (THE_DEFAULT_GRID_STEP / MYFACTOR)
 {
   myColor = aColor;
   myTenthColor = aTenthColor;
@@ -67,10 +79,7 @@ V3d_CircularGrid::V3d_CircularGrid (const V3d_ViewerPointer& aViewer, const Quan
   myGroup = myStructure->NewGroup();
   myStructure->SetInfiniteState (Standard_True);
 
-  const Standard_Real step = 10.;
-  const Standard_Real size = 0.5*myViewer->DefaultViewSize();
-  SetGraphicValues (size, step/MYFACTOR);
-  SetRadiusStep (step);
+  SetRadiusStep (THE_DEFAULT_GRID_STEP);
 }
 
 V3d_CircularGrid::~V3d_CircularGrid()
@@ -263,7 +272,7 @@ void V3d_CircularGrid::DefineLines ()
     myGroup->AddPrimitiveArray(aPrims3, Standard_False);
   }
 
-  myGroup->SetMinMaxValues(-myRadius, -myRadius, 0.0, myRadius, myRadius, 0.0);
+  myGroup->SetMinMaxValues (-myRadius, -myRadius, -myOffSet, myRadius, myRadius, -myOffSet);
   myCurStep = aStep, myCurDivi = (Standard_Integer ) aDivision;
 
   // update bounding box
@@ -321,7 +330,7 @@ void V3d_CircularGrid::DefinePoints ()
     }
     myGroup->AddPrimitiveArray (Cercle, Standard_False);
   }
-  myGroup->SetMinMaxValues(-myRadius, -myRadius, 0.0, myRadius, myRadius, 0.0);
+  myGroup->SetMinMaxValues (-myRadius, -myRadius, -myOffSet, myRadius, myRadius, -myOffSet);
 
   myCurStep = aStep, myCurDivi = (Standard_Integer ) aDivision;
 
index 0fd238a..4a24e55 100644 (file)
 
 IMPLEMENT_STANDARD_RTTIEXT(V3d_RectangularGrid,Aspect_RectangularGrid)
 
-#define MYFACTOR 50.
+namespace
+{
+  static const Standard_Real THE_DEFAULT_GRID_STEP = 10.0;
+  #define MYFACTOR 50.
+}
 
 //! Dummy implementation of Graphic3d_Structure overriding ::Compute() method for handling Device Lost.
 class V3d_RectangularGrid::RectangularGridStructure : public Graphic3d_Structure
@@ -57,7 +61,16 @@ V3d_RectangularGrid::V3d_RectangularGrid (const V3d_ViewerPointer& aViewer, cons
 : Aspect_RectangularGrid (1.,1.),
   myViewer (aViewer),
   myCurAreDefined (Standard_False),
-  myToComputePrs (Standard_True)
+  myToComputePrs (Standard_True),
+  myCurDrawMode (Aspect_GDM_Lines),
+  myCurXo (0.0),
+  myCurYo (0.0),
+  myCurAngle (0.0),
+  myCurXStep (0.0),
+  myCurYStep (0.0),
+  myXSize  (0.5 * aViewer->DefaultViewSize()),
+  myYSize  (0.5 * aViewer->DefaultViewSize()),
+  myOffSet (THE_DEFAULT_GRID_STEP / MYFACTOR)
 {
   myColor = aColor;
   myTenthColor = aTenthColor;
@@ -66,12 +79,8 @@ V3d_RectangularGrid::V3d_RectangularGrid (const V3d_ViewerPointer& aViewer, cons
   myGroup = myStructure->NewGroup();
   myStructure->SetInfiniteState (Standard_True);
 
-  const Standard_Real step = 10.;
-  const Standard_Real gstep = step/MYFACTOR;
-  const Standard_Real size = 0.5*myViewer->DefaultViewSize();
-  SetGraphicValues (size, size, gstep);
-  SetXStep (step);
-  SetYStep (step);
+  SetXStep (THE_DEFAULT_GRID_STEP);
+  SetYStep (THE_DEFAULT_GRID_STEP);
 }
 
 V3d_RectangularGrid::~V3d_RectangularGrid()
@@ -261,7 +270,7 @@ void V3d_RectangularGrid::DefineLines ()
     myGroup->AddPrimitiveArray(aPrims, Standard_False);
   }
 
-  myGroup->SetMinMaxValues(-myXSize, -myYSize, 0.0, myXSize, myYSize, 0.0);
+  myGroup->SetMinMaxValues(-myXSize, -myYSize, -myOffSet, myXSize, myYSize, -myOffSet);
   myCurXStep = aXStep, myCurYStep = aYStep;
 
   // update bounding box
@@ -321,7 +330,7 @@ void V3d_RectangularGrid::DefinePoints ()
     myGroup->AddPrimitiveArray (Vertical, Standard_False);
   }
 
-  myGroup->SetMinMaxValues(-myXSize, -myYSize, 0.0, myXSize, myYSize, 0.0);
+  myGroup->SetMinMaxValues(-myXSize, -myYSize, -myOffSet, myXSize, myYSize, -myOffSet);
   myCurXStep = aXStep, myCurYStep = aYStep;
 
   // update bounding box