#ifndef __FPAPLUGINS__BASEIMAGEFILTER__HXX__
#define __FPAPLUGINS__BASEIMAGEFILTER__HXX__
-#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>
-#include <itkSimpleDataObjectDecorator.h>
+#include <cpExtensions/DataStructures/ImageIndexesContainer.h>
+#include <fpa_Instances/Observers.h>
// -------------------------------------------------------------------------
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 >( );
// 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
this->_DeconfigureDebugger( filter );
// Connect output
- auto out = this->GetOutputData( "Output" );
- out->SetITK( filter->GetOutput( ) );
+ this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
}
// -------------------------------------------------------------------------
_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" ) )