]> Creatis software - cpPlugins.git/blobdiff - lib/cpExtensions/Algorithms/GradientImageFunctionBase.hxx
...
[cpPlugins.git] / lib / cpExtensions / Algorithms / GradientImageFunctionBase.hxx
index f4cb928aa59a786fbb9c27aeff0477be757290a0..a858650ea2da60e6f9129ee1c8af537abd25d2c8 100644 (file)
@@ -2,16 +2,19 @@
 #define __CPEXTENSIONS__ALGORITHMS__GRADIENTIMAGEFUNCTIONBASE__HXX__
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-void cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+void
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 Prepare( ) const
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-typename cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
-TOutput cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+typename
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
+TOutput
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 Evaluate( const TPoint& p ) const
 {
   TIndex i;
@@ -20,18 +23,28 @@ Evaluate( const TPoint& p ) const
 }
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-typename cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
-TOutput cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+typename
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
+TOutput
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 EvaluateAtIndex( const TIndex& i ) const
 {
-  return( this->_Evaluate( i ) );
+  bool eval = true;
+  if( this->m_Mask.IsNotNull( ) )
+    eval = ( ( unsigned long )( this->m_Mask->GetPixel( i ) ) > 0 );
+  if( eval )
+    return( this->_Evaluate( i ) );
+  else
+    return( TOutput( -1 ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-typename cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
-TOutput cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+typename
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
+TOutput
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 EvaluateAtContinuousIndex( const TContIndex& i ) const
 {
   TPoint p;
@@ -40,16 +53,16 @@ EvaluateAtContinuousIndex( const TContIndex& i ) const
 }
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 GradientImageFunctionBase( )
   : Superclass( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TGradient >
-cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient >::
+template< class _TGradient, class _TMask >
+cpExtensions::Algorithms::GradientImageFunctionBase< _TGradient, _TMask >::
 ~GradientImageFunctionBase( )
 {
 }