modern-canvas
Version:
A JavaScript WebGL rendering engine. only the ESM.
71 lines (70 loc) • 2.06 kB
TypeScript
import type { Vector2Like } from './Vector2';
import { Matrix3 } from './Matrix3';
import { Vector2 } from './Vector2';
export interface TransformObject {
a: number;
c: number;
tx: number;
b: number;
d: number;
ty: number;
tz: number;
}
export interface TransformableObject {
position: {
x: number;
y: number;
};
scale: {
x: number;
y: number;
};
skew: {
x: number;
y: number;
};
rotation: number;
}
/**
* Transform
*
* | a | c | tx|
* | b | d | ty|
* | 0 | 0 | 1 |
*/
export declare class Transform2D extends Matrix3 {
private static _t2d;
premultiply(t2d: Transform2D): this;
skewX(x: number): this;
skewY(y: number): this;
skew(x: number, y: number): this;
makeSkew(x: number, y: number): this;
translateX(x: number): this;
translateY(y: number): this;
translateZ(z: number): this;
translate3d(x: number, y: number, z: number): this;
translate(x: number, y: number, z?: number): this;
makeTranslation(x: number, y: number, _z?: number): this;
scaleX(x: number): this;
scaleY(y: number): this;
scale3d(x: number, y: number, z?: number): this;
scale(x: number, y: number, z?: number): this;
makeScale(x: number, y: number, _z?: number): this;
rotateX(x: number): this;
rotateY(y: number): this;
rotateZ(z: number): this;
rotate(rad: number): this;
rotate3d(x: number, y: number, z: number, rad: number): this;
protected _rotateToScale(rad: number): number;
protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
makeRotation(theta: number): this;
decompose(pivot?: {
x: number;
y: number;
}, output?: TransformableObject): TransformableObject;
apply<P extends Vector2Like = Vector2>(pos: Vector2Like, newPos?: P): P;
affineInverse(): this;
applyAffineInverse<P extends Vector2Like = Vector2>(pos: Vector2Like, newPos?: P): P;
isIdentity(): boolean;
toObject(): TransformObject;
}