1 | import { vec3, mat3, mat4, vec4 } from 'gl-matrix';
|
2 |
|
3 | export type TransformCallback = (x: number, y: number, width: number, height: number) => Transformer;
|
4 | export type Transform3DCallback = (
|
5 | x: number,
|
6 | y: number,
|
7 | z: number,
|
8 | width: number,
|
9 | height: number,
|
10 | depth: number,
|
11 | ) => Transformer3D;
|
12 |
|
13 | type Translate = ['translate', number, number];
|
14 | type Cartesian = ['cartesian'];
|
15 | type Custom = ['custom', TransformCallback];
|
16 | type Matrix = ['matrix', Matrix3];
|
17 | type Polar = ['polar', number, number, number, number];
|
18 | type Transpose = ['transpose'];
|
19 | type Scale = ['scale', number, number];
|
20 | type ShearX = ['shear.x', number];
|
21 | type ShearY = ['shear.y', number];
|
22 | type Reflect = ['reflect'];
|
23 | type ReflectX = ['reflect.x'];
|
24 | type ReflectY = ['reflect.y'];
|
25 | type Rotate = ['rotate', number];
|
26 | type Helix = ['helix', number, number, number, number];
|
27 | type Parallel = ['parallel', number, number, number, number];
|
28 | type Fisheye = ['fisheye', number, number, number, number, boolean?];
|
29 | type FisheyeX = ['fisheye.x', number, number, boolean?];
|
30 | type FisheyeY = ['fisheye.y', number, number, boolean?];
|
31 | type FisheyeCircular = ['fisheye.circular', number, number, number, number, boolean?];
|
32 |
|
33 | type Cartesian3D = ['cartesian3D'];
|
34 | type Translate3D = ['translate3D', number, number, number];
|
35 | type Transpose3D = ['transpose3D'];
|
36 | type Scale3D = ['scale3D', number, number, number];
|
37 |
|
38 | export 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;
|
58 | export type Transformation3D = Cartesian3D | Translate3D | Scale3D | Transpose3D;
|
59 |
|
60 | export type Options = {
|
61 | x?: number;
|
62 | y?: number;
|
63 | width?: number;
|
64 | height?: number;
|
65 | transformations?: Transformation[];
|
66 | };
|
67 | export 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 |
|
77 | export type Vector2 = [number, number];
|
78 | export type Vector3 = vec3;
|
79 | export type Vector4 = vec4;
|
80 |
|
81 | export type Vector = number[];
|
82 |
|
83 | export type Matrix3 = mat3;
|
84 | export type Matrix4 = mat4;
|
85 |
|
86 | export type Transform = (vector: Vector2 | Vector) => Vector2 | Vector;
|
87 | export type Transform3D = (vector: Vector3 | Vector) => Vector3 | Vector;
|
88 |
|
89 | export type Transformer = {
|
90 | transform?: Transform;
|
91 | untransform?: Transform;
|
92 | };
|
93 | export type Transformer3D = {
|
94 | transform?: Transform3D;
|
95 | untransform?: Transform3D;
|
96 | };
|
97 |
|
98 | export type CreateTransformer = (
|
99 | params: number[] | (number | boolean)[] | [TransformCallback] | [Matrix3],
|
100 | x: number,
|
101 | y: number,
|
102 | width: number,
|
103 | height: number,
|
104 | ) => Transformer | Matrix3;
|
105 | export 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;
|