modern-path2d 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/index.cjs +1517 -900
- package/dist/index.d.cts +253 -254
- package/dist/index.d.mts +253 -254
- package/dist/index.d.ts +253 -254
- package/dist/index.js +2 -2
- package/dist/index.mjs +1499 -890
- package/package.json +7 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,83 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*/
|
|
4
|
-
type PathCommand = {
|
|
5
|
-
type: 'm' | 'M';
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
} | {
|
|
9
|
-
type: 'h' | 'H';
|
|
10
|
-
x: number;
|
|
11
|
-
} | {
|
|
12
|
-
type: 'v' | 'V';
|
|
13
|
-
y: number;
|
|
14
|
-
} | {
|
|
15
|
-
type: 'l' | 'L';
|
|
16
|
-
x: number;
|
|
17
|
-
y: number;
|
|
18
|
-
} | {
|
|
19
|
-
type: 'c' | 'C';
|
|
20
|
-
x1: number;
|
|
21
|
-
y1: number;
|
|
22
|
-
x2: number;
|
|
23
|
-
y2: number;
|
|
24
|
-
x: number;
|
|
25
|
-
y: number;
|
|
26
|
-
} | {
|
|
27
|
-
type: 's' | 'S';
|
|
28
|
-
x2: number;
|
|
29
|
-
y2: number;
|
|
30
|
-
x: number;
|
|
31
|
-
y: number;
|
|
32
|
-
} | {
|
|
33
|
-
type: 'q' | 'Q';
|
|
34
|
-
x1: number;
|
|
35
|
-
y1: number;
|
|
36
|
-
x: number;
|
|
37
|
-
y: number;
|
|
38
|
-
} | {
|
|
39
|
-
type: 't' | 'T';
|
|
40
|
-
x: number;
|
|
41
|
-
y: number;
|
|
42
|
-
} | {
|
|
43
|
-
type: 'a' | 'A';
|
|
44
|
-
rx: number;
|
|
45
|
-
ry: number;
|
|
46
|
-
angle: number;
|
|
47
|
-
largeArcFlag: number;
|
|
48
|
-
sweepFlag: number;
|
|
49
|
-
x: number;
|
|
50
|
-
y: number;
|
|
51
|
-
} | {
|
|
52
|
-
type: 'z' | 'Z';
|
|
53
|
-
};
|
|
54
|
-
type FillRule = 'nonzero' | 'evenodd';
|
|
55
|
-
type StrokeLinecap = 'butt' | 'round' | 'square';
|
|
56
|
-
type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
|
|
57
|
-
interface PathDrawStyle {
|
|
58
|
-
fill: string | CanvasGradient | CanvasPattern;
|
|
59
|
-
stroke: string | CanvasGradient | CanvasPattern;
|
|
60
|
-
shadowColor: string;
|
|
61
|
-
shadowOffsetX: number;
|
|
62
|
-
shadowOffsetY: number;
|
|
63
|
-
shadowBlur: number;
|
|
1
|
+
interface DrawPointOptions {
|
|
2
|
+
radius?: number;
|
|
64
3
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
4
|
+
declare function drawPoint(ctx: CanvasRenderingContext2D, x: number, y: number, options?: DrawPointOptions): void;
|
|
5
|
+
|
|
6
|
+
declare function catmullRom(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
7
|
+
|
|
8
|
+
declare function cubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
9
|
+
|
|
10
|
+
interface FillTriangulateOptions {
|
|
11
|
+
holes?: number[];
|
|
12
|
+
vertices?: number[];
|
|
13
|
+
indices?: number[];
|
|
14
|
+
verticesStride?: number;
|
|
15
|
+
verticesOffset?: number;
|
|
16
|
+
indicesOffset?: number;
|
|
78
17
|
}
|
|
18
|
+
interface FillTriangulateResult {
|
|
19
|
+
vertices: number[];
|
|
20
|
+
indices: number[];
|
|
21
|
+
}
|
|
22
|
+
declare function fillTriangulate(points: number[], options?: FillTriangulateOptions): FillTriangulateResult;
|
|
23
|
+
|
|
24
|
+
declare function getAdaptiveCubicBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number, smoothness: number | undefined, points: number[]): number[];
|
|
25
|
+
|
|
26
|
+
declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x: number, y: number, smoothness: number | undefined, points: number[]): number[];
|
|
27
|
+
|
|
28
|
+
declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
|
|
79
29
|
|
|
80
|
-
|
|
30
|
+
type LineCap = 'butt' | 'round' | 'square';
|
|
31
|
+
type LineJoin = 'round' | 'bevel' | 'miter';
|
|
32
|
+
interface StrokeTriangulateOptions {
|
|
33
|
+
vertices?: number[];
|
|
34
|
+
indices?: number[];
|
|
35
|
+
lineStyle?: LineStyle;
|
|
36
|
+
flipAlignment?: boolean;
|
|
37
|
+
closed?: boolean;
|
|
38
|
+
}
|
|
39
|
+
interface StrokeTriangulateResult {
|
|
40
|
+
vertices: number[];
|
|
41
|
+
indices: number[];
|
|
42
|
+
}
|
|
43
|
+
interface LineStyle {
|
|
44
|
+
width: number;
|
|
45
|
+
alignment: number;
|
|
46
|
+
join: LineJoin;
|
|
47
|
+
cap: LineCap;
|
|
48
|
+
miterLimit: number;
|
|
49
|
+
}
|
|
50
|
+
declare function strokeTriangulate(points: number[], options?: StrokeTriangulateOptions): StrokeTriangulateResult;
|
|
81
51
|
|
|
82
52
|
declare class Matrix3 {
|
|
83
53
|
elements: number[];
|
|
@@ -160,19 +130,25 @@ declare class BoundingBox {
|
|
|
160
130
|
}
|
|
161
131
|
|
|
162
132
|
declare abstract class Curve {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
133
|
+
startT: number;
|
|
134
|
+
endT: number;
|
|
135
|
+
arcLengthDivision: number;
|
|
136
|
+
protected _arcLengths?: number[];
|
|
167
137
|
abstract getPoint(t: number, output?: Vector2): Vector2;
|
|
168
138
|
getPointAt(u: number, output?: Vector2): Vector2;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
139
|
+
isClockwise(): boolean;
|
|
140
|
+
getControlPointRefs(): Vector2[];
|
|
141
|
+
getUnevenPointArray(count?: number, output?: number[]): number[];
|
|
142
|
+
getSpacedPointArray(count?: number, output?: number[]): number[];
|
|
143
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
144
|
+
protected _pointArrayToPoint(array: number[], output?: Vector2[]): Vector2[];
|
|
145
|
+
getSpacedPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
146
|
+
getUnevenPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
147
|
+
getAdaptivePoints(output?: Vector2[]): Vector2[];
|
|
148
|
+
getPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
173
149
|
getLength(): number;
|
|
174
|
-
getLengths(
|
|
175
|
-
|
|
150
|
+
getLengths(): number[];
|
|
151
|
+
updateLengths(): void;
|
|
176
152
|
getUToTMapping(u: number, distance?: number): number;
|
|
177
153
|
getTangent(t: number, output?: Vector2): Vector2;
|
|
178
154
|
getTangentAt(u: number, output?: Vector2): Vector2;
|
|
@@ -185,62 +161,31 @@ declare abstract class Curve {
|
|
|
185
161
|
max: Vector2;
|
|
186
162
|
};
|
|
187
163
|
getBoundingBox(): BoundingBox;
|
|
188
|
-
|
|
189
|
-
|
|
164
|
+
fillTriangulate(options?: FillTriangulateOptions): FillTriangulateResult;
|
|
165
|
+
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulateResult;
|
|
166
|
+
toCommands(): Path2DCommand[];
|
|
167
|
+
toData(): Path2DData;
|
|
190
168
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
191
169
|
copy(source: Curve): this;
|
|
192
170
|
clone(): this;
|
|
193
171
|
}
|
|
194
172
|
|
|
195
|
-
declare class CircleCurve extends Curve {
|
|
196
|
-
center: Vector2;
|
|
197
|
-
radius: number;
|
|
198
|
-
start: number;
|
|
199
|
-
end: number;
|
|
200
|
-
constructor(center: Vector2, radius: number, start?: number, end?: number);
|
|
201
|
-
getPoint(t: number): Vector2;
|
|
202
|
-
getTangent(t: number, output?: Vector2): Vector2;
|
|
203
|
-
getNormal(t: number, output?: Vector2): Vector2;
|
|
204
|
-
getControlPoints(): Vector2[];
|
|
205
|
-
getMinMax(min?: Vector2, max?: Vector2): {
|
|
206
|
-
min: Vector2;
|
|
207
|
-
max: Vector2;
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
declare class CubicBezierCurve extends Curve {
|
|
212
|
-
start: Vector2;
|
|
213
|
-
startControl: Vector2;
|
|
214
|
-
endControl: Vector2;
|
|
215
|
-
end: Vector2;
|
|
216
|
-
constructor(start?: Vector2, startControl?: Vector2, endControl?: Vector2, end?: Vector2);
|
|
217
|
-
getPoint(t: number, output?: Vector2): Vector2;
|
|
218
|
-
getControlPoints(): Vector2[];
|
|
219
|
-
protected _solveQuadratic(a: number, b: number, c: number): number[];
|
|
220
|
-
getMinMax(min?: Vector2, max?: Vector2): {
|
|
221
|
-
min: Vector2;
|
|
222
|
-
max: Vector2;
|
|
223
|
-
};
|
|
224
|
-
toCommands(): PathCommand[];
|
|
225
|
-
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
226
|
-
copy(source: CubicBezierCurve): this;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
173
|
declare class EllipseCurve extends Curve {
|
|
230
|
-
center: Vector2;
|
|
231
|
-
radiusX: number;
|
|
232
|
-
radiusY: number;
|
|
233
174
|
rotation: number;
|
|
234
175
|
startAngle: number;
|
|
235
176
|
endAngle: number;
|
|
236
177
|
clockwise: boolean;
|
|
237
|
-
|
|
178
|
+
center: Vector2;
|
|
179
|
+
radius: Vector2;
|
|
180
|
+
constructor(cx?: number, cy?: number, rx?: number, ry?: number, rotation?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
|
|
238
181
|
isClockwise(): boolean;
|
|
239
182
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
240
|
-
toCommands():
|
|
183
|
+
toCommands(): Path2DCommand[];
|
|
241
184
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
242
185
|
matrix(matrix: Matrix3): this;
|
|
243
|
-
|
|
186
|
+
getControlPointRefs(): Vector2[];
|
|
187
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
188
|
+
fillTriangulate(options?: FillTriangulateOptions): FillTriangulateResult;
|
|
244
189
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
245
190
|
min: Vector2;
|
|
246
191
|
max: Vector2;
|
|
@@ -248,143 +193,173 @@ declare class EllipseCurve extends Curve {
|
|
|
248
193
|
copy(source: EllipseCurve): this;
|
|
249
194
|
}
|
|
250
195
|
|
|
251
|
-
declare class
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
196
|
+
declare class ArcCurve extends EllipseCurve {
|
|
197
|
+
constructor(cx?: number, cy?: number, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
|
|
198
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
declare class CompositeCurve<T extends Curve = Curve> extends Curve {
|
|
202
|
+
curves: T[];
|
|
203
|
+
constructor(curves?: T[]);
|
|
204
|
+
addCurve(curve: T): this;
|
|
255
205
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
getControlPoints(): Vector2[];
|
|
206
|
+
updateLengths(): void;
|
|
207
|
+
getControlPointRefs(): Vector2[];
|
|
208
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
260
209
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
261
210
|
min: Vector2;
|
|
262
211
|
max: Vector2;
|
|
263
212
|
};
|
|
264
|
-
|
|
213
|
+
getBoundingBox(): BoundingBox;
|
|
214
|
+
toCommands(): Path2DCommand[];
|
|
265
215
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
266
|
-
copy(source: LineCurve): this;
|
|
267
216
|
}
|
|
268
217
|
|
|
269
|
-
declare class
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
getCurve(t: number): CircleCurve | LineCurve;
|
|
281
|
-
getTangent(t: number, output?: Vector2): Vector2;
|
|
282
|
-
getNormal(t: number, output?: Vector2): Vector2;
|
|
283
|
-
getControlPoints(): Vector2[];
|
|
218
|
+
declare class CubicBezierCurve extends Curve {
|
|
219
|
+
p1: Vector2;
|
|
220
|
+
cp1: Vector2;
|
|
221
|
+
cp2: Vector2;
|
|
222
|
+
p2: Vector2;
|
|
223
|
+
static from(p1: Vector2, cp1: Vector2, cp2: Vector2, p2: Vector2): CubicBezierCurve;
|
|
224
|
+
constructor(p1x: number, p1y: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, p2x: number, p2y: number);
|
|
225
|
+
getPoint(t: number, output?: Vector2): Vector2;
|
|
226
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
227
|
+
getControlPointRefs(): Vector2[];
|
|
228
|
+
protected _solveQuadratic(a: number, b: number, c: number): number[];
|
|
284
229
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
285
230
|
min: Vector2;
|
|
286
231
|
max: Vector2;
|
|
287
232
|
};
|
|
288
|
-
toCommands():
|
|
233
|
+
toCommands(): Path2DCommand[];
|
|
289
234
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
235
|
+
copy(source: CubicBezierCurve): this;
|
|
290
236
|
}
|
|
291
237
|
|
|
292
|
-
declare class
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
end: number;
|
|
298
|
-
curves: LineCurve[];
|
|
299
|
-
curveT: number;
|
|
300
|
-
points: Vector2[];
|
|
301
|
-
constructor(center: Vector2, radius?: number, number?: number, start?: number, end?: number);
|
|
302
|
-
update(): this;
|
|
303
|
-
getCurve(t: number): LineCurve;
|
|
238
|
+
declare class LineCurve extends Curve {
|
|
239
|
+
p1: Vector2;
|
|
240
|
+
p2: Vector2;
|
|
241
|
+
static from(p1: Vector2, p2: Vector2): LineCurve;
|
|
242
|
+
constructor(p1x: number, p1y: number, p2x: number, p2y: number);
|
|
304
243
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
305
244
|
getPointAt(u: number, output?: Vector2): Vector2;
|
|
306
|
-
getTangent(
|
|
307
|
-
|
|
308
|
-
|
|
245
|
+
getTangent(_t: number, output?: Vector2): Vector2;
|
|
246
|
+
getTangentAt(u: number, output?: Vector2): Vector2;
|
|
247
|
+
getControlPointRefs(): Vector2[];
|
|
248
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
309
249
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
310
250
|
min: Vector2;
|
|
311
251
|
max: Vector2;
|
|
312
252
|
};
|
|
313
|
-
toCommands():
|
|
253
|
+
toCommands(): Path2DCommand[];
|
|
314
254
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
255
|
+
copy(source: LineCurve): this;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
declare class PloygonCurve extends CompositeCurve<LineCurve> {
|
|
259
|
+
static equilateral(cx?: number, cy?: number, radius?: number, sideCount?: number): PloygonCurve;
|
|
315
260
|
}
|
|
316
261
|
|
|
317
262
|
declare class QuadraticBezierCurve extends Curve {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
263
|
+
p1: Vector2;
|
|
264
|
+
cp: Vector2;
|
|
265
|
+
p2: Vector2;
|
|
266
|
+
static from(p1: Vector2, cp: Vector2, p2: Vector2): QuadraticBezierCurve;
|
|
267
|
+
constructor(p1x: number, p1y: number, cpx: number, cpy: number, p2x: number, p2y: number);
|
|
322
268
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
323
|
-
|
|
269
|
+
getControlPointRefs(): Vector2[];
|
|
270
|
+
getAdaptivePointArray(output?: number[]): number[];
|
|
324
271
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
325
272
|
min: Vector2;
|
|
326
273
|
max: Vector2;
|
|
327
274
|
};
|
|
328
|
-
toCommands():
|
|
275
|
+
toCommands(): Path2DCommand[];
|
|
329
276
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
330
277
|
copy(source: QuadraticBezierCurve): this;
|
|
331
278
|
}
|
|
332
279
|
|
|
333
|
-
declare class
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
curveT: number;
|
|
341
|
-
get x(): number;
|
|
342
|
-
get y(): number;
|
|
343
|
-
get width(): number;
|
|
344
|
-
get height(): number;
|
|
345
|
-
constructor(center: Vector2, rx: number, aspectRatio?: number, start?: number, end?: number);
|
|
346
|
-
update(): this;
|
|
347
|
-
getCurve(t: number): LineCurve;
|
|
348
|
-
getPoint(t: number, output?: Vector2): Vector2;
|
|
349
|
-
getPointAt(u: number, output?: Vector2): Vector2;
|
|
350
|
-
getTangent(t: number, output?: Vector2): Vector2;
|
|
351
|
-
getNormal(t: number, output?: Vector2): Vector2;
|
|
352
|
-
getControlPoints(): Vector2[];
|
|
353
|
-
getMinMax(min?: Vector2, max?: Vector2): {
|
|
354
|
-
min: Vector2;
|
|
355
|
-
max: Vector2;
|
|
356
|
-
};
|
|
357
|
-
toCommands(): PathCommand[];
|
|
358
|
-
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
280
|
+
declare class RectangleCurve extends PloygonCurve {
|
|
281
|
+
x: number;
|
|
282
|
+
y: number;
|
|
283
|
+
width: number;
|
|
284
|
+
height: number;
|
|
285
|
+
constructor(x?: number, y?: number, width?: number, height?: number);
|
|
286
|
+
fillTriangulate(options?: FillTriangulateOptions): FillTriangulateResult;
|
|
359
287
|
}
|
|
360
288
|
|
|
361
289
|
declare class SplineCurve extends Curve {
|
|
362
290
|
points: Vector2[];
|
|
363
291
|
constructor(points?: Vector2[]);
|
|
364
292
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
365
|
-
|
|
293
|
+
getControlPointRefs(): Vector2[];
|
|
366
294
|
copy(source: SplineCurve): this;
|
|
367
295
|
}
|
|
368
296
|
|
|
369
|
-
|
|
370
|
-
|
|
297
|
+
/**
|
|
298
|
+
* @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
|
|
299
|
+
*/
|
|
300
|
+
type Path2DCommand = {
|
|
301
|
+
type: 'm' | 'M';
|
|
302
|
+
x: number;
|
|
303
|
+
y: number;
|
|
304
|
+
} | {
|
|
305
|
+
type: 'h' | 'H';
|
|
306
|
+
x: number;
|
|
307
|
+
} | {
|
|
308
|
+
type: 'v' | 'V';
|
|
309
|
+
y: number;
|
|
310
|
+
} | {
|
|
311
|
+
type: 'l' | 'L';
|
|
312
|
+
x: number;
|
|
313
|
+
y: number;
|
|
314
|
+
} | {
|
|
315
|
+
type: 'c' | 'C';
|
|
316
|
+
x1: number;
|
|
317
|
+
y1: number;
|
|
318
|
+
x2: number;
|
|
319
|
+
y2: number;
|
|
320
|
+
x: number;
|
|
321
|
+
y: number;
|
|
322
|
+
} | {
|
|
323
|
+
type: 's' | 'S';
|
|
324
|
+
x2: number;
|
|
325
|
+
y2: number;
|
|
326
|
+
x: number;
|
|
327
|
+
y: number;
|
|
328
|
+
} | {
|
|
329
|
+
type: 'q' | 'Q';
|
|
330
|
+
x1: number;
|
|
331
|
+
y1: number;
|
|
332
|
+
x: number;
|
|
333
|
+
y: number;
|
|
334
|
+
} | {
|
|
335
|
+
type: 't' | 'T';
|
|
336
|
+
x: number;
|
|
337
|
+
y: number;
|
|
338
|
+
} | {
|
|
339
|
+
type: 'a' | 'A';
|
|
340
|
+
rx: number;
|
|
341
|
+
ry: number;
|
|
342
|
+
angle: number;
|
|
343
|
+
largeArcFlag: number;
|
|
344
|
+
sweepFlag: number;
|
|
345
|
+
x: number;
|
|
346
|
+
y: number;
|
|
347
|
+
} | {
|
|
348
|
+
type: 'z' | 'Z';
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
declare class CurvePath extends CompositeCurve {
|
|
371
352
|
startPoint?: Vector2;
|
|
372
353
|
currentPoint?: Vector2;
|
|
373
354
|
autoClose: boolean;
|
|
374
|
-
protected _cacheLengths: number[];
|
|
375
355
|
constructor(points?: Vector2[]);
|
|
376
|
-
addCurve(curve: Curve): this;
|
|
377
356
|
addPoints(points: Vector2[]): this;
|
|
378
|
-
addCommands(commands:
|
|
357
|
+
addCommands(commands: Path2DCommand[]): this;
|
|
379
358
|
addData(data: string): this;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
getLength(): number;
|
|
383
|
-
updateArcLengths(): void;
|
|
384
|
-
getCurveLengths(): number[];
|
|
385
|
-
getSpacedPoints(divisions?: number): Vector2[];
|
|
386
|
-
getPoints(divisions?: number): Vector2[];
|
|
359
|
+
getUnevenPointArray(count?: number, output?: number[]): number[];
|
|
360
|
+
getSpacedPointArray(count?: number, output?: number[]): number[];
|
|
387
361
|
protected _setCurrentPoint(point: VectorLike): this;
|
|
362
|
+
protected _connetLineTo(curve: Curve): this;
|
|
388
363
|
closePath(): this;
|
|
389
364
|
moveTo(x: number, y: number): this;
|
|
390
365
|
lineTo(x: number, y: number): this;
|
|
@@ -397,27 +372,53 @@ declare class CurvePath extends Curve {
|
|
|
397
372
|
relativeEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
|
|
398
373
|
rect(x: number, y: number, w: number, h: number): this;
|
|
399
374
|
splineThru(points: Vector2[]): this;
|
|
400
|
-
getMinMax(min?: Vector2, max?: Vector2): {
|
|
401
|
-
min: Vector2;
|
|
402
|
-
max: Vector2;
|
|
403
|
-
};
|
|
404
|
-
getBoundingBox(): BoundingBox;
|
|
405
|
-
toCommands(): PathCommand[];
|
|
406
375
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
407
376
|
copy(source: CurvePath): this;
|
|
408
377
|
}
|
|
409
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Svg path data
|
|
381
|
+
*
|
|
382
|
+
* @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
|
|
383
|
+
*/
|
|
384
|
+
type Path2DData = string;
|
|
385
|
+
|
|
386
|
+
type FillRule = 'nonzero' | 'evenodd';
|
|
387
|
+
type StrokeLinecap = 'butt' | 'round' | 'square';
|
|
388
|
+
type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
|
|
389
|
+
interface Path2DDrawStyle {
|
|
390
|
+
fill: string | CanvasGradient | CanvasPattern;
|
|
391
|
+
stroke: string | CanvasGradient | CanvasPattern;
|
|
392
|
+
shadowColor: string;
|
|
393
|
+
shadowOffsetX: number;
|
|
394
|
+
shadowOffsetY: number;
|
|
395
|
+
shadowBlur: number;
|
|
396
|
+
}
|
|
397
|
+
interface Path2DStyle extends Path2DDrawStyle {
|
|
398
|
+
[key: string]: any;
|
|
399
|
+
fillOpacity: number;
|
|
400
|
+
fillRule: FillRule;
|
|
401
|
+
opacity: number;
|
|
402
|
+
strokeOpacity: number;
|
|
403
|
+
strokeWidth: number;
|
|
404
|
+
strokeLinecap: StrokeLinecap;
|
|
405
|
+
strokeLinejoin: StrokeLinejoin;
|
|
406
|
+
strokeMiterlimit: number;
|
|
407
|
+
strokeDasharray: number[];
|
|
408
|
+
strokeDashoffset: number;
|
|
409
|
+
visibility: string;
|
|
410
|
+
}
|
|
411
|
+
|
|
410
412
|
/**
|
|
411
413
|
* @link https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
|
|
412
414
|
*/
|
|
413
|
-
declare class Path2D {
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
style: Partial<PathStyle>;
|
|
415
|
+
declare class Path2D extends CompositeCurve<CurvePath> {
|
|
416
|
+
currentCurve: CurvePath;
|
|
417
|
+
style: Partial<Path2DStyle>;
|
|
417
418
|
get startPoint(): Vector2 | undefined;
|
|
418
419
|
get currentPoint(): Vector2 | undefined;
|
|
419
420
|
get strokeWidth(): number;
|
|
420
|
-
constructor(path?: Path2D |
|
|
421
|
+
constructor(path?: Path2D | Path2DCommand[] | Path2DData, style?: Partial<Path2DStyle>);
|
|
421
422
|
addPath(path: Path2D | CurvePath): this;
|
|
422
423
|
closePath(): this;
|
|
423
424
|
moveTo(x: number, y: number): this;
|
|
@@ -428,11 +429,9 @@ declare class Path2D {
|
|
|
428
429
|
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
|
|
429
430
|
ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
|
|
430
431
|
rect(x: number, y: number, w: number, h: number): this;
|
|
431
|
-
addCommands(commands:
|
|
432
|
-
addData(data:
|
|
432
|
+
addCommands(commands: Path2DCommand[]): this;
|
|
433
|
+
addData(data: Path2DData): this;
|
|
433
434
|
splineThru(points: Vector2[]): this;
|
|
434
|
-
getControlPoints(): Vector2[];
|
|
435
|
-
getCurves(): Curve[];
|
|
436
435
|
scale(sx: number, sy?: number, target?: VectorLike): this;
|
|
437
436
|
skew(ax: number, ay?: number, target?: VectorLike): this;
|
|
438
437
|
rotate(a: number, target?: VectorLike): this;
|
|
@@ -443,25 +442,28 @@ declare class Path2D {
|
|
|
443
442
|
max: Vector2;
|
|
444
443
|
};
|
|
445
444
|
getBoundingBox(withStyle?: boolean): BoundingBox;
|
|
446
|
-
drawTo(ctx: CanvasRenderingContext2D, style?: Partial<
|
|
447
|
-
drawControlPointsTo(ctx: CanvasRenderingContext2D, style?: Partial<
|
|
448
|
-
toCommands():
|
|
449
|
-
toData():
|
|
445
|
+
drawTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
446
|
+
drawControlPointsTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
447
|
+
toCommands(): Path2DCommand[];
|
|
448
|
+
toData(): Path2DData;
|
|
450
449
|
toSVGPathString(): string;
|
|
450
|
+
copy(source: Path2D): this;
|
|
451
|
+
clone(): this;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
declare class Path2DSet {
|
|
455
|
+
paths: Path2D[];
|
|
456
|
+
constructor(paths?: Path2D[]);
|
|
457
|
+
getBoundingBox(withStyle?: boolean): BoundingBox | undefined;
|
|
451
458
|
toSVGString(): string;
|
|
452
459
|
toSVGUrl(): string;
|
|
453
460
|
toSVG(): SVGElement;
|
|
454
|
-
toCanvas(options?: Partial<
|
|
461
|
+
toCanvas(options?: Partial<Path2DStyle & {
|
|
455
462
|
pixelRatio: number;
|
|
456
463
|
}>): HTMLCanvasElement;
|
|
457
|
-
copy(source: Path2D): this;
|
|
458
|
-
clone(): this;
|
|
459
464
|
}
|
|
460
465
|
|
|
461
|
-
|
|
462
|
-
* @link http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
|
|
463
|
-
*/
|
|
464
|
-
declare function addPathCommandsToPath2D(commands: PathCommand[], path: Path2D | CurvePath): void;
|
|
466
|
+
declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
|
|
465
467
|
|
|
466
468
|
/**
|
|
467
469
|
* @link https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
|
|
@@ -478,19 +480,16 @@ declare function parseArcCommand(path: Path2D | CurvePath, rx: number, ry: numbe
|
|
|
478
480
|
*/
|
|
479
481
|
declare function parsePathDataArgs(input: string, flags?: number[], stride?: number): number[];
|
|
480
482
|
|
|
481
|
-
|
|
483
|
+
/**
|
|
484
|
+
* @link http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
|
|
485
|
+
*/
|
|
486
|
+
declare function svgPathCommandsAddToPath2D(commands: Path2DCommand[], path: Path2D | CurvePath): void;
|
|
482
487
|
|
|
483
|
-
declare function
|
|
488
|
+
declare function svgPathCommandsToData(commands: Path2DCommand[]): Path2DData;
|
|
484
489
|
|
|
485
|
-
declare function
|
|
486
|
-
declare function parseSVG(svg: string | SVGElement): Path2D[];
|
|
490
|
+
declare function svgPathDataToCommands(data: Path2DData): Path2DCommand[];
|
|
487
491
|
|
|
488
|
-
declare function
|
|
489
|
-
declare function
|
|
490
|
-
declare function pathsToSVGUrl(paths: Path2D[]): string;
|
|
491
|
-
declare function pathsToSVG(paths: Path2D[]): SVGElement;
|
|
492
|
-
declare function pathsToCanvas(paths: Path2D[], options?: Partial<PathStyle & {
|
|
493
|
-
pixelRatio: number;
|
|
494
|
-
}>): HTMLCanvasElement;
|
|
492
|
+
declare function parseSVGToDOM(svg: string | SVGElement): SVGElement;
|
|
493
|
+
declare function parseSVG(svg: string | SVGElement): Path2DSet;
|
|
495
494
|
|
|
496
|
-
export { BoundingBox,
|
|
495
|
+
export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, type DrawPointOptions, EllipseCurve, type FillRule, type FillTriangulateOptions, type FillTriangulateResult, type LineCap, LineCurve, type LineJoin, type LineStyle, Matrix3, Path2D, type Path2DCommand, type Path2DData, type Path2DDrawStyle, Path2DSet, type Path2DStyle, PloygonCurve, QuadraticBezierCurve, RectangleCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, type StrokeTriangulateOptions, type StrokeTriangulateResult, Vector2, type VectorLike, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, parseArcCommand, parsePathDataArgs, parseSVG, parseSVGToDOM, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands };
|