@dominicstop/utils
Version:
Yet another event emitter written in typescript.
61 lines • 2.33 kB
TypeScript
import { SomeCloneable } from "../../types/Cloneable";
import { AnyValueRepresentable, ValueRepresentable } from "../../types/ValueRepresentable";
import { Point, PointValue } from "../Point";
import { Rect } from "../Rect";
import { Scalable } from "../Scalelable";
/**
* A generic interface representing a shape that has a bounding box
* and can be represented as a value.
*
* @template Value - The value representation type of the shape.
*/
export interface BoxedShape<Value extends AnyValueRepresentable> extends SomeCloneable, ValueRepresentable<Value>, Scalable {
/**
* The origin point of the shape
* (i.e. the top-left corner of its bounding box).
*/
origin: Point;
/**
* Returns the shape's value representation
* (e.g., center and radius for a circle).
*/
get asValue(): Value;
/** Returns the bounding rectangle that fully contains the shape. */
get boundingBox(): Rect;
/** Returns the geometric center of the shape. */
get center(): Point;
/** sets the geometric center of the shape. */
set center(newCenter: Point);
/**
* Checks whether a given point lies inside the shape.
*
* @param pointValue - The point to test.
* @returns `true` if the point is inside the shape, otherwise `false`.
*/
isPointInside(pointValue: PointValue): boolean;
/**
* Computes the distance from this shape to another shape of the same type.
*
* @param other - The other shape to measure distance to.
*/
computeDistanceToOther(other: this): number;
/**
* Determines if this shape is exactly edge-to-edge with another shape.
*
* @param other - The other shape to compare with.
* @returns `true` if the shapes are touching at their edges, otherwise `false`.
*/
isEdgeToEdgeWithOther(other: this): boolean;
/**
* Determines if this shape is colliding (overlapping) with another shape.
*
* @param other - The other shape to check collision with.
* @returns `true` if the shapes are colliding, otherwise `false`.
*/
isCollidingWithOther(other: this): boolean;
}
/**
* A type alias for any shape that conforms to the BoxedShape interface.
*/
export type AnyBoxedShape = BoxedShape<AnyValueRepresentable>;
//# sourceMappingURL=BoxedShape.d.ts.map