X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FFilters%2FMultipleSeedsInterface.hxx;fp=lib%2Ffpa%2FFilters%2FMultipleSeedsInterface.hxx;h=38031132d199739d9a47fe450a7e1eac030e04b7;hb=bd89a1af0c14ed2ac0afeca923103de54283cbaf;hp=0000000000000000000000000000000000000000;hpb=a8ac405fe1422bc0792a810f7f0693096a22c20e;p=FrontAlgorithms.git diff --git a/lib/fpa/Filters/MultipleSeedsInterface.hxx b/lib/fpa/Filters/MultipleSeedsInterface.hxx new file mode 100644 index 0000000..3803113 --- /dev/null +++ b/lib/fpa/Filters/MultipleSeedsInterface.hxx @@ -0,0 +1,98 @@ +// ========================================================================= +// @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$