]> Creatis software - FrontAlgorithms.git/blob - plugins/fpa/MinimumSpanningTreeWriter.cxx
97570068a5b9195dd223a75fc5ee4a8e23a8c8b6
[FrontAlgorithms.git] / plugins / fpa / MinimumSpanningTreeWriter.cxx
1 #include "MinimumSpanningTreeWriter.h"
2 #include "MinimumSpanningTree.h"
3
4 #include <fpa_Instances/Instances.h>
5
6 // -------------------------------------------------------------------------
7 fpaPlugins::MinimumSpanningTreeWriter::
8 MinimumSpanningTreeWriter( )
9   : Superclass( )
10 {
11   this->_AddInput( "Input" );
12   this->m_Parameters.Clear( );
13   this->m_Parameters.ConfigureAsSaveFileName( "FileName" );
14   this->m_Parameters.SetAcceptedFileExtensions(
15     "FileName",
16     "Minimum spanning tree files (*.mst)"
17     );
18 }
19
20 // -------------------------------------------------------------------------
21 fpaPlugins::MinimumSpanningTreeWriter::
22 ~MinimumSpanningTreeWriter( )
23 {
24 }
25
26 // -------------------------------------------------------------------------
27 std::string fpaPlugins::MinimumSpanningTreeWriter::
28 _GenerateData( )
29 {
30   typedef fpa::Image::MinimumSpanningTree< 2 > _2D;
31   typedef fpa::Image::MinimumSpanningTree< 3 > _3D;
32
33   auto _2d = this->GetInputData( "Input" )->GetITK< _2D >( );
34   auto _3d = this->GetInputData( "Input" )->GetITK< _3D >( );
35
36   if     ( _2d != NULL ) return( this->_GD0( _2d ) );
37   else if( _3d != NULL ) return( this->_GD0( _3d ) );
38   else
39     return( "MinimumSpanningTreeWriter: Not a valid MST." );
40 }
41
42 // -------------------------------------------------------------------------
43 template< class _TTree >
44 std::string fpaPlugins::MinimumSpanningTreeWriter::
45 _GD0( _TTree* tree )
46 {
47   typedef fpa::IO::MinimumSpanningTreeWriter< _TTree > _TFilter;
48
49   _TFilter* writer = this->_CreateITK< _TFilter >( );
50   writer->SetInput( tree );
51   writer->SetFileName( this->m_Parameters.GetSaveFileName( "FileName" ) );
52   try
53   {
54     writer->Update( );
55   }
56   catch( itk::ExceptionObject& err )
57   {
58     return(
59       "MinimumSpanningTreeWriter: " + std::string( err.GetDescription( ) )
60       );
61
62   } // yrt
63   return( "" );
64 }
65
66 // eof - $RCSfile$