Chromium Code Reviews| Index: ui/gfx/geometry/rect.h |
| diff --git a/ui/gfx/geometry/rect.h b/ui/gfx/geometry/rect.h |
| index 4e914b8ca6555167b88c7e3446e2953fae622b35..18f97d112caf63f05d3ab49203f790611679d2ee 100644 |
| --- a/ui/gfx/geometry/rect.h |
| +++ b/ui/gfx/geometry/rect.h |
| @@ -340,6 +340,35 @@ inline Rect ScaleToEnclosedRect(const Rect& rect, float scale) { |
| return ScaleToEnclosedRect(rect, scale, scale); |
| } |
| +inline Rect ScaleToRoundedRect(const Rect& rect, float x_scale, float y_scale) { |
|
sky
2017/07/26 22:12:11
Please add a description. Also, given the descript
malaykeshav
2017/07/28 01:24:37
This specific name was used to give consistency as
|
| + if (x_scale == 1.f && y_scale == 1.f) |
| + return rect; |
| + |
| + DCHECK( |
| + base::IsValueInRangeForNumericType<int>(std::round(rect.x() * x_scale))); |
| + DCHECK( |
| + base::IsValueInRangeForNumericType<int>(std::round(rect.y() * y_scale))); |
| + DCHECK(base::IsValueInRangeForNumericType<int>( |
| + std::round(rect.right() * x_scale))); |
| + DCHECK(base::IsValueInRangeForNumericType<int>( |
| + std::round(rect.bottom() * y_scale))); |
| + |
| + int x = static_cast<int>(std::round(rect.x() * x_scale)); |
| + int y = static_cast<int>(std::round(rect.y() * y_scale)); |
| + int r = rect.width() == 0 |
| + ? x |
| + : static_cast<int>(std::round(rect.right() * x_scale)); |
| + int b = rect.height() == 0 |
| + ? y |
| + : static_cast<int>(std::round(rect.bottom() * y_scale)); |
| + |
| + return Rect(x, y, r - x, b - y); |
| +} |
| + |
| +inline Rect ScaleToRoundedRect(const Rect& rect, float scale) { |
| + return ScaleToRoundedRect(rect, scale, scale); |
| +} |
| + |
| // This is declared here for use in gtest-based unit tests but is defined in |
| // the //ui/gfx:test_support target. Depend on that to use this in your unit |
| // test. This should not be used in production code - call ToString() instead. |