]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpaPlugins/ExtractBranchesFromMinimumSpanningTree.cxx
...
[FrontAlgorithms.git] / lib / fpaPlugins / ExtractBranchesFromMinimumSpanningTree.cxx
index 9c5e6af0c0524be354c16f84ba488cf67345f90a..33980a2233a8359ca3ac2d1624eb789c63faf61e 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <cpPlugins/Interface/PointList.h>
 #include <cpPlugins/Interface/PolyLineParametricPath.h>
+#include <cpExtensions/DataStructures/VectorValuesContainer.h>
 #include <fpaPlugins/MinimumSpanningTree.h>
 
 #include <fpa/Base/MinimumSpanningTree.h>
@@ -46,31 +47,27 @@ _GD0( )
   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( "" );
 }