#ifndef __fpa__Image__DefaultTraits__h__
#define __fpa__Image__DefaultTraits__h__
+#include <set>
#include <vector>
#include <itkConceptChecking.h>
-#include <itkImageToImageFilter.h>
+#include <fpa/Base/Event.h>
namespace fpa
{
typedef typename TOutputImage::PixelType TOutputValue;
typedef typename TVertex::LexicographicCompare TCompare;
- typedef std::vector< TVertex > TNeighborhood;
+ typedef fpa::Base::Event< TVertex > TEvent;
+ typedef std::vector< TVertex > TNeighborhood;
- typedef typename TSeedsInterface::TNode TNode;
- typedef typename TSeedsInterface::TNodes TNodes;
- typedef typename TSeedsInterface::TSeed TSeed;
- typedef typename TSeedsInterface::TSeeds TSeeds;
+ 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(