| 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 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 * with x-coordinate between `left` and `left + width`, and | 202 * with x-coordinate between `left` and `left + width`, and |
| 203 * with y-coordinate between `top` and `top + height`, both inclusive. | 203 * with y-coordinate between `top` and `top + height`, both inclusive. |
| 204 * | 204 * |
| 205 * The `width` and `height` should be non-negative. | 205 * The `width` and `height` should be non-negative. |
| 206 * If `width` or `height` are negative, they are clamped to zero. | 206 * If `width` or `height` are negative, they are clamped to zero. |
| 207 * | 207 * |
| 208 * If `width` and `height` are zero, the "rectangle" comprises only the single | 208 * If `width` and `height` are zero, the "rectangle" comprises only the single |
| 209 * point `(left, top)`. | 209 * point `(left, top)`. |
| 210 */ | 210 */ |
| 211 MutableRectangle(this.left, this.top, T width, T height) | 211 MutableRectangle(this.left, this.top, T width, T height) |
| 212 : this._width = (width < 0) ? _clampToZero(width) : width, | 212 : this._width = (width < 0) ? _clampToZero/*<T>*/(width) : width, |
| 213 this._height = (height < 0) ? _clampToZero(height) : height; | 213 this._height = (height < 0) ? _clampToZero/*<T>*/(height) : height; |
| 214 | 214 |
| 215 /** | 215 /** |
| 216 * Create a mutable rectangle spanned by the points [a] and [b]; | 216 * Create a mutable rectangle spanned by the points [a] and [b]; |
| 217 * | 217 * |
| 218 * The rectangle contains the points | 218 * The rectangle contains the points |
| 219 * with x-coordinate between `a.x` and `b.x`, and | 219 * with x-coordinate between `a.x` and `b.x`, and |
| 220 * with y-coordinate between `a.y` and `b.y`, both inclusive. | 220 * with y-coordinate between `a.y` and `b.y`, both inclusive. |
| 221 * | 221 * |
| 222 * If the distance between `a.x` and `b.x` is not representable | 222 * If the distance between `a.x` and `b.x` is not representable |
| 223 * (which can happen if one or both is a double), | 223 * (which can happen if one or both is a double), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 237 /** | 237 /** |
| 238 * Sets the width of the rectangle. | 238 * Sets the width of the rectangle. |
| 239 * | 239 * |
| 240 * The width must be non-negative. | 240 * The width must be non-negative. |
| 241 * If a negative width is supplied, it is clamped to zero. | 241 * If a negative width is supplied, it is clamped to zero. |
| 242 * | 242 * |
| 243 * Setting the value will change the right edge of the rectangle, | 243 * Setting the value will change the right edge of the rectangle, |
| 244 * but will not change [left]. | 244 * but will not change [left]. |
| 245 */ | 245 */ |
| 246 void set width(T width) { | 246 void set width(T width) { |
| 247 if (width < 0) width = _clampToZero(width); | 247 if (width < 0) width = _clampToZero/*<T>*/(width); |
| 248 _width = width; | 248 _width = width; |
| 249 } | 249 } |
| 250 | 250 |
| 251 T get height => _height; | 251 T get height => _height; |
| 252 | 252 |
| 253 /** | 253 /** |
| 254 * Sets the height of the rectangle. | 254 * Sets the height of the rectangle. |
| 255 * | 255 * |
| 256 * The height must be non-negative. | 256 * The height must be non-negative. |
| 257 * If a negative height is supplied, it is clamped to zero. | 257 * If a negative height is supplied, it is clamped to zero. |
| 258 * | 258 * |
| 259 * Setting the value will change the bottom edge of the rectangle, | 259 * Setting the value will change the bottom edge of the rectangle, |
| 260 * but will not change [top]. | 260 * but will not change [top]. |
| 261 */ | 261 */ |
| 262 void set height(T height) { | 262 void set height(T height) { |
| 263 if (height < 0) height = _clampToZero(height); | 263 if (height < 0) height = _clampToZero/*<T>*/(height); |
| 264 _height = height; | 264 _height = height; |
| 265 } | 265 } |
| 266 } | 266 } |
| 267 | 267 |
| 268 /** | 268 /** |
| 269 * Converts a negative [int] or [double] to a zero-value of the same type. | 269 * Converts a negative [int] or [double] to a zero-value of the same type. |
| 270 * | 270 * |
| 271 * Returns `0` if value is int, `0.0` if value is double. | 271 * Returns `0` if value is int, `0.0` if value is double. |
| 272 */ | 272 */ |
| 273 num _clampToZero(num value) { | 273 num/*=T*/ _clampToZero/*<T extends num>*/(num/*=T*/ value) { |
| 274 assert(value < 0); | 274 assert(value < 0); |
| 275 return -value * 0; | 275 return -value * 0; |
| 276 } | 276 } |
| OLD | NEW |