@vicimpa/lib-vec2
Version:
A comprehensive TypeScript library for 2D vector manipulation, compatible with CanvasRenderingContext2D.
425 lines (422 loc) • 8.21 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
export type Vec2Point = {
x: number;
y: number;
};
export type Vec2Tuple = [
x: number,
y: number
];
export type Vec2Size = {
width: number;
height: number;
};
export type Vec2PageXY = {
pageX: number;
pageY: number;
};
export type Vec2OffsetXY = {
offsetX: number;
offsetY: number;
};
export type Vec2DeltaXY = {
deltaX: number;
deltaY: number;
};
export type Vec2OffsetSize = {
offsetWidth: number;
offsetHeight: number;
};
export type Vec2InnerSize = {
innerWidth: number;
innerHeight: number;
};
export type Vec2Args = [
xy: number | Vec2Point
] | [
x: number,
y: number
];
export type Vec2Clamp = [
min: Vec2Args[0],
max: Vec2Args[0]
] | [
minX: number,
minY: number,
maxX: number,
maxY: number
];
export declare function vec2(...args: Vec2Args | [
]): Vec2;
export declare class Vec2 {
x: number;
y: number;
get point(): Vec2Point;
get tuple(): Vec2Tuple;
get size(): Vec2Size;
get p(): Vec2Point;
get t(): Vec2Tuple;
get s(): Vec2Size;
[Symbol.iterator](): Iterator<number>;
toString(): string;
constructor(...args: Vec2Args | [
]);
equal(...args: Vec2Args): boolean;
set(...args: Vec2Args): this;
toObject(o: Vec2Point): this;
toObjectSize(o: Vec2Size): this;
toTuple(o: Vec2Tuple): this;
clone(): Vec2;
min(): number;
max(): number;
angle(): number;
length(): number;
distance(...args: Vec2Args): number;
dot(...args: Vec2Args): number;
scalar(...args: Vec2Args): number;
plus(...args: Vec2Args): this;
minus(...args: Vec2Args): this;
times(...args: Vec2Args): this;
div(...args: Vec2Args): this;
rem(...args: Vec2Args): this;
pow(...args: Vec2Args): this;
abs(): this;
sign(): this;
round(): this;
ceil(): this;
floor(): this;
normalize(): this;
inverse(): this;
clampMin(...args: Vec2Args): this;
clampMax(...args: Vec2Args): this;
clamp(...args: Vec2Clamp): this;
cplus(...args: Vec2Args): Vec2;
cminus(...args: Vec2Args): Vec2;
ctimes(...args: Vec2Args): Vec2;
cdiv(...args: Vec2Args): Vec2;
crem(...args: Vec2Args): Vec2;
cpow(...args: Vec2Args): Vec2;
cabs(): Vec2;
csign(): Vec2;
cround(): Vec2;
cceil(): Vec2;
cfloor(): Vec2;
cnormalize(): Vec2;
cinverse(): Vec2;
cclampMin(...args: Vec2Args): Vec2;
cclampMax(...args: Vec2Args): Vec2;
cclamp(...args: Vec2Clamp): Vec2;
static fromAngle(angle: number, vec?: Vec2): Vec2;
static fromRandom(vec?: Vec2): Vec2;
static fromSrandom(vec?: Vec2): Vec2;
static fromSize(size: Vec2Size, vec?: Vec2): Vec2;
static fromDeltaXY(page: Vec2DeltaXY, vec?: Vec2): Vec2;
static fromPageXY(page: Vec2PageXY, vec?: Vec2): Vec2;
static fromOffsetXY(offset: Vec2OffsetXY, vec?: Vec2): Vec2;
static fromInnerSize(offsetSize: Vec2InnerSize, vec?: Vec2): Vec2;
static fromOffsetSize(offsetSize: Vec2OffsetSize, vec?: Vec2): Vec2;
static fromSvgLength(x: SVGAnimatedLength, y: SVGAnimatedLength, vec?: Vec2): Vec2;
}
export declare class Vec2Map<T> {
private _data;
private _keys;
private _vectors;
get size(): number;
has(...args: Vec2Args): boolean;
get(...args: Vec2Args): T | undefined;
set(...args: [
...Vec2Args,
value: T
]): this;
delete(...args: Vec2Args): boolean;
clear(): this;
forEach(callback: (value: T, key: Vec2) => any): void;
[Symbol.iterator](): Iterator<[
key: Vec2,
value: T
]>;
}
export declare class Vec2Set {
private _data;
private _keys;
private _vectors;
get size(): number;
has(...args: Vec2Args): boolean;
add(...args: Vec2Args): this;
delete(...args: Vec2Args): boolean;
clear(): this;
forEach(callback: (value: Vec2) => any): void;
[Symbol.iterator](): Iterator<Vec2>;
}
declare global {
type TXY = [
x: number,
y: number
] | [
xy: Vec2
];
type TAB = [
a: number,
b: number
] | [
ab: Vec2
];
type TCD = [
c: number,
d: number
] | [
cd: Vec2
];
type TEF = [
e: number,
f: number
] | [
cd: Vec2
];
type TSXY = [
sx: number,
sy: number
] | [
xy: Vec2
];
type TXY0 = [
x0: number,
y0: number
] | [
xy0: Vec2
];
type TXY1 = [
x1: number,
y1: number
] | [
xy1: Vec2
];
type TXY2 = [
x2: number,
y2: number
] | [
xy2: Vec2
];
type TCP = [
cpx: number,
cpy: number
] | [
cp: Vec2
];
type TCP1 = [
cp1x: number,
cp1y: number
] | [
cp1: Vec2
];
type TCP2 = [
cp2x: number,
cp2y: number
] | [
cp2: Vec2
];
type TDXY = [
dx: number,
dy: number
] | [
dxy: Vec2
];
type TWH = [
w: number,
h: number
] | [
wh: Vec2
];
type TSWH = [
sw: number,
sh: number
] | [
wh: Vec2
];
type TDWH = [
dw: number,
dh: number
] | [
dwh: Vec2
];
type TAngles = [
startAngle: number,
endAngle: number
] | [
startEndAngle: Vec2
];
type TRadius = [
radiusX: number,
radiusY: number
] | [
radiusXY: Vec2
];
type TDirtyXY = [
dirtyX: number,
dirtyY: number
] | [
dirtyXY: Vec2
];
type TDirtyWidthHeight = [
dirtyWidth: number,
dirtyHeight: number
] | [
dirtyWidthHeight: Vec2
];
type TABCDEF = [
...TAB,
...TCD,
...TEF
];
type TXY01 = [
...TXY0,
...TXY1
];
type TXY01R = [
...TXY0,
r0: number,
...TXY1,
r1: number
];
type TXYMaxWidth = [
...TXY,
maxWidth?: number
];
type TXYFillRule = [
...TXY,
fillRule?: CanvasFillRule
];
type TXYWH = [
...TXY,
...TWH
];
type TDXYWH = [
...TDXY,
...TDWH
];
type TDSXYWH = [
...TSXY,
...TSWH,
...TDXYWH
];
interface CanvasRect {
clearRect(...args: TXYWH): void;
fillRect(...args: TXYWH): void;
strokeRect(...args: TXYWH): void;
}
interface CanvasPath {
arc(...args: [
...TXY,
radius: number,
...TAngles,
counterclockwise?: boolean
]): void;
arcTo(...args: [
...TXY1,
...TXY2,
radius: number
]): void;
bezierCurveTo(...args: [
...TCP1,
...TCP2,
...TXY
]): void;
ellipse(...args: [
...TXY,
...TRadius,
rotation: number,
...TAngles,
counterclockwise?: boolean
]): void;
lineTo(...args: TXY): void;
moveTo(...args: TXY): void;
quadraticCurveTo(...args: [
...TCP,
...TXY
]): void;
rect(...args: TXYWH): void;
roundRect(...args: [
...TXYWH,
radii?: number | DOMPointInit | (number | DOMPointInit)[]
]): void;
}
interface Path2D {
arc(...args: [
...TXY,
radius: number,
...TAngles,
counterclockwise?: boolean
]): void;
arcTo(...args: [
...TXY1,
...TXY2,
radius: number
]): void;
bezierCurveTo(...args: [
...TCP1,
...TCP2,
...TXY
]): void;
ellipse(...args: [
...TXY,
...TRadius,
rotation: number,
...TAngles,
counterclockwise?: boolean
]): void;
lineTo(...args: TXY): void;
moveTo(...args: TXY): void;
quadraticCurveTo(...args: [
...TCP,
...TXY
]): void;
rect(...args: TXYWH): void;
roundRect(...args: [
...TXYWH,
radii?: number | DOMPointInit | (number | DOMPointInit)[]
]): void;
}
interface CanvasDrawImage {
drawImage(image: CanvasImageSource, ...args: TDXY): void;
drawImage(image: CanvasImageSource, ...args: TDXYWH): void;
drawImage(image: CanvasImageSource, ...args: TDSXYWH): void;
}
interface CanvasImageData {
createImageData(...args: [
...TSWH,
settings?: ImageDataSettings
]): ImageData;
getImageData(...args: [
...TXYWH,
settings?: ImageDataSettings
]): ImageData;
putImageData(imagedata: ImageData, ...args: TDXY): void;
putImageData(imagedata: ImageData, ...args: [
...TDXY,
...TDirtyXY,
...TDirtyWidthHeight
]): void;
}
interface CanvasDrawPath {
isPointInPath(...args: TXYFillRule): boolean;
isPointInPath(path: Path2D, ...args: TXYFillRule): boolean;
isPointInStroke(...args: TXY): boolean;
isPointInStroke(path: Path2D, ...args: TXY): boolean;
}
interface CanvasFillStrokeStyles {
createConicGradient(startAngle: number, ...args: TXY): CanvasGradient;
createLinearGradient(...args: TXY01): CanvasGradient;
createRadialGradient(...args: TXY01R): CanvasGradient;
}
interface CanvasText {
fillText(text: string, ...args: TXYMaxWidth): void;
strokeText(text: string, ...args: TXYMaxWidth): void;
}
interface CanvasTransform {
scale(...args: TXY): void;
setTransform(...args: TABCDEF): void;
transform(...args: TABCDEF): void;
translate(...args: TXY): void;
}
}
export {};