]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Algorithms/GradientImageFunctionBase.h
...
[cpPlugins.git] / lib / cpExtensions / Algorithms / GradientImageFunctionBase.h
index d416e04e177928e45718cc0696f1693d5cc75c48..73504954b9870664b98f460d9a048c3d56a5b6c1 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __CPEXTENSIONS__ALGORITHMS__GRADIENTIMAGEFUNCTIONBASE__H__
 #define __CPEXTENSIONS__ALGORITHMS__GRADIENTIMAGEFUNCTIONBASE__H__
 
+#include <cpExtensions/Config.h>
+#include <itkImage.h>
 #include <itkImageFunction.h>
 
 namespace cpExtensions
@@ -10,16 +12,19 @@ namespace cpExtensions
     /**
      * Base class to compute values based on image gradients (vector).
      */
-    template< class _TGradient >
+    template< class _TGradient, class _TMask = itk::Image< unsigned char, _TGradient::ImageDimension > >
     class GradientImageFunctionBase
       : public itk::ImageFunction< _TGradient, typename _TGradient::PixelType::ValueType, typename _TGradient::PixelType::ValueType >
     {
     public:
       // Types from input arguments
       typedef _TGradient                     TGradient;
+      typedef _TMask                         TMask;
       typedef typename _TGradient::PixelType TVector;
       typedef typename TVector::ValueType    TScalar;
-      itkStaticConstMacro( Dimension, unsigned int, _TGradient::ImageDimension );
+      itkStaticConstMacro(
+        Dimension, unsigned int, _TGradient::ImageDimension
+        );
 
       // Standard itk types
       typedef GradientImageFunctionBase                          Self;
@@ -37,11 +42,14 @@ namespace cpExtensions
     public:
       itkTypeMacro( GradientImageFunctionBase, itkImageFunction );
 
+      itkGetConstObjectMacro( Mask, TMask );
+      itkSetConstObjectMacro( Mask, TMask );
+
     public:
       virtual void Prepare( ) const;
-      virtual TOutput Evaluate( const TPoint& p ) const ITK_OVERRIDE;
-      virtual TOutput EvaluateAtIndex( const TIndex& i ) const ITK_OVERRIDE;
-      virtual TOutput EvaluateAtContinuousIndex( const TContIndex& i ) const ITK_OVERRIDE;
+      virtual TOutput Evaluate( const TPoint& p ) const cpExtensions_OVERRIDE;
+      virtual TOutput EvaluateAtIndex( const TIndex& i ) const cpExtensions_OVERRIDE;
+      virtual TOutput EvaluateAtContinuousIndex( const TContIndex& i ) const cpExtensions_OVERRIDE;
 
     protected:
       GradientImageFunctionBase( );
@@ -53,6 +61,9 @@ namespace cpExtensions
       // Purposely not implemented.
       GradientImageFunctionBase( const Self& );
       void operator=( const Self& );
+
+    protected:
+      typename _TMask::ConstPointer m_Mask;
     };
 
   } // ecapseman