modern-path2d 0.1.10 → 0.1.11

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.d.mts CHANGED
@@ -65,90 +65,6 @@ declare class BoundingBox {
65
65
  toArray(): [number, number, number, number];
66
66
  }
67
67
 
68
- declare class CurvePath extends Curve {
69
- curves: Curve[];
70
- startPoint?: Vector2;
71
- currentPoint: Vector2;
72
- autoClose: boolean;
73
- protected _cacheLengths: number[];
74
- constructor(points?: Vector2[]);
75
- addCurve(curve: Curve): this;
76
- addPoints(points: Vector2[]): this;
77
- addCommands(commands: PathCommand[]): this;
78
- addData(data: string): this;
79
- getPoint(t: number, output?: Vector2): Vector2;
80
- getLength(): number;
81
- updateArcLengths(): void;
82
- getCurveLengths(): number[];
83
- getSpacedPoints(divisions?: number): Vector2[];
84
- getPoints(divisions?: number): Vector2[];
85
- protected _setCurrentPoint(point: VectorLike): this;
86
- closePath(): this;
87
- moveTo(x: number, y: number): this;
88
- lineTo(x: number, y: number): this;
89
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
90
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
91
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
92
- relativeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
93
- arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
94
- ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
95
- relativeEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
96
- rect(x: number, y: number, w: number, h: number): this;
97
- splineThru(points: Vector2[]): this;
98
- transformPoint(cb: (point: Vector2) => void): this;
99
- getMinMax(min?: Vector2, max?: Vector2): {
100
- min: Vector2;
101
- max: Vector2;
102
- };
103
- getBoundingBox(): BoundingBox;
104
- getCommands(): PathCommand[];
105
- drawTo(ctx: CanvasRenderingContext2D): this;
106
- copy(source: CurvePath): this;
107
- }
108
-
109
- /**
110
- * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
111
- */
112
- declare class Path2D<T = any> {
113
- currentPath: CurvePath;
114
- paths: CurvePath[];
115
- userData?: T;
116
- get startPoint(): Vector2 | undefined;
117
- get currentPoint(): Vector2 | undefined;
118
- constructor(path?: Path2D | PathCommand[] | string);
119
- addPath(path: Path2D | CurvePath): this;
120
- closePath(): this;
121
- moveTo(x: number, y: number): this;
122
- lineTo(x: number, y: number): this;
123
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
124
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
125
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
126
- arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
127
- ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
128
- rect(x: number, y: number, w: number, h: number): this;
129
- addCommands(commands: PathCommand[]): this;
130
- addData(data: string): this;
131
- splineThru(points: Vector2[]): this;
132
- forEachCurve(cb: (curve: Curve) => void): this;
133
- transformPoint(cb: (point: Vector2) => void): this;
134
- transform(matrix: Matrix3): this;
135
- getMinMax(min?: Vector2, max?: Vector2): {
136
- min: Vector2;
137
- max: Vector2;
138
- };
139
- getBoundingBox(): BoundingBox;
140
- getCommands(): PathCommand[];
141
- getData(): string;
142
- getSvgString(): string;
143
- getSvgDataUri(): string;
144
- drawTo(ctx: CanvasRenderingContext2D): void;
145
- strokeTo(ctx: CanvasRenderingContext2D): void;
146
- fillTo(ctx: CanvasRenderingContext2D): void;
147
- copy(source: Path2D): this;
148
- toCanvas(fill?: boolean): HTMLCanvasElement;
149
- clone(): this;
150
- }
151
-
152
68
  /**
153
69
  * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
154
70
  */
@@ -202,6 +118,49 @@ type PathCommand = {
202
118
  } | {
203
119
  type: 'z' | 'Z';
204
120
  };
