]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Base/RegionGrow.hxx
CMake updated. Some other filters added.
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrow.hxx
index f0c45121eb5b2a5ea5e883c415ec0a7507593646..1760ac1eb9b89d2f5b3937eb1e550b158fb0d434 100644 (file)
@@ -2,8 +2,8 @@
 #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 ) ),
@@ -12,15 +12,26 @@ RegionGrow( )
 }
 
 // -------------------------------------------------------------------------
-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
@@ -39,24 +50,24 @@ _ComputeNeighborResult(
 }
 
 // -------------------------------------------------------------------------
-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;
@@ -65,8 +76,8 @@ _QueuePop( TVertex& v, _TNode& 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 >::
 _QueueClear( )
 {
   while( this->m_Queue.size( ) > 0 )