UNPKG

2.95 kBPlain TextView Raw
1import { vec3, mat3, mat4, vec4 } from 'gl-matrix';
2
3export type TransformCallback = (x: number, y: number, width: number, height: number) => Transformer;
4export type Transform3DCallback = (
5 x: number,
6 y: number,
7 z: number,
8 width: number,
9 height: number,
10 depth: number,
11) => Transformer3D;
12
13type Translate = ['translate', number, number];
14type Cartesian = ['cartesian'];
15type Custom = ['custom', TransformCallback];
16type Matrix = ['matrix', Matrix3];
17type Polar = ['polar', number, number, number, number];
18type Transpose = ['transpose'];
19type Scale = ['scale', number, number];
20type ShearX = ['shear.x', number];
21type ShearY = ['shear.y', number];
22type Reflect = ['reflect'];
23type ReflectX = ['reflect.x'];
24type ReflectY = ['reflect.y'];
25type Rotate = ['rotate', number];
26type Helix = ['helix', number, number, number, number];
27type Parallel = ['parallel', number, number, number, number];
28type Fisheye = ['fisheye', number, number, number, number, boolean?];
29type FisheyeX = ['fisheye.x', number, number, boolean?];
30type FisheyeY = ['fisheye.y', number, number, boolean?];
31type FisheyeCircular = ['fisheye.circular', number, number, number, number, boolean?];
32
33type Cartesian3D = ['cartesian3D'];
34type Translate3D = ['translate3D', number, number, number];
35type Transpose3D = ['transpose3D'];
36type Scale3D = ['scale3D', number, number, number];
37
38export type Transformation =
39 | Translate
40 | Cartesian
41 | Custom
42 | Matrix
43 | Polar
44 | Transpose
45 | Scale
46 | ShearX
47 | ShearY
48 | Reflect
49 | ReflectX
50 | ReflectY
51 | Rotate
52 | Helix
53 | Parallel
54 | Fisheye
55 | FisheyeX
56 | FisheyeY
57 | FisheyeCircular;
58export type Transformation3D = Cartesian3D | Translate3D | Scale3D | Transpose3D;
59
60export type Options = {
61 x?: number;
62 y?: number;
63 width?: number;
64 height?: number;
65 transformations?: Transformation[];
66};
67export type Options3D = {
68 x?: number;
69 y?: number;
70 z?: number;
71 width?: number;
72 height?: number;
73 depth?: number;
74 transformations?: Transformation3D[];
75};
76
77export type Vector2 = [number, number];
78export type Vector3 = vec3;
79export type Vector4 = vec4;
80
81export type Vector = number[];
82
83export type Matrix3 = mat3;
84export type Matrix4 = mat4;
85
86export type Transform = (vector: Vector2 | Vector) => Vector2 | Vector;
87export type Transform3D = (vector: Vector3 | Vector) => Vector3 | Vector;
88
89export type Transformer = {
90 transform?: Transform;
91 untransform?: Transform;
92};
93export type Transformer3D = {
94 transform?: Transform3D;
95 untransform?: Transform3D;
96};
97
98export type CreateTransformer = (
99 params: number[] | (number | boolean)[] | [TransformCallback] | [Matrix3],
100 x: number,
101 y: number,
102 width: number,
103 height: number,
104) => Transformer | Matrix3;
105export type CreateTransformer3D = (
106 params: number[] | (number | boolean)[] | [TransformCallback] | [Matrix3],
107 x: number,
108 y: number,
109 z: number,
110 width: number,
111 height: number,
112 depth: number,
113) => Transformer3D | Matrix4;