121
+ type FillRule = 'nonzero' | 'evenodd';
122
+ type StrokeLinecap = 'butt' | 'round' | 'square';
123
+ type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
124
+ interface PathStyle {
125
+ [key: string]: any;
126
+ fill?: string;
127
+ fillOpacity?: number;
128
+ fillRule?: FillRule;
129
+ opacity?: number;
130
+ stroke?: string;
131
+ strokeOpacity?: number;
132
+ strokeWidth?: number;
133
+ strokeLinecap?: StrokeLinecap;
134
+ strokeLinejoin?: StrokeLinejoin;
135
+ strokeMiterlimit?: number;
136
+ strokeDasharray?: number[];
137
+ strokeDashoffset?: number;
138
+ visibility?: string;
139
+ }
140
+
141
+ /**
142
+ * @link http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
143
+ */
144
+ declare function addPathCommandsToPath2D(commands: PathCommand[], path: Path2D | CurvePath): void;
145
+
146
+ /**
147
+ * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
148
+ * https://mortoray.com/2017/02/16/rendering-an-svg-elliptical-arc-as-bezier-curves/ Appendix: Endpoint to center arc conversion
149
+ * From
150
+ * rx ry x-axis-rotation large-arc-flag sweep-flag x y
151
+ * To
152
+ * aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation
153
+ */
154
+ declare function parseArcCommand(path: Path2D | CurvePath, rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, start: Vector2, end: Vector2): void;
155
+
156
+ /**
157
+ * from https://github.com/ppvg/svg-numbers (MIT License)
158
+ */
159
+ declare function parsePathDataArgs(input: string, flags?: number[], stride?: number): number[];
160
+
161
+ declare function pathCommandsToPathData(commands: PathCommand[]): string;
162
+
163
+ declare function pathDataToPathCommands(d: string): PathCommand[];
205
164
 
206
165
  declare abstract class Curve {
207
166
  arcLengthDivisions: number;
@@ -410,7 +369,94 @@ declare class SplineCurve extends Curve {
410
369
  copy(source: SplineCurve): this;
411
370
  }
412
371
 
372
+ declare class CurvePath extends Curve {
373
+ curves: Curve[];
374
+ startPoint?: Vector2;
375
+ currentPoint: Vector2;
376
+ autoClose: boolean;
377
+ protected _cacheLengths: number[];
378
+ constructor(points?: Vector2[]);
379
+ addCurve(curve: Curve): this;
380
+ addPoints(points: Vector2[]): this;
381
+ addCommands(commands: PathCommand[]): this;
382
+ addData(data: string): this;
383
+ getPoint(t: number, output?: Vector2): Vector2;
384
+ getLength(): number;
385
+ updateArcLengths(): void;
386
+ getCurveLengths(): number[];
387
+ getSpacedPoints(divisions?: number): Vector2[];
388
+ getPoints(divisions?: number): Vector2[];
389
+ protected _setCurrentPoint(point: VectorLike): this;
390
+ closePath(): this;
391
+ moveTo(x: number, y: number): this;
392
+ lineTo(x: number, y: number): this;
393
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
394
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
395
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
396
+ relativeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
397
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
398
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
399
+ relativeEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
400
+ rect(x: number, y: number, w: number, h: number): this;
401
+ splineThru(points: Vector2[]): this;
402
+ transformPoint(cb: (point: Vector2) => void): this;
403
+ getMinMax(min?: Vector2, max?: Vector2): {
404
+ min: Vector2;
405
+ max: Vector2;
406
+ };
407
+ getBoundingBox(): BoundingBox;
408
+ getCommands(): PathCommand[];
409
+ drawTo(ctx: CanvasRenderingContext2D): this;
410
+ copy(source: CurvePath): this;
411
+ }
412
+
413
+ /**
414
+ * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
415
+ */
416
+ declare class Path2D {
417
+ currentPath: CurvePath;
418
+ paths: CurvePath[];
419
+ style: PathStyle;
420
+ get startPoint(): Vector2 | undefined;
421
+ get currentPoint(): Vector2 | undefined;
422
+ get strokeWidth(): number;
423
+ constructor(path?: Path2D | PathCommand[] | string);
424
+ addPath(path: Path2D | CurvePath): this;
425
+ closePath(): this;
426
+ moveTo(x: number, y: number): this;
427
+ lineTo(x: number, y: number): this;
428
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
429
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
430
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
431
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
432
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
433
+ rect(x: number, y: number, w: number, h: number): this;
434
+ addCommands(commands: PathCommand[]): this;
435
+ addData(data: string): this;
436
+ splineThru(points: Vector2[]): this;
437
+ forEachCurve(cb: (curve: Curve) => void): this;
438
+ transformPoint(cb: (point: Vector2) => void): this;
439
+ transform(matrix: Matrix3): this;
440
+ getMinMax(min?: Vector2, max?: Vector2): {
441
+ min: Vector2;
442
+ max: Vector2;
443
+ };
444
+ getBoundingBox(withStrokeWidth?: boolean): BoundingBox;
445
+ getCommands(): PathCommand[];
446
+ getData(): string;
447
+ getSvgPathXml(): string;
448
+ getSvgXml(): string;
449
+ getSvgDataUri(): string;
450
+ drawTo(ctx: CanvasRenderingContext2D): void;
451
+ copy(source: Path2D): this;
452
+ toSvg(): SVGElement;
453
+ toCanvas(pixelRatio?: number): HTMLCanvasElement;
454
+ clone(): this;
455
+ }
456
+
457
+ declare function setCanvasContextByPath(ctx: CanvasRenderingContext2D, path: Path2D): void;
458
+
413
459
  declare function parseSvgToDom(svg: string | SVGElement): SVGElement;
414
460
  declare function parseSvg(svg: string | SVGElement): Path2D[];
415
461
 
416
- export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, Vector2, type VectorLike, parseSvg, parseSvgToDom };
462
+ export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, type FillRule, HeartCurve, LineCurve, Matrix3, Path2D, type PathCommand, type PathStyle, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, Vector2, type VectorLike, addPathCommandsToPath2D, parseArcCommand, parsePathDataArgs, parseSvg, parseSvgToDom, pathCommandsToPathData, pathDataToPathCommands, setCanvasContextByPath };
package/dist/index.d.ts CHANGED
@@ -65,90 +65,6 @@ declare class BoundingBox {
65
65
  toArray(): [number, number, number, number];
66
66
  }
