diff options
author | Steve Block <steveblock@google.com> | 2011-05-18 13:36:51 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-05-24 15:38:28 +0100 |
commit | 2fc2651226baac27029e38c9d6ef883fa32084db (patch) | |
tree | e396d4bf89dcce6ed02071be66212495b1df1dec /Source/JavaScriptCore/wtf/MathExtras.h | |
parent | b3725cedeb43722b3b175aaeff70552e562d2c94 (diff) | |
download | external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.zip external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.gz external_webkit-2fc2651226baac27029e38c9d6ef883fa32084db.tar.bz2 |
Merge WebKit at r78450: Initial merge by git.
Change-Id: I6d3e5f1f868ec266a0aafdef66182ddc3f265dc1
Diffstat (limited to 'Source/JavaScriptCore/wtf/MathExtras.h')
-rw-r--r-- | Source/JavaScriptCore/wtf/MathExtras.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/MathExtras.h b/Source/JavaScriptCore/wtf/MathExtras.h index 095549e..ec27f5f 100644 --- a/Source/JavaScriptCore/wtf/MathExtras.h +++ b/Source/JavaScriptCore/wtf/MathExtras.h @@ -26,8 +26,10 @@ #ifndef WTF_MathExtras_h #define WTF_MathExtras_h +#include <algorithm> #include <cmath> #include <float.h> +#include <limits> #include <stdlib.h> #if OS(SOLARIS) @@ -205,6 +207,32 @@ inline float deg2turn(float d) { return d / 360.0f; } inline float rad2grad(float r) { return r * 200.0f / piFloat; } inline float grad2rad(float g) { return g * piFloat / 200.0f; } +inline int clampToInteger(double d) +{ + const double minIntAsDouble = std::numeric_limits<int>::min(); + const double maxIntAsDouble = std::numeric_limits<int>::max(); + return static_cast<int>(std::max(std::min(d, maxIntAsDouble), minIntAsDouble)); +} + +inline int clampToPositiveInteger(double d) +{ + const double maxIntAsDouble = std::numeric_limits<int>::max(); + return static_cast<int>(std::max<double>(std::min(d, maxIntAsDouble), 0)); +} + +inline int clampToInteger(float d) +{ + const float minIntAsFloat = static_cast<float>(std::numeric_limits<int>::min()); + const float maxIntAsFloat = static_cast<float>(std::numeric_limits<int>::max()); + return static_cast<int>(std::max(std::min(d, maxIntAsFloat), minIntAsFloat)); +} + +inline int clampToPositiveInteger(float d) +{ + const float maxIntAsFloat = static_cast<float>(std::numeric_limits<int>::max()); + return static_cast<int>(std::max<float>(std::min(d, maxIntAsFloat), 0)); +} + #if !COMPILER(MSVC) && !COMPILER(WINSCW) && !(COMPILER(RVCT) && (OS(SYMBIAN) || PLATFORM(BREWMP))) using std::isfinite; using std::isinf; |