| // 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.h" |
| #include "ui/gfx/geometry/point_conversions.h" |
| #include "ui/gfx/geometry/point_f.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/rect_conversions.h" |
| #include "ui/gfx/geometry/size.h" |
| #include "ui/gfx/geometry/size_conversions.h" |
| |
| namespace gfx { |
| |
| Point ConvertPointToDIP(float scale_factor, const Point& point_in_pixel) { |
| return ScaleToFlooredPoint(point_in_pixel, 1.0f / scale_factor); |
| } |
| |
| PointF ConvertPointToDIP(float scale_factor, const PointF& point_in_pixel) { |
| return ScalePoint(point_in_pixel, 1.0f / scale_factor); |
| } |
| |
| Size ConvertSizeToDIP(float scale_factor, const Size& size_in_pixel) { |
| return ScaleToFlooredSize(size_in_pixel, 1.0f / scale_factor); |
| } |
| |
| Rect ConvertRectToDIP(float scale_factor, const Rect& rect_in_pixel) { |
| return ToFlooredRectDeprecated( |
| ScaleRect(RectF(rect_in_pixel), 1.0f / scale_factor)); |
| } |
| |
| Point ConvertPointToPixel(float scale_factor, const Point& point_in_dip) { |
| return ScaleToFlooredPoint(point_in_dip, scale_factor); |
| } |
| |
| Size ConvertSizeToPixel(float scale_factor, const Size& size_in_dip) { |
| return ScaleToFlooredSize(size_in_dip, scale_factor); |
| } |
| |
| Rect ConvertRectToPixel(float scale_factor, const 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 ToEnclosingRect( |
| RectF(ScalePoint(gfx::PointF(rect_in_dip.origin()), scale_factor), |
| ScaleSize(gfx::SizeF(rect_in_dip.size()), scale_factor))); |
| } |
| |
| } // namespace gfx |