X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FRegionGrow.hxx;h=b0beaf29db7e2fc38477df7a13f95474ec5b5bcb;hb=86a6d5df2aa1aa5292a5fa851d98bfc13939bdf3;hp=bdc1ed34c7818bb162480615ab83749cd107b345;hpb=9622bd5b833a8845881003228207e0caca59b081;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/RegionGrow.hxx b/lib/fpa/Base/RegionGrow.hxx index bdc1ed3..b0beaf2 100644 --- a/lib/fpa/Base/RegionGrow.hxx +++ b/lib/fpa/Base/RegionGrow.hxx @@ -1,87 +1,79 @@ -#ifndef __FPA__BASE__REGIONGROWING__HXX__ -#define __FPA__BASE__REGIONGROWING__HXX__ +#ifndef __fpa__Base__RegionGrow__hxx__ +#define __fpa__Base__RegionGrow__hxx__ // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -fpa::Base::RegionGrow< V, R, VV, VC, B >:: +template< class _TSuperclass > +fpa::Base::RegionGrow< _TSuperclass >:: RegionGrow( ) - : Superclass( ) + : Superclass( ), + m_InsideValue( TOutput( 1 ) ), + m_OutsideValue( TOutput( 0 ) ) { + this->m_InitResult = TOutput( 0 ); } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -fpa::Base::RegionGrow< V, R, VV, VC, B >:: +template< class _TSuperclass > +fpa::Base::RegionGrow< _TSuperclass >:: ~RegionGrow( ) { } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -bool fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_UpdateResult( _TNode& n ) +template< class _TSuperclass > +bool fpa::Base::RegionGrow< _TSuperclass >:: +_UpdateValue( _TQueueNode& v, const _TQueueNode& p ) { - n.Result = R( this->_CheckMembership( n ) ); - return( n.Result ); + if( this->m_GrowFunction.IsNotNull( ) ) + { + bool in = this->m_GrowFunction->Evaluate( p.Vertex, v.Vertex ); + v.Result = ( in )? this->m_InsideValue: this->m_OutsideValue; + return( in ); + } + else + { + v.Result = this->m_InitResult; + return( false ); + + } // fi } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -void fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_InitializeQueue( ) +template< class _TSuperclass > +unsigned long fpa::Base::RegionGrow< _TSuperclass >:: +_QueueSize( ) const { - for( - typename _TNodes::const_iterator vIt = this->m_Seeds.begin( ); - vIt != this->m_Seeds.end( ); - vIt++ - ) - this->_QueuePush( *vIt ); + return( this->m_Queue.size( ) ); } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -bool fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_IsQueueEmpty( ) const +template< class _TSuperclass > +void fpa::Base::RegionGrow< _TSuperclass >:: +_QueueClear( ) { - return( this->m_Queue.empty( ) ); + while( this->m_Queue.size( ) > 0 ) + this->m_Queue.pop( ); } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -void fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_QueuePush( const _TNode& n ) +template< class _TSuperclass > +void fpa::Base::RegionGrow< _TSuperclass >:: +_QueuePush( const _TQueueNode& node ) { - this->m_Queue.push( n ); + this->m_Queue.push( node ); } // ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -typename fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_TNode fpa::Base::RegionGrow< V, R, VV, VC, B >:: +template< class _TSuperclass > +typename fpa::Base::RegionGrow< _TSuperclass >:: +_TQueueNode fpa::Base::RegionGrow< _TSuperclass >:: _QueuePop( ) { - _TNode n = this->m_Queue.front( ); + _TQueueNode f = this->m_Queue.front( ); this->m_Queue.pop( ); - return( n ); -} - -// ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -void fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_QueueClear( ) -{ - while( this->m_Queue.size( ) > 0 ) - this->m_Queue.pop( ); -} - -// ------------------------------------------------------------------------- -template< class V, class R, class VV, class VC, class B > -bool fpa::Base::RegionGrow< V, R, VV, VC, B >:: -_UpdateNeigh( _TNode& nn, const _TNode& n ) -{ - return( true ); + return( f ); } -#endif // __FPA__BASE__REGIONGROWING__HXX__ +#endif // __fpa__Base__RegionGrow__hxx__ // eof - $RCSfile$