Salome HOME
23080: [CEA 1497] Do not merge a middle node in quadratic with the extreme nodes...
[modules/smesh.git] / src / OBJECT / SMESH_FaceOrientationFilter.cxx
index a7f5d1d944da3eed8a299886c1d8c7d0cd647071..59ed6c33f3129c728a22cfb0949e0c289b2cc4a4 100644 (file)
@@ -1,30 +1,30 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  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.
 //
-//  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.
 //
-//  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
 //
-//  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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include "SMESH_FaceOrientationFilter.h"
 #include "SMESH_ActorUtils.h"
 
 #include "SUIT_Session.h"
 #include "SUIT_ResourceMgr.h"
 
+#include <VTKViewer_CellCenters.h>
+
 #include <vtkCellData.h>
 #include <vtkDataSet.h>
 #include <vtkPolyData.h>
@@ -35,7 +35,6 @@
 #include <vtkFloatArray.h>
 #include <vtkCellArray.h>
 #include <vtkMaskPoints.h>
-#include <vtkCellCenters.h>
 #include <vtkGlyph3D.h>
 #include <vtkGlyphSource2D.h>
 
@@ -43,7 +42,6 @@
 
 #define PI   3.14159265359
 
-vtkCxxRevisionMacro(SMESH_FaceOrientationFilter, "$Revision$");
 vtkStandardNewMacro(SMESH_FaceOrientationFilter);
 
 /*!
@@ -61,11 +59,11 @@ SMESH_FaceOrientationFilter::SMESH_FaceOrientationFilter()
 
   myFacePolyData = vtkPolyData::New();
 
-  myFaceCenters = vtkCellCenters::New();
-  myFaceCenters->SetInput(myFacePolyData);
+  myFaceCenters = VTKViewer_CellCenters::New();
+  myFaceCenters->SetInputData(myFacePolyData);
 
   myFaceMaskPoints = vtkMaskPoints::New();
-  myFaceMaskPoints->SetInput(myFaceCenters->GetOutput());
+  myFaceMaskPoints->SetInputConnection(myFaceCenters->GetOutputPort());
   myFaceMaskPoints->SetOnRatio(1);
 
   myGlyphSource = vtkGlyphSource2D::New();
@@ -74,11 +72,14 @@ SMESH_FaceOrientationFilter::SMESH_FaceOrientationFilter()
   myGlyphSource->SetCenter(0.5, 0.0, 0.0);
 
   myBaseGlyph = vtkGlyph3D::New();
-  myBaseGlyph->SetInput(myFaceMaskPoints->GetOutput());
+  myBaseGlyph->SetInputConnection(myFaceMaskPoints->GetOutputPort());
   myBaseGlyph->SetVectorModeToUseVector();
   myBaseGlyph->SetScaleModeToDataScalingOff();
   myBaseGlyph->SetColorModeToColorByScalar();
-  myBaseGlyph->SetSource(my3dVectors ? myArrowPolyData : myGlyphSource->GetOutput());
+  if( my3dVectors )
+    myBaseGlyph->SetSourceData(myArrowPolyData);
+  else
+    myBaseGlyph->SetSourceConnection(myGlyphSource->GetOutputPort());
 }
 
 SMESH_FaceOrientationFilter::~SMESH_FaceOrientationFilter()
@@ -91,6 +92,22 @@ SMESH_FaceOrientationFilter::~SMESH_FaceOrientationFilter()
   myBaseGlyph->Delete();
 }
 
+void SMESH_FaceOrientationFilter::SetOrientationScale( double theScale )
+{
+  myOrientationScale = theScale;
+  Modified();
+}
+
+void SMESH_FaceOrientationFilter::Set3dVectors( bool theState )
+{
+  my3dVectors = theState;
+  if( my3dVectors )
+    myBaseGlyph->SetSourceData(myArrowPolyData);
+  else
+    myBaseGlyph->SetSourceConnection(myGlyphSource->GetOutputPort());
+  Modified();
+}
+
 vtkPolyData* SMESH_FaceOrientationFilter::CreateArrowPolyData()
 {
   vtkPoints* points = vtkPoints::New();
@@ -209,8 +226,8 @@ void GetFaceParams( vtkCell* theFace, double theNormal[3], double& theSize )
 
   double* aBounds = theFace->GetBounds();
   theSize = pow( pow( aBounds[1] - aBounds[0], 2 ) +
-                pow( aBounds[3] - aBounds[2], 2 ) +
-                pow( aBounds[5] - aBounds[4], 2 ), 0.5 );
+                 pow( aBounds[3] - aBounds[2], 2 ) +
+                 pow( aBounds[5] - aBounds[4], 2 ), 0.5 );
 }
 
 /*!
@@ -268,7 +285,7 @@ int SMESH_FaceOrientationFilter::RequestData(
 
       input->GetCellNeighbors( aCellId, aFace->PointIds, aNeighborIds );
       if( aNeighborIds->GetNumberOfIds() > 0 )
-       continue;
+        continue;
 
       double aSize, aNormal[3];
       GetFaceParams( aFace, aNormal, aSize );