// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Filters__MultipleSeedsInterface__hxx__ #define __fpa__Filters__MultipleSeedsInterface__hxx__ #include // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::MultipleSeedsInterface< _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::MultipleSeedsInterface< _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::MultipleSeedsInterface< _TTraits >:: ClearSeeds( ) { this->m_InputSeeds.clear( ); this->m_UnifiedSeeds.clear( ); if( this->m_Filter.IsNotNull( ) ) this->m_Filter->Modified( ); } // ------------------------------------------------------------------------- template< class _TTraits > unsigned long fpa::Filters::MultipleSeedsInterface< _TTraits >:: GetNumberOfSeeds( ) const { return( this->m_InputSeeds.size( ) ); } // ------------------------------------------------------------------------- template< class _TTraits > fpa::Filters::MultipleSeedsInterface< _TTraits >:: MultipleSeedsInterface( itk::ProcessObject* f ) : Superclass( f ) { } // ------------------------------------------------------------------------- template< class _TTraits > fpa::Filters::MultipleSeedsInterface< _TTraits >:: ~MultipleSeedsInterface( ) { } // ------------------------------------------------------------------------- template< class _TTraits > void fpa::Filters::MultipleSeedsInterface< _TTraits >:: _PrepareSeeds( const itk::DataObject* reference ) { // Input object is an image? typedef itk::ImageBase< TTraits::Dimension > _TImageBase; const _TImageBase* image = dynamic_cast< const _TImageBase* >( reference ); 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__MultipleSeedsInterface__hxx__ // eof - $RCSfile$