]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Base/RegionGrow.hxx
Mori is alivegit status!
[FrontAlgorithms.git] / lib / fpa / Base / RegionGrow.hxx
1 #ifndef __fpa__Base__RegionGrow__hxx__
2 #define __fpa__Base__RegionGrow__hxx__
3
4 #include <fpa/Base/Functors/RegionGrow/Tautology.h>
5
6 // -------------------------------------------------------------------------
7 template< class _TSuperclass >
8 fpa::Base::RegionGrow< _TSuperclass >::
9 RegionGrow( )
10   : Superclass( ),
11     m_InsideValue( TOutput( 1 ) ),
12     m_OutsideValue( TOutput( 0 ) )
13 {
14   this->m_InitResult = TOutput( 0 );
15   this->SetGrowFunction(
16     fpa::Base::Functors::RegionGrow::Tautology< TVertex >::New( )
17     );
18 }
19
20 // -------------------------------------------------------------------------
21 template< class _TSuperclass >
22 fpa::Base::RegionGrow< _TSuperclass >::
23 ~RegionGrow( )
24 {
25 }
26
27 // -------------------------------------------------------------------------
28 template< class _TSuperclass >
29 bool fpa::Base::RegionGrow< _TSuperclass >::
30 _UpdateValue( _TQueueNode& v, const _TQueueNode& p )
31 {
32   if( this->m_GrowFunction.IsNotNull( ) )
33   {
34     bool in = this->m_GrowFunction->Evaluate( p.Vertex, v.Vertex );
35     v.Result = ( in )? this->m_InsideValue: this->m_OutsideValue;
36     return( in );
37   }
38   else
39   {
40     v.Result = this->m_InitResult;
41     return( false );
42
43   } // fi
44 }
45
46 // -------------------------------------------------------------------------
47 template< class _TSuperclass >
48 unsigned long fpa::Base::RegionGrow< _TSuperclass >::
49 _QueueSize( ) const
50 {
51   return( this->m_Queue.size( ) );
52 }
53
54 // -------------------------------------------------------------------------
55 template< class _TSuperclass >
56 void fpa::Base::RegionGrow< _TSuperclass >::
57 _QueueClear( )
58 {
59   while( this->m_Queue.size( ) > 0 )
60     this->m_Queue.pop( );
61 }
62
63 // -------------------------------------------------------------------------
64 template< class _TSuperclass >
65 void fpa::Base::RegionGrow< _TSuperclass >::
66 _QueuePush( const _TQueueNode& node )
67 {
68   this->m_Queue.push( node );
69 }
70
71 // -------------------------------------------------------------------------
72 template< class _TSuperclass >
73 typename fpa::Base::RegionGrow< _TSuperclass >::
74 _TQueueNode fpa::Base::RegionGrow< _TSuperclass >::
75 _QueuePop( )
76 {
77   _TQueueNode f = this->m_Queue.front( );
78   this->m_Queue.pop( );
79   return( f );
80 }
81
82 #endif // __fpa__Base__RegionGrow__hxx__
83
84 // eof - $RCSfile$