#define __fpa__Base__Algorithm__hxx__
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+fpa::Base::Algorithm< _TTraits >::TEvent::
TEvent( )
: Superclass( )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+fpa::Base::Algorithm< _TTraits >::TEvent::
TEvent( const TVertex& v, unsigned long fid, bool intoq )
: Superclass( ),
Vertex( v ),
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+fpa::Base::Algorithm< _TTraits >::TEvent::
~TEvent( )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-const char*
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+const char* fpa::Base::Algorithm< _TTraits >::TEvent::
GetEventName( ) const
{
- return( "fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent" );
+ return( "fpa::Base::Algorithm< _TTraits >::TEvent" );
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-bool
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+bool fpa::Base::Algorithm< _TTraits >::TEvent::
CheckEvent( const itk::EventObject* e ) const
{
return( dynamic_cast< const Self* >( e ) != NULL );
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-itk::EventObject*
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::TEvent::
+template< class _TTraits >
+itk::EventObject* fpa::Base::Algorithm< _TTraits >::TEvent::
MakeObject( ) const
{
return( new Self );
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
InvokeEvent( const itk::EventObject& e )
{
TEvent a;
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
InvokeEvent( const itk::EventObject& e ) const
{
TEvent a;
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+fpa::Base::Algorithm< _TTraits >::
Algorithm( )
: Superclass( ),
- _TMarksInterface( this ),
- _TSeedsInterface( this ),
+ TMarksInterface( this ),
+ TSeedsInterface( this ),
m_VisualDebug( false )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+fpa::Base::Algorithm< _TTraits >::
~Algorithm( )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
GenerateData( )
{
this->InvokeEvent( itk::StartEvent( ) );
this->InvokeEvent( TEvent( node.Vertex, node.FrontId, false ) );
if( !( this->_IsMarked( node.Vertex ) ) )
{
- // Mark it
- if( this->_Mark( node.Vertex, node.FrontId ) )
- {
- // Update output value
- this->_UpdateOutputValue( node );
+ // Update output value and mark vertex
+ this->_UpdateOutputValue( node );
+ this->_Mark( node.Vertex, node.FrontId );
+ // The actual node was effectively marked?
+ if( node.FrontId > 0 )
+ {
// Add neighborhood
TNeighborhood neighbors = this->_GetNeighbors( node.Vertex );
typename TNeighborhood::const_iterator nIt = neighbors.begin( );
nnode.Vertex = *nIt;
nnode.Parent = node.Vertex;
nnode.FrontId = node.FrontId;
- nnode.Value = this->_ComputeOutputValue( nnode );
+ this->_ComputeOutputValue( nnode );
this->_QueuePush( nnode );
this->InvokeEvent( TEvent( nnode.Vertex, nnode.FrontId, true ) );
} // fi
} // fi
+ this->_FinishOneLoop( );
} // elihw
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
_BeforeGenerateData( )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
_AfterGenerateData( )
{
}
// -------------------------------------------------------------------------
-template< class _TFilter, class _TMarksInterface, class _TSeedsInterface >
-void fpa::Base::Algorithm< _TFilter, _TMarksInterface, _TSeedsInterface >::
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
+_FinishOneLoop( )
+{
+}
+
+// -------------------------------------------------------------------------
+template< class _TTraits >
+void fpa::Base::Algorithm< _TTraits >::
_QueueInit( )
{
this->_QueueClear( );