Index: ui/gfx/geometry/dip_util.cc |
diff --git a/ui/gfx/geometry/dip_util.cc b/ui/gfx/geometry/dip_util.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..21465e0bfedd8f6e1043e1f48abd9e7626b9ca6a |
--- /dev/null |
+++ b/ui/gfx/geometry/dip_util.cc |
@@ -0,0 +1,57 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ui/gfx/geometry/dip_util.h" |
+ |
+#include "ui/gfx/geometry/point_f.h" |
+#include "ui/gfx/point.h" |
+#include "ui/gfx/point_conversions.h" |
+#include "ui/gfx/rect.h" |
+#include "ui/gfx/rect_conversions.h" |
+#include "ui/gfx/size.h" |
+#include "ui/gfx/size_conversions.h" |
+ |
+namespace gfx { |
+ |
+gfx::Point ConvertPointToDIP(float scale_factor, |
+ const gfx::Point& point_in_pixel) { |
+ return gfx::ToFlooredPoint( |
+ gfx::ScalePoint(point_in_pixel, 1.0f / scale_factor)); |
+} |
+ |
+gfx::PointF ConvertPointToDIP(float scale_factor, |
+ const gfx::PointF& point_in_pixel) { |
+ return gfx::ScalePoint(point_in_pixel, 1.0f / scale_factor); |
+} |
+ |
+gfx::Size ConvertSizeToDIP(float scale_factor, const gfx::Size& size_in_pixel) { |
+ return gfx::ToFlooredSize(gfx::ScaleSize(size_in_pixel, 1.0f / scale_factor)); |
+} |
+ |
+gfx::Rect ConvertRectToDIP(float scale_factor, const gfx::Rect& rect_in_pixel) { |
+ return gfx::ToFlooredRectDeprecated( |
+ gfx::ScaleRect(rect_in_pixel, 1.0f / scale_factor)); |
+} |
+ |
+gfx::Point ConvertPointToPixel(float scale_factor, |
+ const gfx::Point& point_in_dip) { |
+ return gfx::ToFlooredPoint(gfx::ScalePoint(point_in_dip, scale_factor)); |
+} |
+ |
+gfx::Size ConvertSizeToPixel(float scale_factor, const gfx::Size& size_in_dip) { |
+ return gfx::ToFlooredSize(gfx::ScaleSize(size_in_dip, scale_factor)); |
+} |
+ |
+gfx::Rect ConvertRectToPixel(float scale_factor, const gfx::Rect& rect_in_dip) { |
+ // Use ToEnclosingRect() to ensure we paint all the possible pixels |
+ // touched. ToEnclosingRect() floors the origin, and ceils the max |
+ // coordinate. To do otherwise (such as flooring the size) potentially |
+ // results in rounding down and not drawing all the pixels that are |
+ // touched. |
+ return gfx::ToEnclosingRect( |
+ gfx::RectF(gfx::ScalePoint(rect_in_dip.origin(), scale_factor), |
+ gfx::ScaleSize(rect_in_dip.size(), scale_factor))); |
+} |
+ |
+} // namespace gfx |