// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Base__MarksInterfaceWithCollisions__h__ #define __fpa__Base__MarksInterfaceWithCollisions__h__ #include #include #include namespace fpa { namespace Base { /** */ template< class _TVertex > class MarksInterfaceWithCollisions : public fpa::Base::MarksInterface< _TVertex > { public: typedef _TVertex TVertex; typedef MarksInterfaceWithCollisions Self; typedef fpa::Base::MarksInterface< TVertex > Superclass; // Minigraph to represent collisions typedef std::pair< TVertex, bool > TCollision; typedef std::vector< TCollision > TCollisionsRow; typedef std::vector< TCollisionsRow > TCollisions; public: bool StopAtOneFront( ) const; void StopAtOneFrontOn( ); void StopAtOneFrontOff( ); void SetStopAtOneFront( bool v ); protected: MarksInterfaceWithCollisions( itk::ProcessObject* filter ); virtual ~MarksInterfaceWithCollisions( ); virtual void _InitMarks( unsigned long nSeeds ) override; virtual bool _Collisions( const TVertex& a, const TVertex& b ) override; protected: bool m_StopAtOneFront; TCollisions m_Collisions; unsigned int m_NumberOfFronts; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Base__MarksInterfaceWithCollisions__h__ // eof - $RCSfile$