]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Filters/SeedsInterface.hxx
43175b458f3358b22f3009295ecbacd78adcbde3
[FrontAlgorithms.git] / lib / fpa / Filters / SeedsInterface.hxx
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __fpa__Filters__SeedsInterface__hxx__
6 #define __fpa__Filters__SeedsInterface__hxx__
7
8 #include <itkImageBase.h>
9
10 // -------------------------------------------------------------------------
11 template< class _TTraits >
12 fpa::Filters::SeedsInterface< _TTraits >::
13 SeedsInterface( itk::ProcessObject* f )
14   : m_Filter( f )
15 {
16 }
17
18 // -------------------------------------------------------------------------
19 template< class _TTraits >
20 fpa::Filters::SeedsInterface< _TTraits >::
21 ~SeedsInterface( )
22 {
23 }
24
25 // -------------------------------------------------------------------------
26 template< class _TTraits >
27 void fpa::Filters::SeedsInterface< _TTraits >::
28 AddSeed( const TPoint& s )
29 {
30   TSeed seed( this->m_InputSeeds.size( ) + 1 );
31   seed.Point = s;
32   seed.IsPoint = true;
33   this->m_InputSeeds.push_back( seed );
34   if( this->m_Filter.IsNotNull( ) )
35     this->m_Filter->Modified( );
36 }
37
38 // -------------------------------------------------------------------------
39 template< class _TTraits >
40 void fpa::Filters::SeedsInterface< _TTraits >::
41 AddSeed( const TVertex& s )
42 {
43   TSeed seed( this->m_InputSeeds.size( ) + 1 );
44   seed.Vertex = s;
45   seed.IsPoint = false;
46   this->m_InputSeeds.push_back( seed );
47   if( this->m_Filter.IsNotNull( ) )
48     this->m_Filter->Modified( );
49 }
50
51 // -------------------------------------------------------------------------
52 template< class _TTraits >
53 void fpa::Filters::SeedsInterface< _TTraits >::
54 ClearSeeds( )
55 {
56   this->m_InputSeeds.clear( );
57   this->m_UnifiedSeeds.clear( );
58   if( this->m_Filter.IsNotNull( ) )
59     this->m_Filter->Modified( );
60 }
61
62 // -------------------------------------------------------------------------
63 template< class _TTraits >
64 const typename fpa::Filters::SeedsInterface< _TTraits >::
65 TNodes& fpa::Filters::SeedsInterface< _TTraits >::
66 GetSeeds( ) const
67 {
68   return( this->m_UnifiedSeeds );
69 }
70
71 // -------------------------------------------------------------------------
72 template< class _TTraits >
73 void fpa::Filters::SeedsInterface< _TTraits >::
74 _PrepareSeeds( const itk::DataObject* input )
75 {
76   // Input object is an image?
77   typedef itk::ImageBase< Self::Dimension > _TImageBase;
78   const _TImageBase* image = dynamic_cast< const _TImageBase* >( input );
79   if( image != NULL )
80   {
81     this->m_UnifiedSeeds.clear( );
82     for( TSeed iSeed: this->m_InputSeeds )
83     {
84       if( iSeed.IsPoint )
85         image->TransformPhysicalPointToIndex( iSeed.Point, iSeed.Vertex );
86       TNode node;
87       node.Vertex = iSeed.Vertex;
88       node.Parent = iSeed.Vertex;
89       node.FrontId = iSeed.FrontId;
90       this->m_UnifiedSeeds.insert( node );
91
92     } // rof
93
94   } // fi
95 }
96
97 #endif // __fpa__Filters__SeedsInterface__hxx__
98 // eof - $RCSfile$