]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Filters/MultipleSeedsInterface.hxx
...
[FrontAlgorithms.git] / lib / fpa / Filters / MultipleSeedsInterface.hxx
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __fpa__Filters__MultipleSeedsInterface__hxx__
6 #define __fpa__Filters__MultipleSeedsInterface__hxx__
7
8 #include <itkImageBase.h>
9
10 // -------------------------------------------------------------------------
11 template< class _TTraits >
12 void fpa::Filters::MultipleSeedsInterface< _TTraits >::
13 AddSeed( const TPoint& s )
14 {
15   TSeed seed( this->m_InputSeeds.size( ) + 1 );
16   seed.Point = s;
17   seed.IsPoint = true;
18   this->m_InputSeeds.push_back( seed );
19   if( this->m_Filter.IsNotNull( ) )
20     this->m_Filter->Modified( );
21 }
22
23 // -------------------------------------------------------------------------
24 template< class _TTraits >
25 void fpa::Filters::MultipleSeedsInterface< _TTraits >::
26 AddSeed( const TVertex& s )
27 {
28   TSeed seed( this->m_InputSeeds.size( ) + 1 );
29   seed.Vertex = s;
30   seed.IsPoint = false;
31   this->m_InputSeeds.push_back( seed );
32   if( this->m_Filter.IsNotNull( ) )
33     this->m_Filter->Modified( );
34 }
35
36 // -------------------------------------------------------------------------
37 template< class _TTraits >
38 void fpa::Filters::MultipleSeedsInterface< _TTraits >::
39 ClearSeeds( )
40 {
41   this->m_InputSeeds.clear( );
42   this->m_UnifiedSeeds.clear( );
43   if( this->m_Filter.IsNotNull( ) )
44     this->m_Filter->Modified( );
45 }
46
47 // -------------------------------------------------------------------------
48 template< class _TTraits >
49 unsigned long fpa::Filters::MultipleSeedsInterface< _TTraits >::
50 GetNumberOfSeeds( ) const
51 {
52   return( this->m_InputSeeds.size( ) );
53 }
54
55 // -------------------------------------------------------------------------
56 template< class _TTraits >
57 fpa::Filters::MultipleSeedsInterface< _TTraits >::
58 MultipleSeedsInterface( itk::ProcessObject* f )
59   : Superclass( f )
60 {
61 }
62
63 // -------------------------------------------------------------------------
64 template< class _TTraits >
65 fpa::Filters::MultipleSeedsInterface< _TTraits >::
66 ~MultipleSeedsInterface( )
67 {
68 }
69
70 // -------------------------------------------------------------------------
71 template< class _TTraits >
72 void fpa::Filters::MultipleSeedsInterface< _TTraits >::
73 _PrepareSeeds( const itk::DataObject* reference )
74 {
75   // Input object is an image?
76   typedef itk::ImageBase< TTraits::Dimension > _TImageBase;
77   const _TImageBase* image =
78     dynamic_cast< const _TImageBase* >( reference );
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__MultipleSeedsInterface__hxx__
98 // eof - $RCSfile$