Box class
class Box implements Hashable{ final num left, top, width, height; const Box(this.left, this.top, this.width, this.height); factory Box.fromCoordSize(Coordinate topLeft, Size size) { return new Box(topLeft.x, topLeft.y, size.width, size.height); } Coordinate get topLeft => new Coordinate(left, top); Size get size => new Size(width, height); bool get isValid => topLeft.isValid && size.isValid; num get right => left + width; num get bottom => top + height; bool contains(Coordinate point){ return point.x >= left && point.x <= left + width && point.y >= top && point.y <= top + height; } // TODO: test!! Coordinate constrain(Coordinate value) { requireArgumentNotNull(value, 'value'); requireArgument(value.isValid, 'value'); assert(isValid); final x = math.min(right, math.max(left, value.x)); final y = math.min(bottom, math.max(top, value.y)); return new Coordinate(x, y); } List<Coordinate> getCorners() { return [ new Coordinate(left, top), new Coordinate(left + width, top), new Coordinate(left + width, top + height), new Coordinate(left, top + height) ]; } bool operator ==(Box other) { return other != null && other.left == left && other.top == top && other.width == width && other.height == height; } String toString() => "Location: $topLeft, Size: $size"; int hashCode() => Util.getHashCode([left, top, width, height]); }
Implements
Constructors
const Box(num left, num top, num width, num height) #
const Box(this.left, this.top, this.width, this.height);
factory Box.fromCoordSize(Coordinate topLeft, Size size) #
factory Box.fromCoordSize(Coordinate topLeft, Size size) { return new Box(topLeft.x, topLeft.y, size.width, size.height); }
Properties
final num bottom #
num get bottom => top + height;
final num height #
final num left, top, width, height;
final bool isValid #
bool get isValid => topLeft.isValid && size.isValid;
final num left #
final num left, top, width, height;
final num right #
num get right => left + width;
final Type runtimeType #
A representation of the runtime type of the object.
external Type get runtimeType;
final num top #
final num left, top, width, height;
final Coordinate topLeft #
Coordinate get topLeft => new Coordinate(left, top);
final num width #
final num left, top, width, height;
Operators
bool operator ==(Box other) #
The equality operator.
The default behavior for all Object
s is to return true if and
only if this
and
other are the same object.
If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.
bool operator ==(Box other) { return other != null && other.left == left && other.top == top && other.width == width && other.height == height; }
Methods
const Box(num left, num top, num width, num height) #
const Box(this.left, this.top, this.width, this.height);
factory Box.fromCoordSize(Coordinate topLeft, Size size) #
factory Box.fromCoordSize(Coordinate topLeft, Size size) { return new Box(topLeft.x, topLeft.y, size.width, size.height); }
Coordinate constrain(Coordinate value) #
Coordinate constrain(Coordinate value) { requireArgumentNotNull(value, 'value'); requireArgument(value.isValid, 'value'); assert(isValid); final x = math.min(right, math.max(left, value.x)); final y = math.min(bottom, math.max(top, value.y)); return new Coordinate(x, y); }
bool contains(Coordinate point) #
bool contains(Coordinate point){ return point.x >= left && point.x <= left + width && point.y >= top && point.y <= top + height; }
List<Coordinate> getCorners() #
List<Coordinate> getCorners() { return [ new Coordinate(left, top), new Coordinate(left + width, top), new Coordinate(left + width, top + height), new Coordinate(left, top + height) ]; }
int hashCode() #
Get a hash code for this object.
All objects have hash codes. Hash codes are guaranteed to be the
same for objects that are equal when compared using the equality
operator ==
. Other than that there are no guarantees about
the hash codes. They will not be consistent between runs and
there are no distribution guarantees.
If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.
int hashCode() => Util.getHashCode([left, top, width, height]);
noSuchMethod(String name, List args) #
noSuchMethod
is invoked when users invoke a non-existant method
on an object. The name of the method and the arguments of the
invocation are passed to noSuchMethod
. If noSuchMethod
returns a value, that value becomes the result of the original
invocation.
The default behavior of noSuchMethod
is to throw a
noSuchMethodError
.
external Dynamic noSuchMethod(String name, List args);
const Object() #
Creates a new Object
instance.
Object
instances have no meaningful state, and are only useful
through their identity. An Object
instance is equal to itself
only.
const Object();
String toString() #
Returns a string representation of this object.
String toString() => "Location: $topLeft, Size: $size";