Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Unified Diff: ui/gfx/safe_integer_conversions.h

Issue 11414284: Inline gfx::Vector2d* ctors and integer conversions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | ui/gfx/safe_integer_conversions.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/safe_integer_conversions.h
diff --git a/ui/gfx/safe_integer_conversions.h b/ui/gfx/safe_integer_conversions.h
index 55d7ac1a42d66f2103c7e0aad31e04408113d474..edd8a4cafeeaa9ac24947de4b2312958b3c3b2ce 100644
--- a/ui/gfx/safe_integer_conversions.h
+++ b/ui/gfx/safe_integer_conversions.h
@@ -5,15 +5,49 @@
#ifndef UI_GFX_SAFE_INTEGER_CONVERSIONS_H_
#define UI_GFX_SAFE_INTEGER_CONVERSIONS_H_
+#include <cmath>
+#include <limits>
+
#include "ui/base/ui_export.h"
namespace gfx {
-UI_EXPORT int ClampToInt(float value);
-UI_EXPORT int ToFlooredInt(float value);
-UI_EXPORT int ToCeiledInt(float value);
-UI_EXPORT int ToRoundedInt(float value);
-UI_EXPORT bool IsExpressibleAsInt(float value);
+inline int ClampToInt(float value) {
+ if (value != value)
+ return 0; // no int NaN.
+ if (value >= std::numeric_limits<int>::max())
+ return std::numeric_limits<int>::max();
+ if (value <= std::numeric_limits<int>::min())
+ return std::numeric_limits<int>::min();
+ return static_cast<int>(value);
+}
+
+inline int ToFlooredInt(float value) {
+ return ClampToInt(std::floor(value));
+}
+
+inline int ToCeiledInt(float value) {
+ return ClampToInt(std::ceil(value));
+}
+
+inline int ToRoundedInt(float value) {
+ float rounded;
+ if (value >= 0.0f)
+ rounded = std::floor(value + 0.5f);
+ else
+ rounded = std::ceil(value - 0.5f);
+ return ClampToInt(rounded);
+}
+
+inline bool IsExpressibleAsInt(float value) {
+ if (value != value)
+ return false; // no int NaN.
+ if (value > std::numeric_limits<int>::max())
+ return false;
+ if (value < std::numeric_limits<int>::min())
+ return false;
+ return true;
+}
} // namespace gfx
« no previous file with comments | « no previous file | ui/gfx/safe_integer_conversions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698