X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FFilters%2FAlgorithm.hxx;fp=lib%2Ffpa%2FFilters%2FAlgorithm.hxx;h=0000000000000000000000000000000000000000;hb=a8ac405fe1422bc0792a810f7f0693096a22c20e;hp=1d03a721a93c0782afda22009f8b60384ff252f5;hpb=8abe87eaa0d29ba667d5cbf35f4ca1ca2e38c6c4;p=FrontAlgorithms.git diff --git a/lib/fpa/Filters/Algorithm.hxx b/lib/fpa/Filters/Algorithm.hxx deleted file mode 100644 index 1d03a72..0000000 --- a/lib/fpa/Filters/Algorithm.hxx +++ /dev/null @@ -1,250 +0,0 @@ -// ========================================================================= -// @author Leonardo Florez Valencia -// @email florez-l@javeriana.edu.co -// ========================================================================= -#ifndef __fpa__Filters__Algorithm__hxx__ -#define __fpa__Filters__Algorithm__hxx__ - -#include -#include - -// ------------------------------------------------------------------------- -template< class _TTraits > -itk::ModifiedTimeType fpa::Filters::Algorithm< _TTraits >:: -GetMTime( ) const -{ - itk::ModifiedTimeType q = this->Superclass::GetMTime( ); - itk::ModifiedTimeType t; - for( itk::Object* o: this->m_AssociatedObjects ) - { - if( o != NULL ) - { - t = o->GetMTime( ); - q = ( q < t )? q: t; - - } // fi - - } // rof - return( q ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -InvokeEvent( const itk::EventObject& e ) -{ - TEvent a; - if( a.CheckEvent( &e ) ) - { - if( this->m_VisualDebug ) - this->Superclass::InvokeEvent( e ); - } - else - this->Superclass::InvokeEvent( e ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -InvokeEvent( const itk::EventObject& e ) const -{ - TEvent a; - if( a.CheckEvent( &e ) ) - { - if( this->m_VisualDebug ) - this->Superclass::InvokeEvent( e ); - } - else - this->Superclass::InvokeEvent( e ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -fpa::Filters::Algorithm< _TTraits >:: -Algorithm( ) - : Superclass( ), - TMarksInterface( this ), - TSeedsInterface( this ), - m_VisualDebug( false ), - m_InitValue( TOutputValue( 0 ) ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -fpa::Filters::Algorithm< _TTraits >:: -~Algorithm( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -GenerateData( ) -{ - // Init algorithm - this->InvokeEvent( itk::StartEvent( ) ); - this->_BeforeGenerateData( ); - this->_ConfigureOutputs( ); - this->_PrepareSeeds( this->_GetReferenceInput( ) ); - this->_InitCollisions( this->GetSeeds( ).size( ) ); - - // Init queue - for( TNode seed: this->GetSeeds( ) ) - { - seed.Value = this->m_InitValue; - this->_QueuePush( seed ); - this->InvokeEvent( TEvent( seed.Vertex, seed.FrontId, true ) ); - - } // rof - - // Main loop - while( this->_QueueSize( ) > 0 ) - { - // Get next candidate - TNode node = this->_QueuePop( ); - this->InvokeEvent( TEvent( node.Vertex, node.FrontId, false ) ); - - if( !( this->_IsMarked( node ) ) ) - { - // Update output value and mark vertex - this->_UpdateOutputValue( node ); - this->_Mark( node ); - - // 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( ); - bool coll = false; - while( nIt != neighbors.end( ) && !coll ) - { - if( this->_IsMarked( *nIt ) ) - { - // Invoke stop at collisions - if( this->_Collisions( node.Vertex, *nIt ) ) - { - this->_QueueClear( ); - coll = true; - - } // fi - } - else - { - TNode nnode; - nnode.Vertex = *nIt; - nnode.Parent = node.Vertex; - nnode.FrontId = node.FrontId; - this->_ComputeOutputValue( nnode ); - this->_QueuePush( nnode ); - this->InvokeEvent( TEvent( nnode.Vertex, nnode.FrontId, true ) ); - - } // fi - ++nIt; - - } // elihw - - } // fi - - } // fi - this->_Reinitialize( ); - - } // elihw - - // Finish algorithm - this->_AfterGenerateData( ); - this->InvokeEvent( itk::EndEvent( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_Associate( itk::Object* o ) -{ - if( this->m_AssociatedObjects.insert( o ).second ) - this->Modified( ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_Deassociate( itk::Object* o ) -{ - std::set< itk::Object* >::iterator i = this->m_AssociatedObjects.find( o ); - if( i != this->m_AssociatedObjects.end( ) ) - { - this->m_AssociatedObjects.erase( i ); - this->Modified( ); - - } // fi -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_DeassociateAll( ) -{ - if( this->m_AssociatedObjects.size( ) > 0 ) - this->Modified( ); - this->m_AssociatedObjects.clear( ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_BeforeGenerateData( ) -{ - typedef fpa::Functors::LightBaseVertexFunction< TVertex > _TVertexFunc; - const itk::DataObject* input = this->GetInput( ); - for( itk::Object* o: this->m_AssociatedObjects ) - { - _TVertexFunc* f = dynamic_cast< _TVertexFunc* >( o ); - if( f != NULL ) - f->SetDataObject( input ); - - } // rof -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_AfterGenerateData( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -void fpa::Filters::Algorithm< _TTraits >:: -_Reinitialize( ) -{ -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -const itk::DataObject* fpa::Filters::Algorithm< _TTraits >:: -_GetReferenceInput( ) const -{ - return( this->GetInput( ) ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -typename fpa::Filters::Algorithm< _TTraits >:: -TInputValue fpa::Filters::Algorithm< _TTraits >:: -_GetInputValue( const TNode& n ) const -{ - return( this->_GetInputValue( n.Vertex ) ); -} - -// ------------------------------------------------------------------------- -template< class _TTraits > -typename fpa::Filters::Algorithm< _TTraits >:: -TOutputValue fpa::Filters::Algorithm< _TTraits >:: -_GetOutputValue( const TNode& n ) const -{ - return( this->_GetOutputValue( n.Vertex ) ); -} - -#endif // __fpa__Filters__Algorithm__hxx__ -// eof - $RCSfile$