diff --git a/Utilities/ITK/Code/Common/itkNumericTraits.h b/Utilities/ITK/Code/Common/itkNumericTraits.h index f0d95a38addd52526dcc400be81cbae95502fcab..b69fef416988d67d50c623d487abd5e223330db1 100644 --- a/Utilities/ITK/Code/Common/itkNumericTraits.h +++ b/Utilities/ITK/Code/Common/itkNumericTraits.h @@ -183,6 +183,9 @@ public: static bool IsNonnegative(char val) {return val >= Zero; } static char ZeroValue() { return Zero; } static char OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<char> @@ -214,6 +217,9 @@ public: static bool IsNonnegative(signed char val) {return val >= Zero; } static signed char ZeroValue() { return Zero; } static signed char OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<unsigned char> @@ -243,6 +249,9 @@ public: static bool IsNonnegative(unsigned char /*val */) {return true; } static unsigned char ZeroValue() { return Zero; } static unsigned char OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<short> @@ -270,6 +279,9 @@ public: static bool IsNonnegative(short val) {return val >= Zero; } static short ZeroValue() { return Zero; } static short OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<unsigned short> @@ -298,6 +310,9 @@ public: static bool IsNonnegative(unsigned short /*val*/) {return true; } static unsigned short ZeroValue() { return Zero; } static unsigned short OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<int> @@ -325,6 +340,9 @@ public: static bool IsNonnegative(int val) {return val >= Zero; } static int ZeroValue() { return Zero; } static int OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<unsigned int> @@ -356,6 +374,9 @@ public: static bool IsNonnegative(unsigned int /*val*/) {return true; } static unsigned int ZeroValue() { return Zero; } static unsigned int OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<long> @@ -384,6 +405,9 @@ public: static bool IsNonnegative(long val) {return val >= Zero; } static long ZeroValue() { return Zero; } static long OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<unsigned long> @@ -412,6 +436,9 @@ public: static bool IsNonnegative(unsigned long) {return true; } static unsigned long ZeroValue() { return Zero; } static unsigned long OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<float> @@ -440,6 +467,9 @@ public: static bool IsNonnegative(float val) {return val >= Zero; } static float ZeroValue() { return Zero; } static float OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<double> @@ -468,6 +498,9 @@ public: static bool IsNonnegative(double val) {return val >= Zero; } static double ZeroValue() { return Zero; } static double OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits<long double> @@ -496,6 +529,9 @@ public: static bool IsNonnegative(long double val) {return val >= Zero; } static long double ZeroValue() { return Zero; } static long double OneValue() { return One; } + static ValueType Clamp(ValueType val,ValueType minVal, ValueType maxVal) + {return val<minVal?minVal:(val>maxVal?maxVal:val);} + }; /** \class NumericTraits< std::complex<float> > @@ -527,6 +563,12 @@ public: static bool IsNonnegative(TheType val) {return val.real() >= 0.0; } static TheType ZeroValue() { return Zero; } static TheType OneValue() { return One; } + static TheType Clamp(TheType val,TheType minVal, TheType maxVal) + { + return TheType(NumericTraits<ValueType>::Clamp(val.real(),minVal.real(),maxVal.real()), + NumericTraits<ValueType>::Clamp(val.imag(),minVal.imag(),maxVal.imag())); + } + }; @@ -559,6 +601,11 @@ public: static bool IsNonnegative(TheType val) {return val.real() >= 0.0; } static TheType ZeroValue() { return Zero; } static TheType OneValue() { return One; } + static TheType Clamp(TheType val,TheType minVal, TheType maxVal) + { + return TheType(NumericTraits<ValueType>::Clamp(val.real(),minVal.real(),maxVal.real()), + NumericTraits<ValueType>::Clamp(val.imag(),minVal.imag(),maxVal.imag())); + } };