| // 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/insets.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 { |
| |
| Insets ConvertInsetsToDIP(float scale_factor, |
| const gfx::Insets& insets_in_pixel) { |
| if (scale_factor == 1.f) |
| return insets_in_pixel; |
| return insets_in_pixel.Scale(1.f / scale_factor); |
| } |
| |
| Point ConvertPointToDIP(float scale_factor, const Point& point_in_pixel) { |
| if (scale_factor == 1.f) |
| return point_in_pixel; |
| return ScaleToFlooredPoint(point_in_pixel, 1.f / scale_factor); |
| } |
| |
| PointF ConvertPointToDIP(float scale_factor, const PointF& point_in_pixel) { |
| if (scale_factor == 1.f) |
| return point_in_pixel; |
| return ScalePoint(point_in_pixel, 1.f / scale_factor); |
| } |
| |
| Size ConvertSizeToDIP(float scale_factor, const Size& size_in_pixel) { |
| if (scale_factor == 1.f) |
| return size_in_pixel; |
| return ScaleToFlooredSize(size_in_pixel, 1.f / scale_factor); |
| } |
| |
| Rect ConvertRectToDIP(float scale_factor, const Rect& rect_in_pixel) { |
| if (scale_factor == 1.f) |
| return rect_in_pixel; |
| return ToFlooredRectDeprecated( |
| ScaleRect(RectF(rect_in_pixel), 1.f / scale_factor)); |
| } |
| |
| Insets ConvertInsetsToPixel(float scale_factor, |
| const gfx::Insets& insets_in_dip) { |
| if (scale_factor == 1.f) |
| return insets_in_dip; |
| return insets_in_dip.Scale(scale_factor); |
| } |
| |
| Point ConvertPointToPixel(float scale_factor, const Point& point_in_dip) { |
| if (scale_factor == 1.f) |
| return point_in_dip; |
| return ScaleToFlooredPoint(point_in_dip, scale_factor); |
| } |
| |
| PointF ConvertPointToPixel(float scale_factor, const PointF& point_in_dip) { |
| if (scale_factor == 1.f) |
| return point_in_dip; |
| return ScalePoint(point_in_dip, scale_factor); |
| } |
| |
| Size ConvertSizeToPixel(float scale_factor, const Size& size_in_dip) { |
| if (scale_factor == 1.f) |
| return 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. |
| if (scale_factor == 1.f) |
| return rect_in_dip; |
| return ToEnclosingRect( |
| RectF(ScalePoint(gfx::PointF(rect_in_dip.origin()), scale_factor), |
| ScaleSize(gfx::SizeF(rect_in_dip.size()), scale_factor))); |
| } |
| |
| } // namespace gfx |