| Index: ui/gfx/geometry/rect.h
|
| diff --git a/ui/gfx/geometry/rect.h b/ui/gfx/geometry/rect.h
|
| index 1858d44d2c765537100072f4f0d845c91d2d2c9e..7d38ec000738cd3e9c0cbc042320f525764b7509 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) {
|
| + 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.
|
|
|