]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/FastMarching.h
...
[FrontAlgorithms.git] / lib / fpa / Image / FastMarching.h
index d86d99dc906fbe7c69ee948233d68ecca04bb49a..2a4056f5a07cf13de67288cfd813f18b13677f1e 100644 (file)
@@ -1,10 +1,6 @@
-#ifndef __FPA__IMAGE__FASTMARCHING__H__
-#define __FPA__IMAGE__FASTMARCHING__H__
+#ifndef __fpa__Image__FastMarching__h__
+#define __fpa__Image__FastMarching__h__
 
-#include <itkImage.h>
-#include <itkImageFunction.h>
-#include <itkImageToImageFilter.h>
-#include <itkIndex.h>
 #include <fpa/Base/FastMarching.h>
 #include <fpa/Image/Algorithm.h>
 
@@ -13,46 +9,47 @@ namespace fpa
   namespace Image
   {
     /**
-     * @param I Input image type
      */
-    template< class I, class C >
+    template< class _TInputImage, class _TOutputImage >
     class FastMarching
-      : public Algorithm< I, fpa::Base::FastMarching< typename I::IndexType, C, typename I::PixelType, itk::Functor::IndexLexicographicCompare< I::ImageDimension >, itk::ImageToImageFilter< I, itk::Image< C, I::ImageDimension > > > >
+      : public fpa::Base::FastMarching< fpa::Image::Algorithm< _TInputImage, _TOutputImage > >
     {
     public:
-      // Standard class typdedefs
-      typedef typename I::IndexType TVertex;
-      typedef typename I::PixelType TVertexValue;
-      typedef itk::Image< C, I::ImageDimension > TCostImage;
-      typedef itk::ImageToImageFilter< I, TCostImage > TBaseFilter;
-      typedef fpa::Base::FastMarching< TVertex, C, TVertexValue, itk::Functor::IndexLexicographicCompare< I::ImageDimension >, TBaseFilter > TBaseAlgorithm;
-
-      typedef FastMarching                        Self;
-      typedef Algorithm< I, TBaseAlgorithm >  Superclass;
-      typedef itk::SmartPointer< Self >       Pointer;
-      typedef itk::SmartPointer< const Self > ConstPointer;
+      typedef FastMarching                                         Self;
+      typedef fpa::Image::Algorithm< _TInputImage, _TOutputImage > TAlgorithm;
+      typedef fpa::Base::FastMarching< TAlgorithm > Superclass;
+      typedef itk::SmartPointer< Self >             Pointer;
+      typedef itk::SmartPointer< const Self >       ConstPointer;
+
+      typedef typename Superclass::TOutput TOutput;
+      typedef typename Superclass::TVertex TVertex;
+      typedef typename Superclass::TFastMarchingNeighbor TFastMarchingNeighbor;
+      typedef typename Superclass::TFastMarchingNeighborhood TFastMarchingNeighborhood;
 
     public:
       itkNewMacro( Self );
-      itkTypeMacro( FastMarching, fpaBaseFastMarching );
+      itkTypeMacro( fpa::Image::FastMarching, fpa::Base::FastMarching );
 
     protected:
-      FastMarching( )
-        : Superclass( )
-        { }
-      virtual ~FastMarching( )
-        { }
+      FastMarching( );
+      virtual ~FastMarching( );
+
+      virtual TFastMarchingNeighborhood _FastMarchingNeighbors( const TVertex& v ) const override;
 
     private:
-      // Purposely not implemented
-      FastMarching( const Self& );
-      void operator=( const Self& );
+      // Purposely not defined
+      FastMarching( const Self& other );
+      Self& operator=( const Self& other );
     };
 
   } // ecapseman
 
 } // ecapseman
 
-#endif // __FPA__IMAGE__FASTMARCHING__H__
+#ifndef ITK_MANUAL_INSTANTIATION
+#  include <fpa/Image/FastMarching.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
+
+#endif // __fpa__Image__FastMarching__h__
 
 // eof - $RCSfile$