UNPKG

5.38 kBTypeScriptView Raw
1export declare type Point = {
2 x: number;
3 y: number;
4};
5export declare type MCommand = 'M';
6export declare type mCommand = 'm';
7export declare type LCommand = 'L';
8export declare type lCommand = 'l';
9export declare type VCommand = 'V';
10export declare type vCommand = 'v';
11export declare type HCommand = 'H';
12export declare type hCommand = 'h';
13export declare type ZCommand = 'Z';
14export declare type zCommand = 'z';
15export declare type CCommand = 'C';
16export declare type cCommand = 'c';
17export declare type SCommand = 'S';
18export declare type sCommand = 's';
19export declare type QCommand = 'Q';
20export declare type qCommand = 'q';
21export declare type TCommand = 'T';
22export declare type tCommand = 't';
23export declare type ACommand = 'A';
24export declare type aCommand = 'a';
25export declare type AbsoluteCommand = MCommand | LCommand | VCommand | HCommand | ZCommand | CCommand | SCommand | QCommand | TCommand | ACommand;
26export declare type RelativeCommand = mCommand | lCommand | vCommand | hCommand | zCommand | cCommand | sCommand | qCommand | tCommand | aCommand;
27export declare type PathCommand = AbsoluteCommand | RelativeCommand;
28export declare type MSegment = [MCommand, number, number];
29export declare type mSegment = [mCommand, number, number];
30export declare type MoveSegment = MSegment | mSegment;
31export declare type LSegment = [LCommand, number, number];
32export declare type lSegment = [lCommand, number, number];
33export declare type LineSegment = LSegment | lSegment;
34export declare type VSegment = [VCommand, number];
35export declare type vSegment = [vCommand, number];
36export declare type VertLineSegment = vSegment | VSegment;
37export declare type HSegment = [HCommand, number];
38export declare type hSegment = [hCommand, number];
39export declare type HorLineSegment = HSegment | hSegment;
40export declare type ZSegment = [ZCommand];
41export declare type zSegment = [zCommand];
42export declare type CloseSegment = ZSegment | zSegment;
43export declare type CSegment = [CCommand, number, number, number, number, number, number];
44export declare type cSegment = [cCommand, number, number, number, number, number, number];
45export declare type CubicSegment = CSegment | cSegment;
46export declare type SSegment = [SCommand, number, number, number, number];
47export declare type sSegment = [sCommand, number, number, number, number];
48export declare type ShortCubicSegment = SSegment | sSegment;
49export declare type QSegment = [QCommand, number, number, number, number];
50export declare type qSegment = [qCommand, number, number, number, number];
51export declare type QuadSegment = QSegment | qSegment;
52export declare type TSegment = [TCommand, number, number];
53export declare type tSegment = [tCommand, number, number];
54export declare type ShortQuadSegment = TSegment | tSegment;
55export declare type ASegment = [ACommand, number, number, number, number, number, number, number];
56export declare type aSegment = [aCommand, number, number, number, number, number, number, number];
57export declare type ArcSegment = ASegment | aSegment;
58export declare type PathSegment = MoveSegment | LineSegment | VertLineSegment | HorLineSegment | CloseSegment | CubicSegment | ShortCubicSegment | QuadSegment | ShortQuadSegment | ArcSegment;
59export interface SegmentProperties {
60 /** the segment */
61 segment: PathSegment;
62 /** the segment index */
63 index: number;
64 /** the segment length */
65 length: number;
66 /** the length including the segment length */
67 lengthAtSegment: number;
68 [key: string]: any;
69}
70export declare type ShortSegment = VertLineSegment | HorLineSegment | ShortCubicSegment | ShortQuadSegment | CloseSegment;
71export declare type AbsoluteSegment = MSegment | LSegment | VSegment | HSegment | CSegment | SSegment | QSegment | TSegment | ASegment | ZSegment;
72export declare type RelativeSegment = mSegment | lSegment | vSegment | hSegment | cSegment | sSegment | qSegment | tSegment | aSegment | zSegment;
73export declare type NormalSegment = MSegment | LSegment | CSegment | QSegment | ASegment | ZSegment;
74export declare type PathArray = [MSegment | mSegment, ...PathSegment[]];
75export declare type AbsoluteArray = [MSegment, ...AbsoluteSegment[]];
76export declare type RelativeArray = [MSegment, ...RelativeSegment[]];
77export declare type NormalArray = [MSegment, ...NormalSegment[]];
78export declare type CurveArray = [MSegment, ...CSegment[]];
79export declare type PolygonArray = [MSegment, ...LSegment[], ZSegment];
80export declare type PolylineArray = [MSegment, ...LSegment[]];
81export interface ParserParams {
82 x1: number;
83 y1: number;
84 x2: number;
85 y2: number;
86 x: number;
87 y: number;
88 qx: number | null;
89 qy: number | null;
90}
91export interface PathBBox {
92 width: number;
93 height: number;
94 x: number;
95 y: number;
96 x2: number;
97 y2: number;
98 cx: number;
99 cy: number;
100 cz: number;
101}
102export interface PathBBoxTotalLength extends PathBBox {
103 length: number;
104}
105export interface PathLengthFactoryOptions {
106 bbox: boolean;
107 length: boolean;
108 sampleSize: number;
109}
110export interface SegmentLimits {
111 min: Point;
112 max: Point;
113}
114export interface PointProperties {
115 closest: {
116 x: number;
117 y: number;
118 };
119 distance: number;
120 segment?: SegmentProperties;
121}
122export interface LengthFactory {
123 length: number;
124 point: Point;
125 min: Point;
126 max: Point;
127}