67
67
 
68
- declare class CurvePath extends Curve {
69
- curves: Curve[];
70
- startPoint?: Vector2;
71
- currentPoint: Vector2;
72
- autoClose: boolean;
73
- protected _cacheLengths: number[];
74
- constructor(points?: Vector2[]);
75
- addCurve(curve: Curve): this;
76
- addPoints(points: Vector2[]): this;
77
- addCommands(commands: PathCommand[]): this;
78
- addData(data: string): this;
79
- getPoint(t: number, output?: Vector2): Vector2;
80
- getLength(): number;
81
- updateArcLengths(): void;
82
- getCurveLengths(): number[];
83
- getSpacedPoints(divisions?: number): Vector2[];
84
- getPoints(divisions?: number): Vector2[];
85
- protected _setCurrentPoint(point: VectorLike): this;
86
- closePath(): this;
87
- moveTo(x: number, y: number): this;
88
- lineTo(x: number, y: number): this;
89
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
90
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
91
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
92
- relativeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
93
- arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
94
- ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
95
- relativeEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
96
- rect(x: number, y: number, w: number, h: number): this;
97
- splineThru(points: Vector2[]): this;
98
- transformPoint(cb: (point: Vector2) => void): this;
99
- getMinMax(min?: Vector2, max?: Vector2): {
100
- min: Vector2;
101
- max: Vector2;
102
- };
103
- getBoundingBox(): BoundingBox;
104
- getCommands(): PathCommand[];
105
- drawTo(ctx: CanvasRenderingContext2D): this;
106
- copy(source: CurvePath): this;
107
- }
108
-
109
- /**
110
- * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
111
- */
112
- declare class Path2D<T = any> {
113
- currentPath: CurvePath;
114
- paths: CurvePath[];
115
- userData?: T;
116
- get startPoint(): Vector2 | undefined;
117
- get currentPoint(): Vector2 | undefined;
118
- constructor(path?: Path2D | PathCommand[] | string);
119
- addPath(path: Path2D | CurvePath): this;
120
- closePath(): this;
121
- moveTo(x: number, y: number): this;
122
- lineTo(x: number, y: number): this;
123
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
124
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
125
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
126
- arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
127
- ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
128
- rect(x: number, y: number, w: number, h: number): this;
129
- addCommands(commands: PathCommand[]): this;
130
- addData(data: string): this;
131
- splineThru(points: Vector2[]): this;
132
- forEachCurve(cb: (curve: Curve) => void): this;
133
- transformPoint(cb: (point: Vector2) => void): this;
134
- transform(matrix: Matrix3): this;
135
- getMinMax(min?: Vector2, max?: Vector2): {
136
- min: Vector2;
137
- max: Vector2;
138
- };
139
- getBoundingBox(): BoundingBox;
140
- getCommands(): PathCommand[];
141
- getData(): string;
142
- getSvgString(): string;
143
- getSvgDataUri(): string;
144
- drawTo(ctx: CanvasRenderingContext2D): void;
145
- strokeTo(ctx: CanvasRenderingContext2D): void;
146
- fillTo(ctx: CanvasRenderingContext2D): void;
147
- copy(source: Path2D): this;
148
- toCanvas(fill?: boolean): HTMLCanvasElement;
149
- clone(): this;
150
- }
151
-
152
68
  /**
153
69
  * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
154
70
  */
