X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FBase%2FSingleSeedInterface.h;h=807d8d0552cb557818446b85d7941be37fad782e;hb=c9542e420b94b0bfc1f285599f7816eab1191519;hp=0b2147b24845172b402fa27457017d58f6acfada;hpb=5bf766068f54d061d3816f4950a076c3cf3a4d8b;p=FrontAlgorithms.git diff --git a/lib/fpa/Base/SingleSeedInterface.h b/lib/fpa/Base/SingleSeedInterface.h index 0b2147b..807d8d0 100644 --- a/lib/fpa/Base/SingleSeedInterface.h +++ b/lib/fpa/Base/SingleSeedInterface.h @@ -6,10 +6,7 @@ #ifndef __fpa__Base__SingleSeedInterface__h__ #define __fpa__Base__SingleSeedInterface__h__ -#include -#include -#include - +#include #include #include @@ -19,57 +16,63 @@ namespace fpa { /** */ - template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare = std::greater< _TVertex > > + template< class _TTraits > class SingleSeedInterface { public: + typedef SingleSeedInterface Self; + typedef _TTraits TTraits; + fpa_Base_TraitTypes( typename TTraits ); + + /* TODO + typedef _TVertex TVertex; + typedef _TPoint TPoint; + typedef _TInputValue TInputValue; + typedef _TOutputValue TOutputValue; + typedef _TFrontId TFrontId; + typedef _TCompare TCompare; + typedef SeedsInterface Self; + + struct TSeed + { + TVertex Vertex; + TPoint Point; + bool IsPoint; + bool IsUnified; + TFrontId FrontId; + TSeed( ) + : IsUnified( false ), + FrontId( TFrontId( 0 ) ) + { } + }; + typedef std::vector< TSeed > TSeeds; + + struct TNode + { + TVertex Vertex; + TVertex Parent; + TFrontId FrontId; + + // Hack to hide the fact that seed values need to be initialized + mutable TOutputValue Value; + }; + struct TNodeCompare + { + bool operator()( const TNode& a, const TNode& b ) const + { + TCompare cmp; + return( cmp( a.Vertex, b.Vertex ) ); + } + }; + typedef std::set< TNode, TNodeCompare > TNodes; + */ + + private: itkConceptMacro( Check_TFrontId, ( itk::Concept::IsUnsignedInteger< _TFrontId > ) ); - public: - typedef _TVertex TVertex; - typedef _TPoint TPoint; - typedef _TInputValue TInputValue; - typedef _TOutputValue TOutputValue; - typedef _TFrontId TFrontId; - typedef _TCompare TCompare; - typedef SingleSeedInterface Self; - - struct TSeed - { - TVertex Vertex; - TPoint Point; - bool IsPoint; - bool IsUnified; - TFrontId FrontId; - TSeed( ) - : IsUnified( false ), - FrontId( TFrontId( 0 ) ) - { } - }; - typedef std::vector< TSeed > TSeeds; - - struct TNode - { - TVertex Vertex; - TVertex Parent; - TFrontId FrontId; - - // Hack to hide the fact that seed values need to be initialized - mutable TOutputValue Value; - }; - struct TNodeCompare - { - bool operator()( const TNode& a, const TNode& b ) const - { - TCompare cmp; - return( cmp( a.Vertex, b.Vertex ) ); - } - }; - typedef std::set< TNode, TNodeCompare > TNodes; - public: TSeeds& GetSeeds( ); const TSeeds& GetSeeds( ) const;