-// SALOME OBJECT : kernel of SALOME component
+// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+
+// SALOME OBJECT : kernel of SALOME component
// File : SVTK_CubeAxesActor2D.cxx
// Author : Eugeny Nikolaev
-// Module : SALOME
-// $Header$
#include "SVTK_CubeAxesActor2D.h"
#include "VTKViewer_Transform.h"
#include <vtkProperty.h>
#include <vtkProperty2D.h>
-vtkCxxRevisionMacro(SVTK_CubeAxesActor2D, "$Revision$");
vtkStandardNewMacro(SVTK_CubeAxesActor2D);
-//----------------------------------------------------------------------------
// Instantiate this object.
SVTK_CubeAxesActor2D::SVTK_CubeAxesActor2D()
{
this->rgridMapperYZ = vtkPolyDataMapper::New();
this->rgridMapperXZ = vtkPolyDataMapper::New();
- this->rgridMapperXY->SetInput(this->planeXY->GetOutput());
- this->rgridMapperYZ->SetInput(this->planeYZ->GetOutput());
- this->rgridMapperXZ->SetInput(this->planeXZ->GetOutput());
+ this->rgridMapperXY->SetInputConnection(this->planeXY->GetOutputPort());
+ this->rgridMapperYZ->SetInputConnection(this->planeYZ->GetOutputPort());
+ this->rgridMapperXZ->SetInputConnection(this->planeXZ->GetOutputPort());
this->wireActorXY->SetMapper(rgridMapperXY);
this->wireActorYZ->SetMapper(rgridMapperYZ);
}
-//----------------------------------------------------------------------------
SVTK_CubeAxesActor2D::~SVTK_CubeAxesActor2D()
{
this->wireActorXY->Delete();
this->rgridMapperXZ->Delete();
}
-//----------------------------------------------------------------------------
// Static variable describes connections in cube.
static int Conn[8][3] = {{1,2,4}, {0,3,5}, {3,0,6}, {2,1,7},
{5,6,0}, {4,7,1}, {7,4,2}, {6,5,3}};
-//----------------------------------------------------------------------------
// Project the bounding box and compute edges on the border of the bounding
// cube. Determine which parts of the edges are visible via intersection
// with the boundary of the viewport (minus borders).
return renderedSomething;
}
-static void ChangeValues(float* aArray1,float* aArray2,float *aRange1,float* aRange2,bool theY){
- float tmp=-1000;
+static void ChangeValues(double* aArray1,
+ double* aArray2,
+ double *aRange1,
+ double* aRange2,
+ bool theY)
+{
+ double tmp=-1000;
if (!theY){
for (int i=0; i<4; i++){
tmp = aArray1[i]; aArray1[i] = aArray2[i]; aArray2[i] = tmp;
}
-#ifndef WNT
for(int i=0;i<2; i++){
-#else
- for(i=0;i<2; i++){
-#endif
tmp = aRange1[i]; aRange1[i] = aRange2[i]; aRange2[i] = tmp;
}
}
}
}
-static void ChangeArrays(float* xCoords,float* yCoords,float* zCoords,
- float* xRange,float* yRange,float* zRange,
- const int xAxes,const int yAxes, const int zAxes)
+static void ChangeArrays(double* xCoords,
+ double* yCoords,
+ double* zCoords,
+ double* xRange,
+ double* yRange,
+ double* zRange,
+ const int xAxes,
+ const int yAxes,
+ const int zAxes)
{
if ( xAxes == 0 && yAxes == 2 && zAxes == 1)
ChangeValues(yCoords,zCoords,yRange,zRange,true);
ChangeValues(zCoords,xCoords,zRange,xRange,false);
}
-//----------------------------------------------------------------------------
// Project the bounding box and compute edges on the border of the bounding
// cube. Determine which parts of the edges are visible via intersection
// with the boundary of the viewport (minus borders).
int SVTK_CubeAxesActor2D::RenderOpaqueGeometry(vtkViewport *viewport)
{
- float bounds[6], slope = 0.0, minSlope, num, den;
- float pts[8][3], d2, d2Min, min;
+ double bounds[6], slope = 0.0, minSlope, num, den;
+ double pts[8][3], d2, d2Min, min;
int i, idx = 0;
int xIdx, yIdx = 0, zIdx = 0, zIdx2, renderedSomething=0;
int xAxes = 0, yAxes, zAxes;
}
else
{
- float e1[2], e2[2], e3[2];
+ double e1[2], e2[2], e3[2];
// Find distance to origin
d2Min = VTK_LARGE_FLOAT;
}
// Setup the axes for plotting
- float xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2];
+ double xCoords[4], yCoords[4], zCoords[4], xRange[2], yRange[2], zRange[2];
this->AdjustAxes(pts, bounds, idx, xIdx, yIdx, zIdx, zIdx2,
xAxes, yAxes, zAxes,
xCoords, yCoords, zCoords, xRange, yRange, zRange);
// if xAxes=0 yAxes=1 zAxes=2 - good situation
if (!(xAxes == 0 && yAxes == 1 && zAxes == 2))
ChangeArrays(xCoords,yCoords,zCoords,
- xRange,yRange,zRange,
- xAxes,yAxes,zAxes);
+ xRange,yRange,zRange,
+ xAxes,yAxes,zAxes);
double aTScale[3];
if(m_Transform.GetPointer() != NULL)
// XCoords coordinates for X grid
vtkFloatArray *XCoords = vtkFloatArray::New();
-#ifndef WNT
for(int i=0;i<numOfLabelsX;i++){
-#else
- for(i=0;i<numOfLabelsX;i++){
-#endif
- float val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
+ double val = bounds[0]+i*(bounds[1]-bounds[0])/(numOfLabelsX-1);
XCoords->InsertNextValue(val);
}
// YCoords coordinates for Y grid
vtkFloatArray *YCoords = vtkFloatArray::New();
-#ifndef WNT
for(int i=0;i<numOfLabelsX;i++){
-#else
- for(i=0;i<numOfLabelsX;i++){
-#endif
- float val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
+ double val = bounds[2]+i*(bounds[3]-bounds[2])/(numOfLabelsY-1);
YCoords->InsertNextValue(val);
}
// ZCoords coordinates for Z grid
vtkFloatArray *ZCoords = vtkFloatArray::New();
-#ifndef WNT
for(int i=0;i<numOfLabelsZ;i++){
-#else
- for(i=0;i<numOfLabelsZ;i++){
-#endif
- float val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
+ double val = bounds[4]+i*(bounds[5]-bounds[4])/(numOfLabelsZ-1);
ZCoords->InsertNextValue(val);
}
rgrid->SetYCoordinates(YCoords);
rgrid->SetZCoordinates(ZCoords);
- this->planeXY->SetInput(rgrid);
- this->planeYZ->SetInput(rgrid);
- this->planeXZ->SetInput(rgrid);
+ this->planeXY->SetInputData(rgrid);
+ this->planeYZ->SetInputData(rgrid);
+ this->planeXZ->SetInputData(rgrid);
rgrid->Delete();
- float aCPosition[3];
- float aCDirection[3];
+ double aCPosition[3];
+ double aCDirection[3];
this->Camera->GetPosition(aCPosition);
this->Camera->GetDirectionOfProjection(aCDirection);
bool replaceXY=false;
bool replaceYZ=false;
bool replaceXZ=false;
- float p[6][3]; // centers of planes
- float vecs[6][3]; // 6 vectors from camera position to centers
+ double p[6][3]; // centers of planes
+ double vecs[6][3]; // 6 vectors from camera position to centers
- float aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2;
- float aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2;
- float aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2;
+ double aMiddleX = (XCoords->GetValue(0) + XCoords->GetValue(numOfLabelsX-1))/2;
+ double aMiddleY = (YCoords->GetValue(0) + YCoords->GetValue(numOfLabelsY-1))/2;
+ double aMiddleZ = (ZCoords->GetValue(0) + ZCoords->GetValue(numOfLabelsZ-1))/2;
// plane XY
p[0][0] = aMiddleX; // plane X=0.5 Y=0.5 Z=0
p[5][1] = YCoords->GetValue(numOfLabelsY-1);
p[5][2] = aMiddleZ;
-#ifndef WNT
for(int i=0;i<3;i++)
-#else
- for(i=0;i<3;i++)
-#endif
for(int j=0;j<6;j++) vecs[j][i] = p[j][i] - aCPosition[i];
if ( vtkMath::Dot(vecs[0],aCDirection) < vtkMath::Dot(vecs[1],aCDirection))
YCoords->Delete();
ZCoords->Delete();
- float color[3];
+ double color[3];
this->GetProperty()->GetColor(color);
this->wireActorXY->GetProperty()->SetColor(color);
return renderedSomething;
}
-//----------------------------------------------------------------------------
// Release any graphics resources that are being consumed by this actor.
// The parameter window could be used to determine which graphic
// resources to release.