@@ -202,6 +118,49 @@ type PathCommand = {
202
118
  } | {
203
119
  type: 'z' | 'Z';
204
120
  };
121
+ type FillRule = 'nonzero' | 'evenodd';
122
+ type StrokeLinecap = 'butt' | 'round' | 'square';
123
+ type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
124
+ interface PathStyle {
125
+ [key: string]: any;
126
+ fill?: string;
127
+ fillOpacity?: number;
128
+ fillRule?: FillRule;
129
+ opacity?: number;
130
+ stroke?: string;
131
+ strokeOpacity?: number;
132
+ strokeWidth?: number;
133
+ strokeLinecap?: StrokeLinecap;
134
+ strokeLinejoin?: StrokeLinejoin;
135
+ strokeMiterlimit?: number;
136
+ strokeDasharray?: number[];
137
+ strokeDashoffset?: number;
138
+ visibility?: string;
139
+ }
140
+
141
+ /**
142
+ * @link http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
143
+ */
144
+ declare function addPathCommandsToPath2D(commands: PathCommand[], path: Path2D | CurvePath): void;
145
+
146
+ /**
147
+ * https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
148
+ * https://mortoray.com/2017/02/16/rendering-an-svg-elliptical-arc-as-bezier-curves/ Appendix: Endpoint to center arc conversion
149
+ * From
150
+ * rx ry x-axis-rotation large-arc-flag sweep-flag x y
151
+ * To
152
+ * aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation
153
+ */
154
+ declare function parseArcCommand(path: Path2D | CurvePath, rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, start: Vector2, end: Vector2): void;
155
+
156
+ /**
157
+ * from https://github.com/ppvg/svg-numbers (MIT License)
158
+ */
159
+ declare function parsePathDataArgs(input: string, flags?: number[], stride?: number): number[];
160
+
161
+ declare function pathCommandsToPathData(commands: PathCommand[]): string;
162
+
163
+ declare function pathDataToPathCommands(d: string): PathCommand[];
205
164
 
