]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/BasicFilters/MarchingCubes.cxx
Merge branch 'master' of ssh://git.creatis.insa-lyon.fr/cpPlugins
[cpPlugins.git] / lib / cpPlugins / Plugins / BasicFilters / MarchingCubes.cxx
index 38f7dbc848c987daa95e1b45a69fe58d1cdc7275..e8336754e0ed8f1d151c213233d47c88b598ff6d 100644 (file)
@@ -9,27 +9,19 @@
 // -------------------------------------------------------------------------
 cpPlugins::BasicFilters::MarchingCubes::
 MarchingCubes( )
-  : Superclass( ),
-    m_Algorithm( NULL )
+  : Superclass( )
 {
-  this->m_ClassName = "cpPlugins::BasicFilters::MarchingCubes";
-  this->m_ClassCategory = "ImageToMeshFilter";
-
   this->SetNumberOfInputs( 1 );
   this->SetNumberOfOutputs( 1 );
   this->_MakeOutput< cpPlugins::Interface::Mesh >( 0 );
 
-  using namespace cpPlugins::Interface;
-  this->m_DefaultParameters.Configure( Parameters::RealList, "Thresholds" );
-  this->m_Parameters = this->m_DefaultParameters;
+  this->m_Parameters->ConfigureAsRealList( "Thresholds" );
 }
 
 // -------------------------------------------------------------------------
 cpPlugins::BasicFilters::MarchingCubes::
 ~MarchingCubes( )
 {
-  if( this->m_Algorithm != NULL )
-    this->m_Algorithm->Delete( );
 }
 
 // -------------------------------------------------------------------------
@@ -41,39 +33,39 @@ _GenerateData( )
     this->GetInput< cpPlugins::Interface::Image >( 0 );
   if( image == NULL )
     return( "MarchingCubes: Input data is not a valid image." );
-  vtkImageData* vtk_image = image->GetVTKImageData( );
+  vtkImageData* vtk_image = image->GetVTK< vtkImageData >( );
   if( vtk_image == NULL )
     return( "MarchingCubes: Input does not have a valid VTK conversion." );
 
-  if( this->m_Algorithm != NULL )
-    this->m_Algorithm->Delete( );
-
   std::vector< double > values;
-  this->m_Parameters.GetValueAsRealList( values, "Thresholds" );
+  this->m_Parameters->GetRealList( values, "Thresholds" );
+  vtkPolyData* pd = NULL;
   if( vtk_image->GetDataDimension( ) == 2 )
   {
-    vtkMarchingSquares* ms = vtkMarchingSquares::New( );
+    vtkMarchingSquares* ms = this->_CreateVTK< vtkMarchingSquares >( );
     ms->SetInputData( vtk_image );
     for( unsigned int i = 0; i < values.size( ); ++i )
       ms->SetValue( i, values[ i ] );
-    this->m_Algorithm = ms;
+    ms->Update( );
+    pd = ms->GetOutput( );
   }
   else if( vtk_image->GetDataDimension( ) == 3 )
   {
-    vtkMarchingCubes* mc = vtkMarchingCubes::New( );
+    vtkMarchingCubes* mc = this->_CreateVTK< vtkMarchingCubes >( );
+    mc->ComputeNormalsOff( );
     mc->SetInputData( vtk_image );
     for( unsigned int i = 0; i < values.size( ); ++i )
       mc->SetValue( i, values[ i ] );
-    this->m_Algorithm = mc;
+    mc->Update( );
+    pd = mc->GetOutput( );
   }
   else
     return( "MarchingCubes: Input data does not have a valid dimension." );
 
   // Execute filter
-  this->m_Algorithm->Update( );
   cpPlugins::Interface::Mesh* out =
     this->GetOutput< cpPlugins::Interface::Mesh >( 0 );
-  out->SetVTKMesh( this->m_Algorithm->GetOutput( ) );
+  out->SetVTK( pd );
   return( "" );
 }