]> Creatis software - FrontAlgorithms.git/blobdiff - plugins/fpa/BaseImageFilter.hxx
...
[FrontAlgorithms.git] / plugins / fpa / BaseImageFilter.hxx
index 9db580a9bea296ab8484dc1026046656549a7a07..965514ff3858b32fd9ee4e64a10c35afd3cab3e6 100644 (file)
@@ -1,34 +1,21 @@
 #ifndef __FPAPLUGINS__BASEIMAGEFILTER__HXX__
 #define __FPAPLUGINS__BASEIMAGEFILTER__HXX__
 
+#include <cpExtensions/DataStructures/ImageIndexesContainer.h>
 #include <fpa_Instances/Observers.h>
-#include <itkSimpleDataObjectDecorator.h>
-/* TODO
-   #include <cpPlugins/Image.h>
-   #include <fpa/VTK/Image2DObserver.h>
-   #include <fpa/VTK/Image3DObserver.h>
-   #include <vtkRenderWindowInteractor.h>
-
-   #include <fpa/VTK/Image2DObserver.hxx>
-   #include <fpa/VTK/Image3DObserver.hxx>
-*/
 
 // -------------------------------------------------------------------------
 template< class _TFilter >
 _TFilter* fpaPlugins::BaseImageFilter::
 _ConfigureFilter( )
 {
-  typedef typename _TFilter::TInputImage                _TImage;
-  typedef typename _TImage::IndexType                   _TIndex;
-  typedef itk::Point< double, _TImage::ImageDimension > _TPoint;
-  typedef itk::SimpleDataObjectDecorator< std::vector< _TPoint > > _TPoints;
-  typedef itk::SimpleDataObjectDecorator< std::vector< _TIndex > > _TIndexes;
+  typedef typename _TFilter::TInputImage _TImage;
+  static const unsigned int Dim = _TImage::ImageDimension;
 
-  auto image = this->GetInputData( "Input" )->GetITK< _TImage >( );
+  auto image = this->GetInputData< _TImage >( "Input" );
   if( image == NULL )
     return( NULL );
-  auto points = this->GetInputData( "Seeds" )->GetITK< _TPoints >( );
-  auto indexes = this->GetInputData( "Seeds" )->GetITK< _TIndexes >( );
+  auto seeds = this->GetInputData< vtkPoints >( "Seeds" );
 
   // Create filter and connect input
   auto filter = this->_CreateITK< _TFilter >( );
@@ -42,28 +29,24 @@ _ConfigureFilter( )
 
   // Assign seeds
   filter->ClearSeeds( );
-  if( points != NULL )
+  if( seeds != NULL )
   {
-    for(
-      auto pIt = points->Get( ).begin( );
-      pIt != points->Get( ).end( );
-      ++pIt
-      )
+    typename _TImage::PointType pnt;
+    typename _TImage::IndexType idx;
+    unsigned int dim =
+      ( _TImage::ImageDimension < 3 )? _TImage::ImageDimension: 3;
+    for( unsigned int i = 0; i < seeds->GetNumberOfPoints( ); ++i )
     {
-      _TIndex idx;
-      if( image->TransformPhysicalPointToIndex( *pIt, idx ) )
+      double buf[ 3 ];
+      seeds->GetPoint( i, buf );
+      pnt.Fill( 0 );
+      for( unsigned int d = 0; d < dim; ++d )
+        pnt[ d ] = buf[ d ];
+
+      if( image->TransformPhysicalPointToIndex( pnt, idx ) )
         filter->AddSeed( idx, 0 );
 
     } // rof
-  }
-  else if( indexes != NULL )
-  {
-    for(
-      auto iIt = indexes->Get( ).begin( );
-      iIt != indexes->Get( ).end( );
-      ++iIt
-      )
-      filter->AddSeed( *iIt, 0 );
 
   } // fi
 
@@ -82,8 +65,7 @@ _ExecuteFilter( _TFilter* filter )
   this->_DeconfigureDebugger( filter );
 
   // Connect output
-  auto out = this->GetOutputData( "Output" );
-  out->SetITK( filter->GetOutput( ) );
+  this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
 }
 
 // -------------------------------------------------------------------------
@@ -92,8 +74,8 @@ void fpaPlugins::BaseImageFilter::
 _ConfigureDebugger( _TFilter* filter )
 {
   typedef typename _TFilter::TInputImage _TImage;
-  typedef fpa::VTK::Image2DObserver< _TFilter, vtkRenderWindow > _2D;
-  typedef fpa::VTK::Image3DObserver< _TFilter, vtkRenderWindow > _3D;
+  typedef fpa::VTK::Image::Observer2D< _TFilter, vtkRenderWindow > _2D;
+  typedef fpa::VTK::Image::Observer3D< _TFilter, vtkRenderWindow > _3D;
 
   this->m_Observers.clear( );
   if( this->m_Parameters.GetBool( "VisualDebug" ) )