206
165
  declare abstract class Curve {
207
166
  arcLengthDivisions: number;
@@ -410,7 +369,94 @@ declare class SplineCurve extends Curve {
410
369
  copy(source: SplineCurve): this;
411
370
  }
412
371
 
372
+ declare class CurvePath extends Curve {
373
+ curves: Curve[];
374
+ startPoint?: Vector2;
375
+ currentPoint: Vector2;
376
+ autoClose: boolean;
377
+ protected _cacheLengths: number[];
378
+ constructor(points?: Vector2[]);
379
+ addCurve(curve: Curve): this;
380
+ addPoints(points: Vector2[]): this;
381
+ addCommands(commands: PathCommand[]): this;
382
+ addData(data: string): this;
383
+ getPoint(t: number, output?: Vector2): Vector2;
384
+ getLength(): number;
385
+ updateArcLengths(): void;
386
+ getCurveLengths(): number[];
387
+ getSpacedPoints(divisions?: number): Vector2[];
388
+ getPoints(divisions?: number): Vector2[];
389
+ protected _setCurrentPoint(point: VectorLike): this;
390
+ closePath(): this;
391
+ moveTo(x: number, y: number): this;
392
+ lineTo(x: number, y: number): this;
393
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
394
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
395
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
396
+ relativeArc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
397
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
398
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
399
+ relativeEllipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
400
+ rect(x: number, y: number, w: number, h: number): this;
401
+ splineThru(points: Vector2[]): this;
402
+ transformPoint(cb: (point: Vector2) => void): this;
403
+ getMinMax(min?: Vector2, max?: Vector2): {
404
+ min: Vector2;
405
+ max: Vector2;
406
+ };
407
+ getBoundingBox(): BoundingBox;
408
+ getCommands(): PathCommand[];
409
+ drawTo(ctx: CanvasRenderingContext2D): this;
410
+ copy(source: CurvePath): this;
411
+ }
412
+
413
+ /**
414
+ * @see https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
415
+ */
416
+ declare class Path2D {
417
+ currentPath: CurvePath;
418
+ paths: CurvePath[];
419
+ style: PathStyle;
420
+ get startPoint(): Vector2 | undefined;
421
+ get currentPoint(): Vector2 | undefined;
422
+ get strokeWidth(): number;
423
+ constructor(path?: Path2D | PathCommand[] | string);
424
+ addPath(path: Path2D | CurvePath): this;
425
+ closePath(): this;
426
+ moveTo(x: number, y: number): this;
427
+ lineTo(x: number, y: number): this;
428
+ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
429
+ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
430
+ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
431
+ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): this;
432
+ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
433
+ rect(x: number, y: number, w: number, h: number): this;
434
+ addCommands(commands: PathCommand[]): this;
435
+ addData(data: string): this;
436
+ splineThru(points: Vector2[]): this;
437
+ forEachCurve(cb: (curve: Curve) => void): this;
438
+ transformPoint(cb: (point: Vector2) => void): this;
439
+ transform(matrix: Matrix3): this;
440
+ getMinMax(min?: Vector2, max?: Vector2): {
441
+ min: Vector2;
442
+ max: Vector2;
443
+ };
444
+ getBoundingBox(withStrokeWidth?: boolean): BoundingBox;
445
+ getCommands(): PathCommand[];
446
+ getData(): string;
447
+ getSvgPathXml(): string;
448
+ getSvgXml(): string;
449
+ getSvgDataUri(): string;
450
+ drawTo(ctx: CanvasRenderingContext2D): void;
451
+ copy(source: Path2D): this;
452
+ toSvg(): SVGElement;
453
+ toCanvas(pixelRatio?: number): HTMLCanvasElement;
454
+ clone(): this;
455
+ }
456
+
457
+ declare function setCanvasContextByPath(ctx: CanvasRenderingContext2D, path: Path2D): void;
458
+
413
459
  declare function parseSvgToDom(svg: string | SVGElement): SVGElement;
414
460
  declare function parseSvg(svg: string | SVGElement): Path2D[];
415
461
 
416
- export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, Vector2, type VectorLike, parseSvg, parseSvgToDom };
462
+ export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, type FillRule, HeartCurve, LineCurve, Matrix3, Path2D, type PathCommand, type PathStyle, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, type StrokeLinecap, type StrokeLinejoin, Vector2, type VectorLike, addPathCommandsToPath2D, parseArcCommand, parsePathDataArgs, parseSvg, parseSvgToDom, pathCommandsToPathData, pathDataToPathCommands, setCanvasContextByPath };