modern-path2d 1.3.1 → 1.3.3
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/dist/index.cjs +400 -286
- package/dist/index.d.cts +86 -68
- package/dist/index.d.mts +86 -68
- package/dist/index.d.ts +86 -68
- package/dist/index.js +2 -2
- package/dist/index.mjs +401 -289
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -3,52 +3,6 @@ interface DrawPointOptions {
|
|
|
3
3
|
}
|
|
4
4
|
declare function drawPoint(ctx: CanvasRenderingContext2D, x: number, y: number, options?: DrawPointOptions): void;
|
|
5
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;
|
|
17
|
-
}
|
|
18
|
-
interface FillTriangulatedResult {
|
|
19
|
-
vertices: number[];
|
|
20
|
-
indices: number[];
|
|
21
|
-
}
|
|
22
|
-
declare function fillTriangulate(points: number[], options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
23
|
-
|
|
24
|
-
declare function getAdaptiveCubicBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
25
|
-
|
|
26
|
-
declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
27
|
-
|
|
28
|
-
declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
|
|
29
|
-
|
|
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 StrokeTriangulatedResult {
|
|
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): StrokeTriangulatedResult;
|
|
51
|
-
|
|
52
6
|
declare class Matrix3 {
|
|
53
7
|
elements: number[];
|
|
54
8
|
constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
|
|
@@ -130,6 +84,58 @@ declare class BoundingBox {
|
|
|
130
84
|
clone(): BoundingBox;
|
|
131
85
|
}
|
|
132
86
|
|
|
87
|
+
declare function catmullRom(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
88
|
+
|
|
89
|
+
declare function cubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
90
|
+
|
|
91
|
+
interface FillTriangulateOptions {
|
|
92
|
+
holes?: number[];
|
|
93
|
+
vertices?: number[];
|
|
94
|
+
indices?: number[];
|
|
95
|
+
verticesStride?: number;
|
|
96
|
+
verticesOffset?: number;
|
|
97
|
+
indicesOffset?: number;
|
|
98
|
+
style?: Partial<Path2DStyle>;
|
|
99
|
+
}
|
|
100
|
+
interface FillTriangulatedResult {
|
|
101
|
+
vertices: number[];
|
|
102
|
+
indices: number[];
|
|
103
|
+
}
|
|
104
|
+
declare function fillTriangulate(pointArray: number[], options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
105
|
+
|
|
106
|
+
declare function getAdaptiveCubicBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
107
|
+
|
|
108
|
+
declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
109
|
+
|
|
110
|
+
declare function getDirectedArea(vertices: number[]): number;
|
|
111
|
+
|
|
112
|
+
declare function pointInPolygon(point: number[], polygon: number[]): boolean;
|
|
113
|
+
|
|
114
|
+
declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
|
|
115
|
+
|
|
116
|
+
type LineCap = 'butt' | 'round' | 'square';
|
|
117
|
+
type LineJoin = 'round' | 'bevel' | 'miter';
|
|
118
|
+
interface StrokeTriangulateOptions {
|
|
119
|
+
vertices?: number[];
|
|
120
|
+
indices?: number[];
|
|
121
|
+
lineStyle?: LineStyle;
|
|
122
|
+
flipAlignment?: boolean;
|
|
123
|
+
closed?: boolean;
|
|
124
|
+
style?: Partial<Path2DStyle>;
|
|
125
|
+
}
|
|
126
|
+
interface StrokeTriangulatedResult {
|
|
127
|
+
vertices: number[];
|
|
128
|
+
indices: number[];
|
|
129
|
+
}
|
|
130
|
+
interface LineStyle {
|
|
131
|
+
width: number;
|
|
132
|
+
alignment: number;
|
|
133
|
+
join: LineJoin;
|
|
134
|
+
cap: LineCap;
|
|
135
|
+
miterLimit: number;
|
|
136
|
+
}
|
|
137
|
+
declare function strokeTriangulate(points: number[], options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
138
|
+
|
|
133
139
|
declare abstract class Curve {
|
|
134
140
|
arcLengthDivision: number;
|
|
135
141
|
protected _arcLengths?: number[];
|
|
@@ -138,10 +144,10 @@ declare abstract class Curve {
|
|
|
138
144
|
isClockwise(): boolean;
|
|
139
145
|
getControlPointRefs(): Vector2[];
|
|
140
146
|
applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
protected
|
|
147
|
+
getUnevenVertices(count?: number, output?: number[]): number[];
|
|
148
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
149
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
150
|
+
protected _verticesToPoints(vertices: number[], output?: Vector2[]): Vector2[];
|
|
145
151
|
getSpacedPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
146
152
|
getUnevenPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
147
153
|
getAdaptivePoints(output?: Vector2[]): Vector2[];
|
|
@@ -160,10 +166,9 @@ declare abstract class Curve {
|
|
|
160
166
|
max: Vector2;
|
|
161
167
|
};
|
|
162
168
|
getBoundingBox(): BoundingBox;
|
|
169
|
+
getFillVertices(_options?: FillTriangulateOptions): number[];
|
|
163
170
|
fillTriangulate(options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
164
171
|
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
165
|
-
toTriangulatedSVGString(result?: FillTriangulatedResult | StrokeTriangulatedResult, padding?: number): string;
|
|
166
|
-
toTriangulatedSVG(result?: FillTriangulatedResult | StrokeTriangulatedResult, padding?: number): SVGElement;
|
|
167
172
|
toCommands(): Path2DCommand[];
|
|
168
173
|
toData(): Path2DData;
|
|
169
174
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
@@ -199,8 +204,9 @@ declare class RoundCurve extends Curve {
|
|
|
199
204
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
200
205
|
applyTransform(matrix: Matrix3): this;
|
|
201
206
|
getControlPointRefs(): Vector2[];
|
|
202
|
-
|
|
203
|
-
|
|
207
|
+
protected _getAdaptiveVerticesByArc(output?: number[]): number[];
|
|
208
|
+
protected _getAdaptiveVerticesByCircle(output?: number[]): number[];
|
|
209
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
204
210
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
205
211
|
min: Vector2;
|
|
206
212
|
max: Vector2;
|
|
@@ -211,7 +217,7 @@ declare class RoundCurve extends Curve {
|
|
|
211
217
|
declare class ArcCurve extends RoundCurve {
|
|
212
218
|
constructor(cx?: number, cy?: number, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
|
|
213
219
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
214
|
-
|
|
220
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
215
221
|
}
|
|
216
222
|
|
|
217
223
|
declare class CompositeCurve<T extends Curve = Curve> extends Curve {
|
|
@@ -223,9 +229,10 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
|
|
|
223
229
|
updateLengths(): void;
|
|
224
230
|
getControlPointRefs(): Vector2[];
|
|
225
231
|
protected _removeNextPointIfEqualPrevPoint(output: number[], offset: number): number[];
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
232
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
233
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
234
|
+
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
235
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
229
236
|
applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
|
|
230
237
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
231
238
|
min: Vector2;
|
|
@@ -245,7 +252,7 @@ declare class CubicBezierCurve extends Curve {
|
|
|
245
252
|
static from(p1x: number, p1y: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, p2x: number, p2y: number): CubicBezierCurve;
|
|
246
253
|
constructor(p1?: Vector2, cp1?: Vector2, cp2?: Vector2, p2?: Vector2);
|
|
247
254
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
248
|
-
|
|
255
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
249
256
|
getControlPointRefs(): Vector2[];
|
|
250
257
|
protected _solveQuadratic(a: number, b: number, c: number): number[];
|
|
251
258
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
@@ -272,13 +279,13 @@ declare class LineCurve extends Curve {
|
|
|
272
279
|
getTangent(_t: number, output?: Vector2): Vector2;
|
|
273
280
|
getTangentAt(u: number, output?: Vector2): Vector2;
|
|
274
281
|
getControlPointRefs(): Vector2[];
|
|
275
|
-
|
|
282
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
276
283
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
277
284
|
min: Vector2;
|
|
278
285
|
max: Vector2;
|
|
279
286
|
};
|
|
280
287
|
toCommands(): Path2DCommand[];
|
|
281
|
-
|
|
288
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
282
289
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
283
290
|
copy(source: LineCurve): this;
|
|
284
291
|
}
|
|
@@ -304,7 +311,7 @@ declare class QuadraticBezierCurve extends Curve {
|
|
|
304
311
|
constructor(p1?: Vector2, cp?: Vector2, p2?: Vector2);
|
|
305
312
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
306
313
|
getControlPointRefs(): Vector2[];
|
|
307
|
-
|
|
314
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
308
315
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
309
316
|
min: Vector2;
|
|
310
317
|
max: Vector2;
|
|
@@ -322,7 +329,7 @@ declare class RectangleCurve extends PloygonCurve {
|
|
|
322
329
|
constructor(x?: number, y?: number, width?: number, height?: number);
|
|
323
330
|
update(): this;
|
|
324
331
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
325
|
-
|
|
332
|
+
getFillVertices(_options?: FillTriangulateOptions): number[];
|
|
326
333
|
copy(source: RectangleCurve): this;
|
|
327
334
|
}
|
|
328
335
|
|
|
@@ -408,10 +415,11 @@ declare class CurvePath extends CompositeCurve {
|
|
|
408
415
|
addPoints(points: Vector2[]): this;
|
|
409
416
|
addCommands(commands: Path2DCommand[]): this;
|
|
410
417
|
addData(data: string): this;
|
|
411
|
-
protected
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
418
|
+
protected _closeVertices(output: number[]): number[];
|
|
419
|
+
getUnevenVertices(count?: number, output?: number[]): number[];
|
|
420
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
421
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
422
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
415
423
|
protected _setCurrentPoint(point: VectorLike): this;
|
|
416
424
|
protected _connetLineTo(curve: Curve): this;
|
|
417
425
|
closePath(): this;
|
|
@@ -466,6 +474,13 @@ interface Path2DStyle extends Path2DDrawStyle {
|
|
|
466
474
|
|
|
467
475
|
/**
|
|
468
476
|
* @link https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
|
|
477
|
+
*
|
|
478
|
+
* Path2D
|
|
479
|
+
* --CurvePath
|
|
480
|
+
* ----LineCurve
|
|
481
|
+
* ----EllipseCurve
|
|
482
|
+
* ----CubicBezierCurve
|
|
483
|
+
* ----...
|
|
469
484
|
*/
|
|
470
485
|
declare class Path2D extends CompositeCurve<CurvePath> {
|
|
471
486
|
currentCurve: CurvePath;
|
|
@@ -498,6 +513,7 @@ declare class Path2D extends CompositeCurve<CurvePath> {
|
|
|
498
513
|
max: Vector2;
|
|
499
514
|
};
|
|
500
515
|
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
516
|
+
fillTriangulate(options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
501
517
|
getBoundingBox(withStyle?: boolean): BoundingBox;
|
|
502
518
|
drawTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
503
519
|
drawControlPointsTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
@@ -512,6 +528,8 @@ declare class Path2DSet {
|
|
|
512
528
|
viewBox?: number[] | undefined;
|
|
513
529
|
constructor(paths?: Path2D[], viewBox?: number[] | undefined);
|
|
514
530
|
getBoundingBox(withStyle?: boolean): BoundingBox | undefined;
|
|
531
|
+
toTriangulatedSVGString(result?: FillTriangulatedResult | StrokeTriangulatedResult | (FillTriangulatedResult | StrokeTriangulatedResult)[], padding?: number): string;
|
|
532
|
+
toTriangulatedSVG(result?: FillTriangulatedResult | StrokeTriangulatedResult | (FillTriangulatedResult | StrokeTriangulatedResult)[], padding?: number): SVGElement;
|
|
515
533
|
toSVGString(): string;
|
|
516
534
|
toSVGUrl(): string;
|
|
517
535
|
toSVG(): SVGElement;
|
|
@@ -564,4 +582,4 @@ declare function svgToDOM(svg: string | SVGElement): SVGElement;
|
|
|
564
582
|
|
|
565
583
|
declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
|
|
566
584
|
|
|
567
|
-
export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, type DrawPointOptions, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, type FillRule, type FillTriangulateOptions, type FillTriangulatedResult, type LineCap, LineCurve, type LineJoin, type LineStyle, Matrix3, Path2D, type Path2DCommand, type Path2DData, type Path2DDrawStyle, Path2DSet, type Path2DStyle, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, type StrokeTriangulateOptions, type StrokeTriangulatedResult, Vector2, type VectorLike, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, parseArcCommand, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDOM, svgToPath2DSet };
|
|
585
|
+
export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, type DrawPointOptions, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, type FillRule, type FillTriangulateOptions, type FillTriangulatedResult, type LineCap, LineCurve, type LineJoin, type LineStyle, Matrix3, Path2D, type Path2DCommand, type Path2DData, type Path2DDrawStyle, Path2DSet, type Path2DStyle, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, type StrokeTriangulateOptions, type StrokeTriangulatedResult, Vector2, type VectorLike, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, parseArcCommand, parsePathDataArgs, pointInPolygon, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDOM, svgToPath2DSet };
|
package/dist/index.d.mts
CHANGED
|
@@ -3,52 +3,6 @@ interface DrawPointOptions {
|
|
|
3
3
|
}
|
|
4
4
|
declare function drawPoint(ctx: CanvasRenderingContext2D, x: number, y: number, options?: DrawPointOptions): void;
|
|
5
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;
|
|
17
|
-
}
|
|
18
|
-
interface FillTriangulatedResult {
|
|
19
|
-
vertices: number[];
|
|
20
|
-
indices: number[];
|
|
21
|
-
}
|
|
22
|
-
declare function fillTriangulate(points: number[], options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
23
|
-
|
|
24
|
-
declare function getAdaptiveCubicBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
25
|
-
|
|
26
|
-
declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
27
|
-
|
|
28
|
-
declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
|
|
29
|
-
|
|
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 StrokeTriangulatedResult {
|
|
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): StrokeTriangulatedResult;
|
|
51
|
-
|
|
52
6
|
declare class Matrix3 {
|
|
53
7
|
elements: number[];
|
|
54
8
|
constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
|
|
@@ -130,6 +84,58 @@ declare class BoundingBox {
|
|
|
130
84
|
clone(): BoundingBox;
|
|
131
85
|
}
|
|
132
86
|
|
|
87
|
+
declare function catmullRom(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
88
|
+
|
|
89
|
+
declare function cubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
|
|
90
|
+
|
|
91
|
+
interface FillTriangulateOptions {
|
|
92
|
+
holes?: number[];
|
|
93
|
+
vertices?: number[];
|
|
94
|
+
indices?: number[];
|
|
95
|
+
verticesStride?: number;
|
|
96
|
+
verticesOffset?: number;
|
|
97
|
+
indicesOffset?: number;
|
|
98
|
+
style?: Partial<Path2DStyle>;
|
|
99
|
+
}
|
|
100
|
+
interface FillTriangulatedResult {
|
|
101
|
+
vertices: number[];
|
|
102
|
+
indices: number[];
|
|
103
|
+
}
|
|
104
|
+
declare function fillTriangulate(pointArray: number[], options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
105
|
+
|
|
106
|
+
declare function getAdaptiveCubicBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x2: number, y2: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
107
|
+
|
|
108
|
+
declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x1: number, y1: number, x: number, y: number, smoothness?: number, points?: number[]): number[];
|
|
109
|
+
|
|
110
|
+
declare function getDirectedArea(vertices: number[]): number;
|
|
111
|
+
|
|
112
|
+
declare function pointInPolygon(point: number[], polygon: number[]): boolean;
|
|
113
|
+
|
|
114
|
+
declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
|
|
115
|
+
|
|
116
|
+
type LineCap = 'butt' | 'round' | 'square';
|
|
117
|
+
type LineJoin = 'round' | 'bevel' | 'miter';
|
|
118
|
+
interface StrokeTriangulateOptions {
|
|
119
|
+
vertices?: number[];
|
|
120
|
+
indices?: number[];
|
|
121
|
+
lineStyle?: LineStyle;
|
|
122
|
+
flipAlignment?: boolean;
|
|
123
|
+
closed?: boolean;
|
|
124
|
+
style?: Partial<Path2DStyle>;
|
|
125
|
+
}
|
|
126
|
+
interface StrokeTriangulatedResult {
|
|
127
|
+
vertices: number[];
|
|
128
|
+
indices: number[];
|
|
129
|
+
}
|
|
130
|
+
interface LineStyle {
|
|
131
|
+
width: number;
|
|
132
|
+
alignment: number;
|
|
133
|
+
join: LineJoin;
|
|
134
|
+
cap: LineCap;
|
|
135
|
+
miterLimit: number;
|
|
136
|
+
}
|
|
137
|
+
declare function strokeTriangulate(points: number[], options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
138
|
+
|
|
133
139
|
declare abstract class Curve {
|
|
134
140
|
arcLengthDivision: number;
|
|
135
141
|
protected _arcLengths?: number[];
|
|
@@ -138,10 +144,10 @@ declare abstract class Curve {
|
|
|
138
144
|
isClockwise(): boolean;
|
|
139
145
|
getControlPointRefs(): Vector2[];
|
|
140
146
|
applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
protected
|
|
147
|
+
getUnevenVertices(count?: number, output?: number[]): number[];
|
|
148
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
149
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
150
|
+
protected _verticesToPoints(vertices: number[], output?: Vector2[]): Vector2[];
|
|
145
151
|
getSpacedPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
146
152
|
getUnevenPoints(count?: number, output?: Vector2[]): Vector2[];
|
|
147
153
|
getAdaptivePoints(output?: Vector2[]): Vector2[];
|
|
@@ -160,10 +166,9 @@ declare abstract class Curve {
|
|
|
160
166
|
max: Vector2;
|
|
161
167
|
};
|
|
162
168
|
getBoundingBox(): BoundingBox;
|
|
169
|
+
getFillVertices(_options?: FillTriangulateOptions): number[];
|
|
163
170
|
fillTriangulate(options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
164
171
|
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
165
|
-
toTriangulatedSVGString(result?: FillTriangulatedResult | StrokeTriangulatedResult, padding?: number): string;
|
|
166
|
-
toTriangulatedSVG(result?: FillTriangulatedResult | StrokeTriangulatedResult, padding?: number): SVGElement;
|
|
167
172
|
toCommands(): Path2DCommand[];
|
|
168
173
|
toData(): Path2DData;
|
|
169
174
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
@@ -199,8 +204,9 @@ declare class RoundCurve extends Curve {
|
|
|
199
204
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
200
205
|
applyTransform(matrix: Matrix3): this;
|
|
201
206
|
getControlPointRefs(): Vector2[];
|
|
202
|
-
|
|
203
|
-
|
|
207
|
+
protected _getAdaptiveVerticesByArc(output?: number[]): number[];
|
|
208
|
+
protected _getAdaptiveVerticesByCircle(output?: number[]): number[];
|
|
209
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
204
210
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
205
211
|
min: Vector2;
|
|
206
212
|
max: Vector2;
|
|
@@ -211,7 +217,7 @@ declare class RoundCurve extends Curve {
|
|
|
211
217
|
declare class ArcCurve extends RoundCurve {
|
|
212
218
|
constructor(cx?: number, cy?: number, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
|
|
213
219
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
214
|
-
|
|
220
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
215
221
|
}
|
|
216
222
|
|
|
217
223
|
declare class CompositeCurve<T extends Curve = Curve> extends Curve {
|
|
@@ -223,9 +229,10 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
|
|
|
223
229
|
updateLengths(): void;
|
|
224
230
|
getControlPointRefs(): Vector2[];
|
|
225
231
|
protected _removeNextPointIfEqualPrevPoint(output: number[], offset: number): number[];
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
232
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
233
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
234
|
+
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
235
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
229
236
|
applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
|
|
230
237
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
231
238
|
min: Vector2;
|
|
@@ -245,7 +252,7 @@ declare class CubicBezierCurve extends Curve {
|
|
|
245
252
|
static from(p1x: number, p1y: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, p2x: number, p2y: number): CubicBezierCurve;
|
|
246
253
|
constructor(p1?: Vector2, cp1?: Vector2, cp2?: Vector2, p2?: Vector2);
|
|
247
254
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
248
|
-
|
|
255
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
249
256
|
getControlPointRefs(): Vector2[];
|
|
250
257
|
protected _solveQuadratic(a: number, b: number, c: number): number[];
|
|
251
258
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
@@ -272,13 +279,13 @@ declare class LineCurve extends Curve {
|
|
|
272
279
|
getTangent(_t: number, output?: Vector2): Vector2;
|
|
273
280
|
getTangentAt(u: number, output?: Vector2): Vector2;
|
|
274
281
|
getControlPointRefs(): Vector2[];
|
|
275
|
-
|
|
282
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
276
283
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
277
284
|
min: Vector2;
|
|
278
285
|
max: Vector2;
|
|
279
286
|
};
|
|
280
287
|
toCommands(): Path2DCommand[];
|
|
281
|
-
|
|
288
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
282
289
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
283
290
|
copy(source: LineCurve): this;
|
|
284
291
|
}
|
|
@@ -304,7 +311,7 @@ declare class QuadraticBezierCurve extends Curve {
|
|
|
304
311
|
constructor(p1?: Vector2, cp?: Vector2, p2?: Vector2);
|
|
305
312
|
getPoint(t: number, output?: Vector2): Vector2;
|
|
306
313
|
getControlPointRefs(): Vector2[];
|
|
307
|
-
|
|
314
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
308
315
|
getMinMax(min?: Vector2, max?: Vector2): {
|
|
309
316
|
min: Vector2;
|
|
310
317
|
max: Vector2;
|
|
@@ -322,7 +329,7 @@ declare class RectangleCurve extends PloygonCurve {
|
|
|
322
329
|
constructor(x?: number, y?: number, width?: number, height?: number);
|
|
323
330
|
update(): this;
|
|
324
331
|
drawTo(ctx: CanvasRenderingContext2D): this;
|
|
325
|
-
|
|
332
|
+
getFillVertices(_options?: FillTriangulateOptions): number[];
|
|
326
333
|
copy(source: RectangleCurve): this;
|
|
327
334
|
}
|
|
328
335
|
|
|
@@ -408,10 +415,11 @@ declare class CurvePath extends CompositeCurve {
|
|
|
408
415
|
addPoints(points: Vector2[]): this;
|
|
409
416
|
addCommands(commands: Path2DCommand[]): this;
|
|
410
417
|
addData(data: string): this;
|
|
411
|
-
protected
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
418
|
+
protected _closeVertices(output: number[]): number[];
|
|
419
|
+
getUnevenVertices(count?: number, output?: number[]): number[];
|
|
420
|
+
getSpacedVertices(count?: number, output?: number[]): number[];
|
|
421
|
+
getAdaptiveVertices(output?: number[]): number[];
|
|
422
|
+
getFillVertices(options?: FillTriangulateOptions): number[];
|
|
415
423
|
protected _setCurrentPoint(point: VectorLike): this;
|
|
416
424
|
protected _connetLineTo(curve: Curve): this;
|
|
417
425
|
closePath(): this;
|
|
@@ -466,6 +474,13 @@ interface Path2DStyle extends Path2DDrawStyle {
|
|
|
466
474
|
|
|
467
475
|
/**
|
|
468
476
|
* @link https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
|
|
477
|
+
*
|
|
478
|
+
* Path2D
|
|
479
|
+
* --CurvePath
|
|
480
|
+
* ----LineCurve
|
|
481
|
+
* ----EllipseCurve
|
|
482
|
+
* ----CubicBezierCurve
|
|
483
|
+
* ----...
|
|
469
484
|
*/
|
|
470
485
|
declare class Path2D extends CompositeCurve<CurvePath> {
|
|
471
486
|
currentCurve: CurvePath;
|
|
@@ -498,6 +513,7 @@ declare class Path2D extends CompositeCurve<CurvePath> {
|
|
|
498
513
|
max: Vector2;
|
|
499
514
|
};
|
|
500
515
|
strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
|
|
516
|
+
fillTriangulate(options?: FillTriangulateOptions): FillTriangulatedResult;
|
|
501
517
|
getBoundingBox(withStyle?: boolean): BoundingBox;
|
|
502
518
|
drawTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
503
519
|
drawControlPointsTo(ctx: CanvasRenderingContext2D, style?: Partial<Path2DStyle>): this;
|
|
@@ -512,6 +528,8 @@ declare class Path2DSet {
|
|
|
512
528
|
viewBox?: number[] | undefined;
|
|
513
529
|
constructor(paths?: Path2D[], viewBox?: number[] | undefined);
|
|
514
530
|
getBoundingBox(withStyle?: boolean): BoundingBox | undefined;
|
|
531
|
+
toTriangulatedSVGString(result?: FillTriangulatedResult | StrokeTriangulatedResult | (FillTriangulatedResult | StrokeTriangulatedResult)[], padding?: number): string;
|
|
532
|
+
toTriangulatedSVG(result?: FillTriangulatedResult | StrokeTriangulatedResult | (FillTriangulatedResult | StrokeTriangulatedResult)[], padding?: number): SVGElement;
|
|
515
533
|
toSVGString(): string;
|
|
516
534
|
toSVGUrl(): string;
|
|
517
535
|
toSVG(): SVGElement;
|
|
@@ -564,4 +582,4 @@ declare function svgToDOM(svg: string | SVGElement): SVGElement;
|
|
|
564
582
|
|
|
565
583
|
declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
|
|
566
584
|
|
|
567
|
-
export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, type DrawPointOptions, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, type FillRule, type FillTriangulateOptions, type FillTriangulatedResult, type LineCap, LineCurve, type LineJoin, type LineStyle, Matrix3, Path2D, type Path2DCommand, type Path2DData, type Path2DDrawStyle, Path2DSet, type Path2DStyle, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, type StrokeTriangulateOptions, type StrokeTriangulatedResult, Vector2, type VectorLike, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, parseArcCommand, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDOM, svgToPath2DSet };
|
|
585
|
+
export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, type DrawPointOptions, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, type FillRule, type FillTriangulateOptions, type FillTriangulatedResult, type LineCap, LineCurve, type LineJoin, type LineStyle, Matrix3, Path2D, type Path2DCommand, type Path2DData, type Path2DDrawStyle, Path2DSet, type Path2DStyle, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, type StrokeTriangulateOptions, type StrokeTriangulatedResult, Vector2, type VectorLike, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, parseArcCommand, parsePathDataArgs, pointInPolygon, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDOM, svgToPath2DSet };
|