UNPKG

@dominicstop/utils

Version:

Yet another event emitter written in typescript.

61 lines 2.33 kB
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