]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/RegionGrow.hxx
CMake updated. Some other filters added.
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrow.hxx
1 #ifndef __FPA__BASE__REGIONGROWING__HXX__
2 #define __FPA__BASE__REGIONGROWING__HXX__
3
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 >::
7 RegionGrow( )
8   : Superclass( ),
9     m_InsideValue( TResult( 1 ) ),
10     m_OutsideValue( TResult( 0 ) )
11 {
12 }
13
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 >::
17 ~RegionGrow( )
18 {
19 }
20
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
25 {
26   if( this->m_GrowingFunction.IsNotNull( ) )
27     return( this->m_GrowingFunction->Evaluate( v ) );
28   else
29     return( false );
30 }
31
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
37   ) const
38 {
39   if( this->_CheckMembership( neighbor ) )
40   {
41     result = this->m_InsideValue;
42     return( true );
43   }
44   else
45   {
46     result = this->m_OutsideValue;
47     return( false );
48
49   } // fi
50 }
51
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
56 {
57   return( this->m_Queue.empty( ) );
58 }
59
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 )
64 {
65   this->m_Queue.push( std::pair< TVertex, _TNode >( v, n ) );
66 }
67
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 )
72 {
73   v = this->m_Queue.front( ).first;
74   n = this->m_Queue.front( ).second;
75   this->m_Queue.pop( );
76 }
77
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 >::
81 _QueueClear( )
82 {
83   while( this->m_Queue.size( ) > 0 )
84     this->m_Queue.pop( );
85 }
86
87 #endif // __FPA__BASE__REGIONGROWING__HXX__
88
89 // eof - $RCSfile$