| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 part of dart.math; | 4 part of dart.math; |
| 5 | 5 |
| 6 /** | 6 /** |
| 7 * A base class for representing two-dimensional axis-aligned rectangles. | 7 * A base class for representing two-dimensional axis-aligned rectangles. |
| 8 * | 8 * |
| 9 * This rectangle uses a left-handed Cartesian coordinate system, with x | 9 * This rectangle uses a left-handed Cartesian coordinate system, with x |
| 10 * directed to the right and y directed down, as per the convention in 2D | 10 * directed to the right and y directed down, as per the convention in 2D |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 T get right => left + width; | 33 T get right => left + width; |
| 34 /** The y-coordinate of the bottom edge. */ | 34 /** The y-coordinate of the bottom edge. */ |
| 35 T get bottom => top + height; | 35 T get bottom => top + height; |
| 36 | 36 |
| 37 String toString() { | 37 String toString() { |
| 38 return 'Rectangle ($left, $top) $width x $height'; | 38 return 'Rectangle ($left, $top) $width x $height'; |
| 39 } | 39 } |
| 40 | 40 |
| 41 bool operator ==(other) { | 41 bool operator ==(other) { |
| 42 if (other is !Rectangle) return false; | 42 if (other is !Rectangle) return false; |
| 43 return left == other.left && top == other.top && right == other.right && | 43 // TODO(rnystrom): Type promotion doesn't currently promote the [other] |
| 44 bottom == other.bottom; | 44 // to Rectangle from the above line, so do it explicitly here to avoid a |
| 45 // dynamic send and work around: |
| 46 // https://github.com/dart-lang/sdk/issues/27551 |
| 47 var otherRect = other as Rectangle; |
| 48 return left == otherRect.left && |
| 49 top == otherRect.top && |
| 50 right == otherRect.right && |
| 51 bottom == otherRect.bottom; |
| 45 } | 52 } |
| 46 | 53 |
| 47 int get hashCode => _JenkinsSmiHash.hash4(left.hashCode, top.hashCode, | 54 int get hashCode => _JenkinsSmiHash.hash4(left.hashCode, top.hashCode, |
| 48 right.hashCode, bottom.hashCode); | 55 right.hashCode, bottom.hashCode); |
| 49 | 56 |
| 50 /** | 57 /** |
| 51 * Computes the intersection of `this` and [other]. | 58 * Computes the intersection of `this` and [other]. |
| 52 * | 59 * |
| 53 * The intersection of two axis-aligned rectangles, if any, is always another | 60 * The intersection of two axis-aligned rectangles, if any, is always another |
| 54 * axis-aligned rectangle. | 61 * axis-aligned rectangle. |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 274 |
| 268 /** | 275 /** |
| 269 * Converts a negative [int] or [double] to a zero-value of the same type. | 276 * Converts a negative [int] or [double] to a zero-value of the same type. |
| 270 * | 277 * |
| 271 * Returns `0` if value is int, `0.0` if value is double. | 278 * Returns `0` if value is int, `0.0` if value is double. |
| 272 */ | 279 */ |
| 273 num/*=T*/ _clampToZero/*<T extends num>*/(num/*=T*/ value) { | 280 num/*=T*/ _clampToZero/*<T extends num>*/(num/*=T*/ value) { |
| 274 assert(value < 0); | 281 assert(value < 0); |
| 275 return -value * 0; | 282 return -value * 0; |
| 276 } | 283 } |
| OLD | NEW |