#define __FPA__BASE__REGIONGROWING__HXX__
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+fpa::Base::RegionGrow< V, C, R, S, VC, B >::
RegionGrow( )
: Superclass( ),
m_InsideValue( TResult( 1 ) ),
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+fpa::Base::RegionGrow< V, C, R, S, VC, B >::
~RegionGrow( )
{
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-bool fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
+_CheckMembership( const TVertex& v ) const
+{
+ if( this->m_GrowingFunction.IsNotNull( ) )
+ return( this->m_GrowingFunction->Evaluate( v ) );
+ else
+ return( false );
+}
+
+// -------------------------------------------------------------------------
+template< class V, class C, class R, class S, class VC, class B >
+bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
_ComputeNeighborResult(
TResult& result, const TVertex& neighbor, const TVertex& parent
) const
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-bool fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+bool fpa::Base::RegionGrow< V, C, R, S, VC, B >::
_IsQueueEmpty( ) const
{
return( this->m_Queue.empty( ) );
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-void fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
_QueuePush( const TVertex& v, const _TNode& n )
{
this->m_Queue.push( std::pair< TVertex, _TNode >( v, n ) );
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-void fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
_QueuePop( TVertex& v, _TNode& n )
{
v = this->m_Queue.front( ).first;
}
// -------------------------------------------------------------------------
-template< class V, class C, class R, class VC, class B >
-void fpa::Base::RegionGrow< V, C, R, VC, B >::
+template< class V, class C, class R, class S, class VC, class B >
+void fpa::Base::RegionGrow< V, C, R, S, VC, B >::
_QueueClear( )
{
while( this->m_Queue.size( ) > 0 )