1 #ifndef __fpa__Base__Dijkstra__hxx__
2 #define __fpa__Base__Dijkstra__hxx__
7 // -------------------------------------------------------------------------
8 template< class _TSuperclass, class _TMST >
9 _TMST* fpa::Base::Dijkstra< _TSuperclass, _TMST >::
10 GetMinimumSpanningTree( )
13 dynamic_cast< _TMST* >(
14 this->itk::ProcessObject::GetOutput( this->m_MSTIndex )
19 // -------------------------------------------------------------------------
20 template< class _TSuperclass, class _TMST >
21 const _TMST* fpa::Base::Dijkstra< _TSuperclass, _TMST >::
22 GetMinimumSpanningTree( ) const
25 dynamic_cast< const _TMST* >(
26 this->itk::ProcessObject::GetOutput( this->m_MSTIndex )
31 // -------------------------------------------------------------------------
32 template< class _TSuperclass, class _TMST >
33 fpa::Base::Dijkstra< _TSuperclass, _TMST >::
37 this->m_InitResult = TOutput( 0 );
38 this->m_MSTIndex = this->GetNumberOfRequiredOutputs( );
39 this->SetNumberOfRequiredOutputs( this->m_MSTIndex + 1 );
40 this->itk::ProcessObject::SetNthOutput( this->m_MSTIndex, _TMST::New( ) );
43 // -------------------------------------------------------------------------
44 template< class _TSuperclass, class _TMST >
45 fpa::Base::Dijkstra< _TSuperclass, _TMST >::
50 // -------------------------------------------------------------------------
51 template< class _TSuperclass, class _TMST >
52 void fpa::Base::Dijkstra< _TSuperclass, _TMST >::
55 this->Superclass::_AfterGenerateData( );
57 auto mst = this->GetMinimumSpanningTree( );
59 for( auto s = this->m_Seeds.begin( ); s != this->m_Seeds.end( ); ++s )
60 mst->AddSeed( s->Vertex );
61 mst->SetCollisions( this->m_Collisions );
64 // -------------------------------------------------------------------------
65 template< class _TSuperclass, class _TMST >
66 void fpa::Base::Dijkstra< _TSuperclass, _TMST >::
67 _UpdateResult( const _TQueueNode& n )
69 this->Superclass::_UpdateResult( n );
70 this->GetMinimumSpanningTree( )->SetParent( n.Vertex, n.Parent );
73 // -------------------------------------------------------------------------
74 template< class _TSuperclass, class _TMST >
75 bool fpa::Base::Dijkstra< _TSuperclass, _TMST >::
76 _UpdateValue( _TQueueNode& v, const _TQueueNode& p )
78 v.Result = this->_GetInputValue( p.Vertex, v.Vertex );
79 if( v.Result >= TOutput( 0 ) )
86 v.Result = this->m_InitResult;
92 #endif // __fpa__Base__Dijkstra__hxx__