import Point from "./Point"; declare namespace openfl.geom { /** * A Rectangle object is an area defined by its position, as indicated by its * top-left corner point(_x_, _y_) and by its width and its height. * * * The `x`, `y`, `width`, and * `height` properties of the Rectangle class are independent of * each other; changing the value of one property has no effect on the others. * However, the `right` and `bottom` properties are * integrally related to those four properties. For example, if you change the * value of the `right` property, the value of the * `width` property changes; if you change the `bottom` * property, the value of the `height` property changes. * * The following methods and properties use Rectangle objects: * * * * The `applyFilter()`, `colorTransform()`, * `copyChannel()`, `copyPixels()`, `draw()`, * `fillRect()`, `generateFilterRect()`, * `getColorBoundsRect()`, `getPixels()`, * `merge()`, `paletteMap()`, * `pixelDisolve()`, `setPixels()`, and * `threshold()` methods, and the `rect` property of the * BitmapData class * * The `getBounds()` and `getRect()` methods, and * the `scrollRect` and `scale9Grid` properties of the * DisplayObject class * * The `getCharBoundaries()` method of the TextField * class * * The `pixelBounds` property of the Transform class * * The `bounds` parameter for the `startDrag()` * method of the Sprite class * * The `printArea` parameter of the `addPage()` * method of the PrintJob class * * * You can use the `new Rectangle()` constructor to create a * Rectangle object. * * **Note:** The Rectangle class does not define a rectangular Shape * display object. To draw a rectangular Shape object onscreen, use the * `drawRect()` method of the Graphics class. * * @see [Working with geometry](https://books.openfl.org/openfl-developers-guide/working-with-geometry/) * @see [Using Rectangle objects](https://books.openfl.org/openfl-developers-guide/working-with-geometry/using-rectangle-objects.html) * */ export class Rectangle { /** * Creates a new Rectangle object with the top-left corner specified by the * `x` and `y` parameters and with the specified * `width` and `height` parameters. If you call this * function without parameters, a rectangle with `x`, * `y`, `width`, and `height` properties set * to 0 is created. * * @param x The _x_ coordinate of the top-left corner of the * rectangle. * @param y The _y_ coordinate of the top-left corner of the * rectangle. * @param width The width of the rectangle, in pixels. * @param height The height of the rectangle, in pixels. * */ constructor(x?: number, y?: number, width?: number, height?: number); /** * The sum of the `y` and `height` properties. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get bottom(): number; set bottom(value: number) /** * The location of the Rectangle object's bottom-right corner, determined * by the values of the `right` and `bottom` properties. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get bottomRight(): Point; set bottomRight(value: Point) /** * The height of the rectangle, in pixels. Changing the `height` value of * a Rectangle object has no effect on the `x`, `y`, and `width` * properties. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ height: number; /** * The _x_ coordinate of the top-left corner of the rectangle. Changing * the `left` property of a Rectangle object has no effect on the `y` and * `height` properties. However it does affect the `width` property, * whereas changing the `x` value does _not_ affect the `width` property. * * The value of the `left` property is equal to the value of the `x` * property. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get left(): number; set left(value: number) /** * The sum of the `x` and `width` properties. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get right(): number; set right(value: number) /** * The size of the Rectangle object, expressed as a Point object with the * values of the `width` and `height` properties. * */ get size(): Point; set size(value: Point) /** * The _y_ coordinate of the top-left corner of the rectangle. Changing * the `top` property of a Rectangle object has no effect on the `x` and * `width` properties. However it does affect the `height` property, * whereas changing the `y` value does _not_ affect the `height` * property. * The value of the `top` property is equal to the value of the `y` * property. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get top(): number; set top(value: number) /** * The location of the Rectangle object's top-left corner, determined by * the _x_ and _y_ coordinates of the point. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ get topLeft(): Point; set topLeft(value: Point) /** * The width of the rectangle, in pixels. Changing the `width` value of a * Rectangle object has no effect on the `x`, `y`, and `height` * properties. * * ![A rectangle image showing location and measurement properties.](/images/rectangle.jpg) * */ width: number; /** * The _x_ coordinate of the top-left corner of the rectangle. Changing * the value of the `x` property of a Rectangle object has no * effect on the `y`, `width`, and `height` * properties. * * The value of the `x` property is equal to the value of the * `left` property. * */ x: number; /** * The _y_ coordinate of the top-left corner of the rectangle. Changing * the value of the `y` property of a Rectangle object has no * effect on the `x`, `width`, and `height` * properties. * * The value of the `y` property is equal to the value of the * `top` property. * */ y: number; /** * Returns a new Rectangle object with the same values for the * `x`, `y`, `width`, and * `height` properties as the original Rectangle object. * * @return A new Rectangle object with the same values for the * `x`, `y`, `width`, and * `height` properties as the original Rectangle object. * */ clone(): Rectangle; /** * Determines whether the specified point is contained within the rectangular * region defined by this Rectangle object. * * @param x The _x_ coordinate (horizontal position) of the point. * @param y The _y_ coordinate (vertical position) of the point. * @return A value of `true` if the Rectangle object contains the * specified point; otherwise `false`. * */ contains(x: number, y: number): boolean; /** * Determines whether the specified point is contained within the rectangular * region defined by this Rectangle object. This method is similar to the * `Rectangle.contains()` method, except that it takes a Point * object as a parameter. * * @param point The point, as represented by its _x_ and _y_ * coordinates. * @return A value of `true` if the Rectangle object contains the * specified point; otherwise `false`. * */ containsPoint(point: Point): boolean; /** * Determines whether the Rectangle object specified by the `rect` * parameter is contained within this Rectangle object. A Rectangle object is * said to contain another if the second Rectangle object falls entirely * within the boundaries of the first. * * @param rect The Rectangle object being checked. * @return A value of `true` if the Rectangle object that you * specify is contained by this Rectangle object; otherwise * `false`. * */ containsRect(rect: Rectangle): boolean; /** * Copies all of rectangle data from the source Rectangle object into the calling * Rectangle object. * * @param sourceRect The Rectangle object from which to copy the data. * */ copyFrom(sourceRect: Rectangle): void; /** * Determines whether the object specified in the `toCompare` * parameter is equal to this Rectangle object. This method compares the * `x`, `y`, `width`, and * `height` properties of an object against the same properties of * this Rectangle object. * * @param toCompare The rectangle to compare to this Rectangle object. * @return A value of `true` if the object has exactly the same * values for the `x`, `y`, `width`, * and `height` properties as this Rectangle object; * otherwise `false`. * */ equals(toCompare: Rectangle): boolean; /** * Increases the size of the Rectangle object by the specified amounts, * in pixels. The center point of the Rectangle object stays the same, * and its size increases to the left and right by the `dx` value, and to * the top and the bottom by the `dy` value. * * @param dx The value to be added to the left and the right of the * Rectangle object. The following equation is used to * calculate the new width and position of the rectangle: * * ```haxe * x -= dx; * width += 2 * dx; * ``` * @param dy The value to be added to the top and the bottom of the * Rectangle. The following equation is used to calculate the * new height and position of the rectangle: * * ```haxe * y -= dy; * height += 2 * dy; * ``` * */ inflate(dx: number, dy: number): void; /** * Increases the size of the Rectangle object. This method is similar to * the `Rectangle.inflate()` method except it takes a Point object as a * parameter. * The following two code examples give the same result: * * ```haxe * var rect1 = new Rectangle(0,0,2,5); * rect1.inflate(2,2); * ``` * ```haxe * var rect1 = new Rectangle(0,0,2,5); * var pt1 = new Point(2,2); * rect1.inflatePoint(pt1); * ``` * * @param point The `x` property of this Point object is used to increase * the horizontal dimension of the Rectangle object. The `y` * property is used to increase the vertical dimension of * the Rectangle object. * */ inflatePoint(point: Point): void; /** * If the Rectangle object specified in the `toIntersect` parameter * intersects with this Rectangle object, returns the area of * intersection as a Rectangle object. If the rectangles do not * intersect, this method returns an empty Rectangle object with its * properties set to 0. * * ![The resulting intersection rectangle.](/images/rectangle_intersect.jpg) * * @param toIntersect The Rectangle object to compare against to see if * it intersects with this Rectangle object. * @return A Rectangle object that equals the area of intersection. If * the rectangles do not intersect, this method returns an empty * Rectangle object; that is, a rectangle with its `x`, `y`, * `width`, and `height` properties set to 0. * */ intersection(toIntersect: Rectangle): Rectangle; /** * If the Rectangle object specified in the `toIntersect` parameter * intersects with this Rectangle object, returns the area of * intersection as a Rectangle object. If the rectangles do not * intersect, this method returns an empty Rectangle object with its * properties set to 0. * * ![The resulting intersection rectangle.](/images/rectangle_intersect.jpg) * * @param toIntersect The Rectangle object to compare against to see if * it intersects with this Rectangle object. * @param output An optional Rectangle to be used as the output value, * avoiding the creation of a new object * @return A Rectangle object that equals the area of intersection. If * the rectangles do not intersect, this method returns an empty * Rectangle object; that is, a rectangle with its `x`, `y`, * `width`, and `height` properties set to 0. * */ intersectionToOutput(toIntersect: Rectangle, output: Rectangle): Rectangle; /** * Determines whether the object specified in the `toIntersect` * parameter intersects with this Rectangle object. This method checks the * `x`, `y`, `width`, and * `height` properties of the specified Rectangle object to see if * it intersects with this Rectangle object. * * @param toIntersect The Rectangle object to compare against this Rectangle * object. * @return A value of `true` if the specified object intersects * with this Rectangle object; otherwise `false`. * */ intersects(toIntersect: Rectangle): boolean; /** * Determines whether or not this Rectangle object is empty. * * @return A value of `true` if the Rectangle object's width or * height is less than or equal to 0; otherwise `false`. * */ isEmpty(): boolean; /** * Adjusts the location of the Rectangle object, as determined by its * top-left corner, by the specified amounts. * * @param dx Moves the _x_ value of the Rectangle object by this amount. * @param dy Moves the _y_ value of the Rectangle object by this amount. * */ offset(dx: number, dy: number): void; /** * Adjusts the location of the Rectangle object using a Point object as a * parameter. This method is similar to the `Rectangle.offset()` * method, except that it takes a Point object as a parameter. * * @param point A Point object to use to offset this Rectangle object. * */ offsetPoint(point: Point): void; /** * Sets all of the Rectangle object's properties to 0. A Rectangle object is * empty if its width or height is less than or equal to 0. * * This method sets the values of the `x`, `y`, * `width`, and `height` properties to 0. * * */ setEmpty(): void; /** * Sets the members of Rectangle to the specified values. * * @param xa The _x_ coordinate of the top-left corner of the * rectangle. * @param ya The _y_ coordinate of the top-left corner of the * rectangle. * @param widtha The width of the rectangle, in pixels. * @param heighta The height of the rectangle, in pixels. * */ setTo(xa: number, ya: number, widtha: number, heighta: number): void; toString(): string; /** * Adds two rectangles together to create a new Rectangle object, by * filling in the horizontal and vertical space between the two * rectangles. * * ![The resulting union rectangle.](/images/rectangle_union.jpg) * * **Note:** The `union()` method ignores rectangles with `0` as the * height or width value, such as: `var rect2:Rectangle = new Rectangle(300,300,50,0);` * * @param toUnion A Rectangle object to add to this Rectangle object. * @return A new Rectangle object that is the union of the two * rectangles. * */ union(toUnion: Rectangle): Rectangle; /** * Adds two rectangles together to create a new Rectangle object, by * filling in the horizontal and vertical space between the two * rectangles. * * ![The resulting union rectangle.](/images/rectangle_union.jpg) * * **Note:** The `union()` method ignores rectangles with `0` as the * height or width value, such as: `var rect2:Rectangle = new Rectangle(300,300,50,0);` * * @param toUnion A Rectangle object to add to this Rectangle object. * @param output An optional Rectangle to be used as the output value, * avoiding the creation of a new object * @return A new Rectangle object (or the object passed in as the output * parameter, if not null) that is the union of the two rectangles. * */ unionToOutput(toUnion: Rectangle, output: Rectangle): Rectangle; } } export default openfl.geom.Rectangle;