// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Filters__SeedsInterface__hxx__ #define __fpa__Filters__SeedsInterface__hxx__ #include // ------------------------------------------------------------------------- template< class _TTraits > fpa::Filters::SeedsInterface< _TTraits >:: SeedsInterface( itk::ProcessObject* f ) : m_Filter( f ) { } // ------------------------------------------------------------------------- template< class _TTraits > fpa::Filters::SeedsInterface< _TTraits >:: ~SeedsInterface( ) { } // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::SeedsInterface< _TTraits >:: AddSeed( const TPoint& s ) { TSeed seed( this->m_InputSeeds.size( ) + 1 ); seed.Point = s; seed.IsPoint = true; this->m_InputSeeds.push_back( seed ); if( this->m_Filter.IsNotNull( ) ) this->m_Filter->Modified( ); } // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::SeedsInterface< _TTraits >:: AddSeed( const TVertex& s ) { TSeed seed( this->m_InputSeeds.size( ) + 1 ); seed.Vertex = s; seed.IsPoint = false; this->m_InputSeeds.push_back( seed ); if( this->m_Filter.IsNotNull( ) ) this->m_Filter->Modified( ); } // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::SeedsInterface< _TTraits >:: ClearSeeds( ) { this->m_InputSeeds.clear( ); this->m_UnifiedSeeds.clear( ); if( this->m_Filter.IsNotNull( ) ) this->m_Filter->Modified( ); } // ------------------------------------------------------------------------- template< class _TTraits > const typename fpa::Filters::SeedsInterface< _TTraits >:: TNodes& fpa::Filters::SeedsInterface< _TTraits >:: GetSeeds( ) const { return( this->m_UnifiedSeeds ); } // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::SeedsInterface< _TTraits >:: _PrepareSeeds( const itk::DataObject* input ) { // Input object is an image? typedef itk::ImageBase< Self::Dimension > _TImageBase; const _TImageBase* image = dynamic_cast< const _TImageBase* >( input ); if( image != NULL ) { this->m_UnifiedSeeds.clear( ); for( TSeed iSeed: this->m_InputSeeds ) { if( iSeed.IsPoint ) image->TransformPhysicalPointToIndex( iSeed.Point, iSeed.Vertex ); TNode node; node.Vertex = iSeed.Vertex; node.Parent = iSeed.Vertex; node.FrontId = iSeed.FrontId; this->m_UnifiedSeeds.insert( node ); } // rof } // fi } #endif // __fpa__Filters__SeedsInterface__hxx__ // eof - $RCSfile$