#ifndef __FPAPLUGINS__BASEIMAGEFILTER__HXX__
#define __FPAPLUGINS__BASEIMAGEFILTER__HXX__
-#include <cpPlugins/Interface/Image.h>
-#include <cpPlugins/Interface/PointList.h>
-#include <cpPlugins/Interface/SimpleMPRWidget.h>
-#include <cpExtensions/DataStructures/VectorValuesContainer.h>
-
+#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 F >
-F* fpaPlugins::BaseImageFilter::
+template< class _TFilter >
+_TFilter* fpaPlugins::BaseImageFilter::
_ConfigureFilter( )
{
- typedef typename F::TInputImage _I;
- typedef itk::Point< double, _I::ImageDimension > _Pnt;
- typedef typename _I::IndexType _Idx;
- typedef cpExtensions::DataStructures::VectorValuesContainer< _Pnt > _CPnt;
- typedef cpExtensions::DataStructures::VectorValuesContainer< _Idx > _CIdx;
-
- auto image = this->GetInputData( "Input" )->GetITK< _I >( );
- auto seeds = this->GetInputData( "Seeds" );
- auto p_seeds = seeds->GetITK< _CPnt >( );
- auto i_seeds = seeds->GetITK< _CIdx >( );
+ 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;
+
+ auto image = this->GetInputData( "Input" )->GetITK< _TImage >( );
+ if( image == NULL )
+ return( NULL );
+ auto points = this->GetInputData( "Seeds" )->GetITK< _TPoints >( );
+ auto indexes = this->GetInputData( "Seeds" )->GetITK< _TIndexes >( );
// Create filter and connect input
- F* filter = this->_CreateITK< F >( );
+ auto filter = this->_CreateITK< _TFilter >( );
filter->SetInput( image );
// Set numeric parameters
- Superclass::TParameters* params = this->m_Parameters;
filter->SetNeighborhoodOrder(
- params->GetSelectedChoice( "NeighborhoodOrder" )[ 0 ] - '0'
+ this->m_Parameters.GetSelectedChoice( "NeighborhoodOrder" )[ 0 ] - '0'
);
- filter->SetStopAtOneFront( params->GetBool( "StopAtOneFront" ) );
+ filter->SetStopAtOneFront( this->m_Parameters.GetBool( "StopAtOneFront" ) );
// Assign seeds
filter->ClearSeeds( );
- if( p_seeds != NULL )
+ if( points != NULL )
{
- for( auto pIt = p_seeds->Begin( ); pIt != p_seeds->End( ); ++pIt )
+ for(
+ auto pIt = points->Get( ).begin( );
+ pIt != points->Get( ).end( );
+ ++pIt
+ )
{
- _Idx idx;
+ _TIndex idx;
if( image->TransformPhysicalPointToIndex( *pIt, idx ) )
filter->AddSeed( idx, 0 );
} // rof
}
- else if( i_seeds != NULL )
+ else if( indexes != NULL )
{
- for( auto iIt = i_seeds->Begin( ); iIt != i_seeds->End( ); ++iIt )
+ for(
+ auto iIt = indexes->Get( ).begin( );
+ iIt != indexes->Get( ).end( );
+ ++iIt
+ )
filter->AddSeed( *iIt, 0 );
} // fi
}
// -------------------------------------------------------------------------
-template< class F >
+template< class _TFilter >
void fpaPlugins::BaseImageFilter::
-_ExecuteFilter( F* filter )
+_ExecuteFilter( _TFilter* filter )
{
// Go!!!
this->_ConfigureDebugger( filter );
}
// -------------------------------------------------------------------------
-template< class F >
+template< class _TFilter >
void fpaPlugins::BaseImageFilter::
-_ConfigureDebugger( F* filter )
+_ConfigureDebugger( _TFilter* filter )
{
- typedef typename F::TInputImage _I;
- typedef fpa::VTK::Image2DObserver< F, vtkRenderWindow > _2D;
- typedef fpa::VTK::Image3DObserver< F, vtkRenderWindow > _3D;
+ typedef typename _TFilter::TInputImage _TImage;
+ typedef fpa::VTK::Image2DObserver< _TFilter, vtkRenderWindow > _2D;
+ typedef fpa::VTK::Image3DObserver< _TFilter, vtkRenderWindow > _3D;
this->m_Observers.clear( );
- if( this->m_Parameters->GetBool( "VisualDebug" ) )
+ if( this->m_Parameters.GetBool( "VisualDebug" ) )
{
if( this->m_MPRViewer != NULL )
{
- if( _I::ImageDimension == 2 )
+ if( _TImage::ImageDimension == 2 )
{
auto iren = this->m_MPRViewer->GetInteractor( 2 );
if( iren != NULL )
} // fi
}
- else if( _I::ImageDimension == 3 )
+ else if( _TImage::ImageDimension == 3 )
{
auto iren = this->m_MPRViewer->GetInteractor( 3 );
if( iren != NULL )
if( this->m_SingleInteractor != NULL )
{
- if( _I::ImageDimension == 2 )
+ if( _TImage::ImageDimension == 2 )
{
}
- else if( _I::ImageDimension == 3 )
+ else if( _TImage::ImageDimension == 3 )
{
} // fi