#include <cpPlugins/Interface/PointList.h>
#include <cpPlugins/Interface/PolyLineParametricPath.h>
+#include <cpExtensions/DataStructures/VectorValuesContainer.h>
#include <fpaPlugins/MinimumSpanningTree.h>
#include <fpa/Base/MinimumSpanningTree.h>
typedef itk::Functor::IndexLexicographicCompare< D > _VC;
typedef fpa::Base::MinimumSpanningTree< _V, _VC > _MST;
typedef fpa::Base::ExtractBranchesFromMinimumSpanningTree< _MST > _Filter;
+ typedef cpExtensions::DataStructures::VectorValuesContainer< _V > _CIdx;
// Get inputs
- auto tree =
- this->GetInputData< fpaPlugins::MinimumSpanningTree >(
- "MinimumSpanningTree"
- )->GetITK< _MST >( );
+ auto tree = this->GetInputData( "MinimumSpanningTree" )->GetITK< _MST >( );
if( tree == NULL )
return( "fpaPlugins::ExtractBranchesFromMinimumSpanningTree: Input MST type not supported." );
- auto endpoints =
- this->GetInputData< cpPlugins::Interface::PointList >( "EndPoints" );
- if( endpoints->GetNumberOfPoints( ) < 2 )
+ auto endpoints = this->GetInputData( "EndPoints" )->GetITK< _CIdx >( );
+ if( endpoints == NULL )
+ return( "fpaPlugins::ExtractBranchesFromMinimumSpanningTree: No end-points." );
+ if( endpoints->Get( ).size( ) < 2 )
return( "fpaPlugins::ExtractBranchesFromMinimumSpanningTree: Not enough end-points (<2)." );
- if( endpoints->HaveEuclideanPoints( ) )
- return( "fpaPlugins::ExtractBranchesFromMinimumSpanningTree: end-points are on euclidean space." );
// Create filter and connect input
_Filter* filter = this->_CreateITK< _Filter >( );
filter->SetInput( tree );
- for( unsigned int i = 0; i < endpoints->GetNumberOfPoints( ); ++i )
- filter->AddEndPoint( endpoints->GetPoint< _V >( i ) );
+ for( auto iIt = endpoints->Begin( ); iIt != endpoints->End( ); ++iIt )
+ filter->AddEndPoint( *iIt );
filter->Update( );
// Connect output and finish
- auto out =
- this->GetOutputData< cpPlugins::Interface::PolyLineParametricPath >( "Output" );
+ auto out = this->GetOutputData( "Output" );
out->SetITK( filter->GetOutput( ) );
return( "" );
}