Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Defines a simple integer rectangle class. The containment semantics | 5 // Defines a simple integer rectangle class. The containment semantics |
| 6 // are array-like; that is, the coordinate (x, y) is considered to be | 6 // are array-like; that is, the coordinate (x, y) is considered to be |
| 7 // contained by the rectangle, but the coordinate (x + width, y) is not. | 7 // contained by the rectangle, but the coordinate (x + width, y) is not. |
| 8 // The class will happily let you create malformed rectangles (that is, | 8 // The class will happily let you create malformed rectangles (that is, |
| 9 // rectangles with negative width and/or height), but there will be assertions | 9 // rectangles with negative width and/or height), but there will be assertions |
| 10 // in the operations (such as Contains()) to complain in this case. | 10 // in the operations (such as Contains()) to complain in this case. |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 238 x : static_cast<int>(std::ceil(rect.right() * x_scale)); | 238 x : static_cast<int>(std::ceil(rect.right() * x_scale)); |
| 239 int b = rect.height() == 0 ? | 239 int b = rect.height() == 0 ? |
| 240 y : static_cast<int>(std::ceil(rect.bottom() * y_scale)); | 240 y : static_cast<int>(std::ceil(rect.bottom() * y_scale)); |
| 241 return Rect(x, y, r - x, b - y); | 241 return Rect(x, y, r - x, b - y); |
| 242 } | 242 } |
| 243 | 243 |
| 244 inline Rect ScaleToEnclosingRect(const Rect& rect, float scale) { | 244 inline Rect ScaleToEnclosingRect(const Rect& rect, float scale) { |
| 245 return ScaleToEnclosingRect(rect, scale, scale); | 245 return ScaleToEnclosingRect(rect, scale, scale); |
| 246 } | 246 } |
| 247 | 247 |
| 248 // Returns the smallest Rect that encloses the given Rect after scaling by | |
| 249 // scale. If the result is scaling would make any dimension of the rect be too | |
|
danakj
2015/06/15 19:13:47
result from
| |
| 250 // big to be represented by an integer, then use the largest integer for that | |
| 251 // dimension. | |
| 252 // Note that the resulting rect x(), y(), width(), height(), right(), bottom() | |
| 253 // will all return valid integer values. This means that if x() is max_int, | |
| 254 // then width would() have to be 0 in order for right() to be max_int. | |
| 255 GFX_EXPORT Rect SafelyScaleToEnclosingRect(const Rect& rect, float scale); | |
|
danakj
2015/06/15 19:13:47
Should we be returning a bool equivalent of |clipp
| |
| 256 | |
| 248 inline Rect ScaleToEnclosedRect(const Rect& rect, | 257 inline Rect ScaleToEnclosedRect(const Rect& rect, |
| 249 float x_scale, | 258 float x_scale, |
| 250 float y_scale) { | 259 float y_scale) { |
| 251 DCHECK(base::IsValueInRangeForNumericType<int>( | 260 DCHECK(base::IsValueInRangeForNumericType<int>( |
| 252 std::ceil(rect.x() * x_scale))); | 261 std::ceil(rect.x() * x_scale))); |
| 253 DCHECK(base::IsValueInRangeForNumericType<int>( | 262 DCHECK(base::IsValueInRangeForNumericType<int>( |
| 254 std::ceil(rect.y() * y_scale))); | 263 std::ceil(rect.y() * y_scale))); |
| 255 DCHECK(base::IsValueInRangeForNumericType<int>( | 264 DCHECK(base::IsValueInRangeForNumericType<int>( |
| 256 std::floor(rect.right() * x_scale))); | 265 std::floor(rect.right() * x_scale))); |
| 257 DCHECK(base::IsValueInRangeForNumericType<int>( | 266 DCHECK(base::IsValueInRangeForNumericType<int>( |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 270 } | 279 } |
| 271 | 280 |
| 272 // This is declared here for use in gtest-based unit tests but is defined in | 281 // This is declared here for use in gtest-based unit tests but is defined in |
| 273 // the gfx_test_support target. Depend on that to use this in your unit test. | 282 // the gfx_test_support target. Depend on that to use this in your unit test. |
| 274 // This should not be used in production code - call ToString() instead. | 283 // This should not be used in production code - call ToString() instead. |
| 275 void PrintTo(const Rect& rect, ::std::ostream* os); | 284 void PrintTo(const Rect& rect, ::std::ostream* os); |
| 276 | 285 |
| 277 } // namespace gfx | 286 } // namespace gfx |
| 278 | 287 |
| 279 #endif // UI_GFX_GEOMETRY_RECT_H_ | 288 #endif // UI_GFX_GEOMETRY_RECT_H_ |
| OLD | NEW |