/** structure represents rectangle coordinates */ export interface IRectangle { top: number; left: number; width: number; height: number; } export declare class Rectangle implements IRectangle { left: number; top: number; width: number; height: number; get right(): number; get bottom(): number; /** * create a rectangle from an object that looks * like a rectangle, probably a serialized object */ static Create(obj: Partial): Rectangle; static IsRectangle(obj: unknown): obj is IRectangle; constructor(left?: number, top?: number, width?: number, height?: number); /** returns a new rect shifted from this one by (x,y) */ Shift(x?: number, y?: number): Rectangle; Scale(scale_x?: number, scale_y?: number): Rectangle; /** returns a new rect expanded from this one by (x,y) */ Expand(x?: number, y?: number): Rectangle; /** returns a new rectangle that combines this rectangle with the argument */ Combine(rect: Rectangle): Rectangle; /** * check if rectangle contains the given coordinates, optionally with * some added padding */ Contains(x: number, y: number, padding?: number): boolean; /** convenience method for canvas */ ContextFill(context: CanvasRenderingContext2D): void; /** convenience method for canvas */ ContextStroke(context: CanvasRenderingContext2D): void; /** clamp coordinate to rectangle */ Clamp(x: number, y: number): { x: number; y: number; }; /** convenience method for html element style */ ApplyStyle(element: HTMLElement): void; toJSON(): { top: number; left: number; width: number; height: number; }; }