]> Creatis software - FrontAlgorithms.git/blob - plugins/fpa/ImageSkeleton.cxx
...
[FrontAlgorithms.git] / plugins / fpa / ImageSkeleton.cxx
1 #include <plugins/fpa/ImageSkeleton.h>
2 #include <fpa_Instances/Instances.h>
3 #include <fpa/VTK/Image/ImageSkeletonToPolyData.h>
4
5 // -------------------------------------------------------------------------
6 void fpaPlugins::ImageSkeleton::
7 SetITK( itk::LightObject* o )
8 {
9   typedef
10     fpa::Base::ImageSkeleton< fpa::Image::MinimumSpanningTree< 2 > > _I2;
11   typedef
12     fpa::Base::ImageSkeleton< fpa::Image::MinimumSpanningTree< 3 > > _I3;
13
14   bool     r = this->_SetITK< _I2 >( o );
15   if( !r ) r = this->_SetITK< _I3 >( o );
16   if( !r )
17     this->Superclass::SetITK( NULL );
18 }
19
20 // -------------------------------------------------------------------------
21 void fpaPlugins::ImageSkeleton::
22 SetVTK( vtkObjectBase* o )
23 {
24   // Do nothing: this only has sense in ITK
25 }
26
27 // -------------------------------------------------------------------------
28 fpaPlugins::ImageSkeleton::
29 ImageSkeleton( )
30   : Superclass( )
31 {
32 }
33
34 // -------------------------------------------------------------------------
35 fpaPlugins::ImageSkeleton::
36 ~ImageSkeleton( )
37 {
38 }
39
40 // -------------------------------------------------------------------------
41 template< class _TMST >
42 bool fpaPlugins::ImageSkeleton::
43 _SetITK( itk::LightObject* o )
44 {
45   typedef fpa::VTK::Image::ImageSkeletonToPolyData< _TMST > _TFilter;
46
47   _TMST* mst = dynamic_cast< _TMST* >( o );
48   if( mst != NULL )
49   {
50     _TFilter* f = dynamic_cast< _TFilter* >( this->m_ITKvVTK.GetPointer( ) );
51     if( f == NULL )
52     {
53       vtkSmartPointer< _TFilter > nf = _TFilter::New( );
54       this->m_ITKvVTK = nf.GetPointer( );
55       f = nf.GetPointer( );
56
57     } // fi
58     f->SetInput( mst );
59     f->Update( );
60
61     // Keep object track
62     this->m_ITKObject = o;
63     this->m_VTKObject = f->GetOutput( );
64     return( true );
65   }
66   else
67   {
68     this->Superclass::SetITK( NULL );
69     this->Superclass::SetVTK( NULL );
70     return( false );
71
72   } // fi
73 }
74
75 // eof - $RCSfile$