From cf381925e2d3a33242d5cbbfd84c50e8ca90697a Mon Sep 17 00:00:00 2001 From: nikeee13 Date: Sat, 21 Jun 2014 00:11:45 +0200 Subject: [PATCH] Add Clamp --- dist/lib/net40/NTH.dll | Bin 29184 -> 29696 bytes src/NTH/NTH/MathEx.cs | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/dist/lib/net40/NTH.dll b/dist/lib/net40/NTH.dll index 1229482af231562f563a40ec58ab764d7cee3d71..a21009993704cd257e8776378f8fc34c6abe2d72 100644 GIT binary patch literal 29696 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 CrP6Ky diff --git a/src/NTH/NTH/MathEx.cs b/src/NTH/NTH/MathEx.cs index 5060a33..0929185 100644 --- a/src/NTH/NTH/MathEx.cs +++ b/src/NTH/NTH/MathEx.cs @@ -64,6 +64,74 @@ public static long Pow(long x, long y) #endregion + #region Clamp + + public static byte Clamp(byte value, byte min, byte max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static short Clamp(short value, short min, short max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static int Clamp(int value, int min, int max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static long Clamp(long value, long min, long max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static float Clamp(float value, float min, float max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static double Clamp(double value, double min, double max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + public static decimal Clamp(decimal value, decimal min, decimal max) + { + if (value < min) + return min; + if (value > max) + return max; + return value; + } + + #endregion + + #region Min, 3 params /// Returns the smaller of three 32-bit signed integers.