// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Base__SeedsInterface__hxx__ #define __fpa__Base__SeedsInterface__hxx__ // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > unsigned int fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: GetNumberOfSeeds( ) const { return( this->m_Seeds.size( ) ); } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > const typename fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: TSeeds& fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: GetSeeds( ) const { return( this->m_Seeds ); } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > typename fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: TSeeds::const_iterator fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: BeginSeeds( ) const { return( this->m_Seeds.begin( ) ); } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > typename fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: TSeeds::const_iterator fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: EndSeeds( ) const { return( this->m_Seeds.end( ) ); } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > void fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: AddSeed( const TVertex& seed ) { TNode node; node.Vertex = seed; node.Parent = seed; node.FrontId = TFrontId( this->m_Seeds.size( ) + 1 ); if( this->m_Seeds.insert( node ).second && this->m_Filter != NULL ) this->m_Filter->Modified( ); } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > void fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: RemoveSeed( const TVertex& seed ) { TNode node; node.Vertex = seed; node.Parent = seed; typename TSeeds::const_iterator i = this->m_Seeds.find( node ); if( i != this->m_Seeds.end( ) ) { this->m_Seeds.erase( i ); if( this->m_Filter != NULL ) this->m_Filter->Modified( ); } // fi } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > void fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: ClearSeeds( ) { if( this->m_Seeds.size( ) > 0 ) { this->m_Seeds.clear( ); if( this->m_Filter != NULL ) this->m_Filter->Modified( ); } // fi } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: SeedsInterface( itk::ProcessObject* filter ) : m_Filter( filter ) { } // ------------------------------------------------------------------------- template< class _TVertex, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare > fpa::Base::SeedsInterface< _TVertex, _TInputValue, _TOutputValue, _TFrontId, _TCompare >:: ~SeedsInterface( ) { this->m_Seeds.clear( ); } #endif // __fpa__Base__SeedsInterface__hxx__ // eof - $RCSfile$