123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- import { Line } from './line';
- import { Point } from './point';
- import { Geometry } from './geometry';
- import { Ellipse } from './ellipse';
- export declare class Rectangle extends Geometry implements Rectangle.RectangleLike {
- x: number;
- y: number;
- width: number;
- height: number;
- get left(): number;
- get top(): number;
- get right(): number;
- get bottom(): number;
- get origin(): Point;
- get topLeft(): Point;
- get topCenter(): Point;
- get topRight(): Point;
- get center(): Point;
- get bottomLeft(): Point;
- get bottomCenter(): Point;
- get bottomRight(): Point;
- get corner(): Point;
- get rightMiddle(): Point;
- get leftMiddle(): Point;
- get topLine(): Line;
- get rightLine(): Line;
- get bottomLine(): Line;
- get leftLine(): Line;
- constructor(x?: number, y?: number, width?: number, height?: number);
- getOrigin(): Point;
- getTopLeft(): Point;
- getTopCenter(): Point;
- getTopRight(): Point;
- getCenter(): Point;
- getCenterX(): number;
- getCenterY(): number;
- getBottomLeft(): Point;
- getBottomCenter(): Point;
- getBottomRight(): Point;
- getCorner(): Point;
- getRightMiddle(): Point;
- getLeftMiddle(): Point;
- getTopLine(): Line;
- getRightLine(): Line;
- getBottomLine(): Line;
- getLeftLine(): Line;
- /**
- * Returns a rectangle that is the bounding box of the rectangle.
- *
- * If `angle` is specified, the bounding box calculation will take into
- * account the rotation of the rectangle by angle degrees around its center.
- */
- bbox(angle?: number): Rectangle;
- round(precision?: number): this;
- add(x: number, y: number, width: number, height: number): this;
- add(rect: Rectangle.RectangleLike | Rectangle.RectangleData): this;
- update(x: number, y: number, width: number, height: number): this;
- update(rect: Rectangle.RectangleLike | Rectangle.RectangleData): this;
- inflate(amount: number): this;
- /**
- * Returns a rectangle inflated in axis-x by `2*dx` and in axis-y by `2*dy`.
- */
- inflate(dx: number, dy: number): this;
- /**
- * Adjust the position and dimensions of the rectangle such that its edges
- * are on the nearest increment of `gx` on the x-axis and `gy` on the y-axis.
- */
- snapToGrid(gridSize: number): this;
- snapToGrid(gx: number, gy: number): this;
- snapToGrid(gx: number, gy?: number): this;
- translate(tx: number, ty: number): this;
- translate(p: Point.PointLike | Point.PointData): this;
- scale(sx: number, sy: number, origin?: Point.PointLike | Point.PointData): this;
- rotate(degree: number, center?: Point.PointLike | Point.PointData): this;
- rotate90(): this;
- /**
- * Translates the rectangle by `rect.x` and `rect.y` and expand it by
- * `rect.width` and `rect.height`.
- */
- moveAndExpand(rect: Rectangle.RectangleLike | Rectangle.RectangleData): this;
- /**
- * Returns an object where `sx` and `sy` give the maximum scaling that can be
- * applied to the rectangle so that it would still fit into `limit`. If
- * `origin` is specified, the rectangle is scaled around it; otherwise, it is
- * scaled around its center.
- */
- getMaxScaleToFit(limit: Rectangle.RectangleLike | Rectangle.RectangleData, origin?: Point): {
- sx: number;
- sy: number;
- };
- /**
- * Returns a number that specifies the maximum scaling that can be applied to
- * the rectangle along both axes so that it would still fit into `limit`. If
- * `origin` is specified, the rectangle is scaled around it; otherwise, it is
- * scaled around its center.
- */
- getMaxUniformScaleToFit(limit: Rectangle.RectangleLike | Rectangle.RectangleData, origin?: Point): number;
- /**
- * Returns `true` if the point is inside the rectangle (inclusive).
- * Returns `false` otherwise.
- */
- containsPoint(x: number, y: number): boolean;
- containsPoint(point: Point.PointLike | Point.PointData): boolean;
- /**
- * Returns `true` if the rectangle is (completely) inside the
- * rectangle (inclusive). Returns `false` otherwise.
- */
- containsRect(x: number, y: number, w: number, h: number): boolean;
- containsRect(rect: Rectangle.RectangleLike | Rectangle.RectangleData): boolean;
- /**
- * Returns an array of the intersection points of the rectangle and the line.
- * Return `null` if no intersection exists.
- */
- intersectsWithLine(line: Line): Point[] | null;
- /**
- * Returns the point on the boundary of the rectangle that is the intersection
- * of the rectangle with a line starting in the center the rectangle ending in
- * the point `p`.
- *
- * If `angle` is specified, the intersection will take into account the
- * rotation of the rectangle by `angle` degrees around its center.
- */
- intersectsWithLineFromCenterToPoint(p: Point.PointLike | Point.PointData, angle?: number): Point | null;
- /**
- * Returns a rectangle that is a subtraction of the two rectangles if such an
- * object exists (the two rectangles intersect). Returns `null` otherwise.
- */
- intersectsWithRect(x: number, y: number, w: number, h: number): Rectangle | null;
- intersectsWithRect(rect: Rectangle.RectangleLike | Rectangle.RectangleData): Rectangle | null;
- isIntersectWithRect(x: number, y: number, w: number, h: number): boolean;
- isIntersectWithRect(rect: Rectangle.RectangleLike | Rectangle.RectangleData): boolean;
- /**
- * Normalize the rectangle, i.e. make it so that it has non-negative
- * width and height. If width is less than `0`, the function swaps left and
- * right corners and if height is less than `0`, the top and bottom corners
- * are swapped.
- */
- normalize(): this;
- /**
- * Returns a rectangle that is a union of this rectangle and rectangle `rect`.
- */
- union(rect: Rectangle.RectangleLike | Rectangle.RectangleData): Rectangle;
- /**
- * Returns a string ("top", "left", "right" or "bottom") denoting the side of
- * the rectangle which is nearest to the point `p`.
- */
- getNearestSideToPoint(p: Point.PointLike | Point.PointData): Rectangle.Side;
- /**
- * Returns a point on the boundary of the rectangle nearest to the point `p`.
- */
- getNearestPointToPoint(p: Point.PointLike | Point.PointData): Point;
- equals(rect: Rectangle.RectangleLike): boolean;
- clone(): Rectangle;
- toJSON(): {
- x: number;
- y: number;
- width: number;
- height: number;
- };
- serialize(): string;
- }
- export declare namespace Rectangle {
- function isRectangle(instance: any): instance is Rectangle;
- }
- export declare namespace Rectangle {
- type RectangleData = [number, number, number, number];
- interface RectangleLike extends Point.PointLike {
- x: number;
- y: number;
- width: number;
- height: number;
- }
- function isRectangleLike(o: any): o is RectangleLike;
- type Side = 'left' | 'right' | 'top' | 'bottom';
- type KeyPoint = 'center' | 'origin' | 'corner' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight' | 'rightMiddle' | 'leftMiddle';
- }
- export declare namespace Rectangle {
- export function create(rect: RectangleLike | RectangleData): Rectangle;
- export function create(x?: number, y?: number, width?: number, height?: number): Rectangle;
- export function create(x?: number | RectangleLike | RectangleData, y?: number, width?: number, height?: number): Rectangle;
- export function clone(rect: RectangleLike | RectangleData): Rectangle;
- /**
- * Returns a new rectangle from the given ellipse.
- */
- export function fromEllipse(ellipse: Ellipse): Rectangle;
- interface Size {
- width: number;
- height: number;
- }
- export function fromSize(size: Size): Rectangle;
- export function fromPositionAndSize(pos: Point.PointLike, size: Size): Rectangle;
- export {};
- }
|