]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/DefaultTraits.h
...
[FrontAlgorithms.git] / lib / fpa / Image / DefaultTraits.h
index 9ce95eb67a718b9f707b02501270945fb6a792cb..b56bdec5f3f19c84834eb2f1c4fe0cf1a74c176e 100644 (file)
@@ -6,9 +6,10 @@
 #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
 {
@@ -32,12 +33,41 @@ 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(