1 #ifndef __FPA__BASE__REGIONGROWING__HXX__
2 #define __FPA__BASE__REGIONGROWING__HXX__
4 // -------------------------------------------------------------------------
5 template< class V, class C, class R, class S, class VC, class B >
6 fpa::Base::RegionGrow< V, C, R, S, VC, B >::
9 m_InsideValue( TResult( 1 ) ),
10 m_OutsideValue( TResult( 0 ) )
14 // -------------------------------------------------------------------------
15 template< class V, class C, class R, class S, class VC, class B >
16 fpa::Base::RegionGrow< V, C, R, S, VC, B >::
21 // -------------------------------------------------------------------------
22 template< class V, class C, class R, class S, class VC, class B >
23 bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
24 _CheckMembership( const TVertex& v ) const
26 if( this->m_GrowingFunction.IsNotNull( ) )
27 return( this->m_GrowingFunction->Evaluate( v ) );
32 // -------------------------------------------------------------------------
33 template< class V, class C, class R, class S, class VC, class B >
34 bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
35 _ComputeNeighborResult(
36 TResult& result, const TVertex& neighbor, const TVertex& parent
39 if( this->_CheckMembership( neighbor ) )
41 result = this->m_InsideValue;
46 result = this->m_OutsideValue;
52 // -------------------------------------------------------------------------
53 template< class V, class C, class R, class S, class VC, class B >
54 bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
55 _IsQueueEmpty( ) const
57 return( this->m_Queue.empty( ) );
60 // -------------------------------------------------------------------------
61 template< class V, class C, class R, class S, class VC, class B >
62 void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
63 _QueuePush( const TVertex& v, const _TNode& n )
65 this->m_Queue.push( std::pair< TVertex, _TNode >( v, n ) );
68 // -------------------------------------------------------------------------
69 template< class V, class C, class R, class S, class VC, class B >
70 void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
71 _QueuePop( TVertex& v, _TNode& n )
73 v = this->m_Queue.front( ).first;
74 n = this->m_Queue.front( ).second;
78 // -------------------------------------------------------------------------
79 template< class V, class C, class R, class S, class VC, class B >
80 void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
83 while( this->m_Queue.size( ) > 0 )
87 #endif // __FPA__BASE__REGIONGROWING__HXX__