summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 05:42:19 +0000
committerdanakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 05:42:19 +0000
commit81e9af664a30a4aef130c63b3119b67ad21f3069 (patch)
treebf0be2a73e1a106d98011fde75ec5d1442ca0f4d
parent952eedd8fb698ef10c2195e93a4914f2ef7a8b50 (diff)
downloadchromium_src-81e9af664a30a4aef130c63b3119b67ad21f3069.zip
chromium_src-81e9af664a30a4aef130c63b3119b67ad21f3069.tar.gz
chromium_src-81e9af664a30a4aef130c63b3119b67ad21f3069.tar.bz2
Add gfx::ToRoundedSize() method to round a floating point size to an integer size.
R=sky BUG=147395 Review URL: https://chromiumcodereview.appspot.com/11096034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161502 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/gfx/size_conversions.cc6
-rw-r--r--ui/gfx/size_conversions.h3
-rw-r--r--ui/gfx/size_unittest.cc106
3 files changed, 115 insertions, 0 deletions
diff --git a/ui/gfx/size_conversions.cc b/ui/gfx/size_conversions.cc
index 7fb3d24..eacbeb4 100644
--- a/ui/gfx/size_conversions.cc
+++ b/ui/gfx/size_conversions.cc
@@ -20,5 +20,11 @@ Size ToCeiledSize(const SizeF& size) {
return Size(w, h);
}
+Size ToRoundedSize(const SizeF& size) {
+ int w = ToRoundedInt(size.width());
+ int h = ToRoundedInt(size.height());
+ return Size(w, h);
+}
+
} // namespace gfx
diff --git a/ui/gfx/size_conversions.h b/ui/gfx/size_conversions.h
index 03197b3..494f483 100644
--- a/ui/gfx/size_conversions.h
+++ b/ui/gfx/size_conversions.h
@@ -16,6 +16,9 @@ UI_EXPORT Size ToFlooredSize(const SizeF& size);
// Returns a Size with each component from the input SizeF ceiled.
UI_EXPORT Size ToCeiledSize(const SizeF& size);
+// Returns a Size with each component from the input SizeF rounded.
+UI_EXPORT Size ToRoundedSize(const SizeF& size);
+
} // namespace gfx
#endif // UI_GFX_RECT_CONVERSIONS_H_
diff --git a/ui/gfx/size_unittest.cc b/ui/gfx/size_unittest.cc
index 65d58ca..119764f 100644
--- a/ui/gfx/size_unittest.cc
+++ b/ui/gfx/size_unittest.cc
@@ -6,6 +6,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/size.h"
+#include "ui/gfx/size_conversions.h"
#include "ui/gfx/size_f.h"
namespace ui {
@@ -28,4 +29,109 @@ TEST(SizeTest, ToSizeF) {
EXPECT_EQ(true, equals);
}
+TEST(SizeTest, ToFlooredSize) {
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToFlooredSize(gfx::SizeF(0, 0)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToFlooredSize(gfx::SizeF(0.0001f, 0.0001f)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToFlooredSize(gfx::SizeF(0.4999f, 0.4999f)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToFlooredSize(gfx::SizeF(0.5f, 0.5f)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToFlooredSize(gfx::SizeF(0.9999f, 0.9999f)));
+
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToFlooredSize(gfx::SizeF(10, 10)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToFlooredSize(gfx::SizeF(10.0001f, 10.0001f)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToFlooredSize(gfx::SizeF(10.4999f, 10.4999f)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToFlooredSize(gfx::SizeF(10.5f, 10.5f)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToFlooredSize(gfx::SizeF(10.9999f, 10.9999f)));
+
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToFlooredSize(gfx::SizeF(-10, -10)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToFlooredSize(gfx::SizeF(-10.0001f, -10.0001f)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToFlooredSize(gfx::SizeF(-10.4999f, -10.4999f)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToFlooredSize(gfx::SizeF(-10.5f, -10.5f)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToFlooredSize(gfx::SizeF(-10.9999f, -10.9999f)));
+}
+
+TEST(SizeTest, ToCeiledSize) {
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToCeiledSize(gfx::SizeF(0, 0)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToCeiledSize(gfx::SizeF(0.0001f, 0.0001f)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToCeiledSize(gfx::SizeF(0.4999f, 0.4999f)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToCeiledSize(gfx::SizeF(0.5f, 0.5f)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToCeiledSize(gfx::SizeF(0.9999f, 0.9999f)));
+
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToCeiledSize(gfx::SizeF(10, 10)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToCeiledSize(gfx::SizeF(10.0001f, 10.0001f)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToCeiledSize(gfx::SizeF(10.4999f, 10.4999f)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToCeiledSize(gfx::SizeF(10.5f, 10.5f)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToCeiledSize(gfx::SizeF(10.9999f, 10.9999f)));
+
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToCeiledSize(gfx::SizeF(-10, -10)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToCeiledSize(gfx::SizeF(-10.0001f, -10.0001f)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToCeiledSize(gfx::SizeF(-10.4999f, -10.4999f)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToCeiledSize(gfx::SizeF(-10.5f, -10.5f)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToCeiledSize(gfx::SizeF(-10.9999f, -10.9999f)));
+}
+
+TEST(SizeTest, ToRoundedSize) {
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToRoundedSize(gfx::SizeF(0, 0)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToRoundedSize(gfx::SizeF(0.0001f, 0.0001f)));
+ EXPECT_EQ(gfx::Size(0, 0),
+ gfx::ToRoundedSize(gfx::SizeF(0.4999f, 0.4999f)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToRoundedSize(gfx::SizeF(0.5f, 0.5f)));
+ EXPECT_EQ(gfx::Size(1, 1),
+ gfx::ToRoundedSize(gfx::SizeF(0.9999f, 0.9999f)));
+
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToRoundedSize(gfx::SizeF(10, 10)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToRoundedSize(gfx::SizeF(10.0001f, 10.0001f)));
+ EXPECT_EQ(gfx::Size(10, 10),
+ gfx::ToRoundedSize(gfx::SizeF(10.4999f, 10.4999f)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToRoundedSize(gfx::SizeF(10.5f, 10.5f)));
+ EXPECT_EQ(gfx::Size(11, 11),
+ gfx::ToRoundedSize(gfx::SizeF(10.9999f, 10.9999f)));
+
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToRoundedSize(gfx::SizeF(-10, -10)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToRoundedSize(gfx::SizeF(-10.0001f, -10.0001f)));
+ EXPECT_EQ(gfx::Size(-10, -10),
+ gfx::ToRoundedSize(gfx::SizeF(-10.4999f, -10.4999f)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToRoundedSize(gfx::SizeF(-10.5f, -10.5f)));
+ EXPECT_EQ(gfx::Size(-11, -11),
+ gfx::ToRoundedSize(gfx::SizeF(-10.9999f, -10.9999f)));
+}
+
} // namespace ui