modern-path2d 1.4.4 → 1.4.6

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
@@ -3,6 +3,93 @@ interface DrawPointOptions {
3
3
  }
4
4
  declare function drawPoint(ctx: CanvasRenderingContext2D, x: number, y: number, options?: DrawPointOptions): void;
5
5
 
6
+ /**
7
+ * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
8
+ */
9
+ type Path2DCommand = {
10
+ type: 'm' | 'M';
11
+ x: number;
12
+ y: number;
13
+ } | {
14
+ type: 'h' | 'H';
15
+ x: number;
16
+ } | {
17
+ type: 'v' | 'V';
18
+ y: number;
19
+ } | {
20
+ type: 'l' | 'L';
21
+ x: number;
22
+ y: number;
23
+ } | {
24
+ type: 'c' | 'C';
25
+ x1: number;
26
+ y1: number;
27
+ x2: number;
28
+ y2: number;
29
+ x: number;
30
+ y: number;
31
+ } | {
32
+ type: 's' | 'S';
33
+ x2: number;
34
+ y2: number;
35
+ x: number;
36
+ y: number;
37
+ } | {
38
+ type: 'q' | 'Q';
39
+ x1: number;
40
+ y1: number;
41
+ x: number;
42
+ y: number;
43
+ } | {
44
+ type: 't' | 'T';
45
+ x: number;
46
+ y: number;
47
+ } | {
48
+ type: 'a' | 'A';
49
+ rx: number;
50
+ ry: number;
51
+ angle: number;
52
+ largeArcFlag: number;
53
+ sweepFlag: number;
54
+ x: number;
55
+ y: number;
56
+ } | {
57
+ type: 'z' | 'Z';
58
+ };
59
+ /**
60
+ * SVG path data
61
+ *
62
+ * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
63
+ */
64
+ type Path2DData = string;
65
+ type FillRule = 'nonzero' | 'evenodd';
66
+ type StrokeLinecap = 'butt' | 'round' | 'square';
67
+ type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
68
+ interface Path2DDrawStyle {
69
+ fill: string | any;
70
+ stroke: string | any;
71
+ shadowColor: string;
72
+ shadowOffsetX: number;
73
+ shadowOffsetY: number;
74
+ shadowBlur: number;
75
+ }
76
+ interface Path2DStyle extends Path2DDrawStyle {
77
+ [key: string]: any;
78
+ fillOpacity: number;
79
+ fillRule: FillRule;
80
+ opacity: number;
81
+ strokeOpacity: number;
82
+ strokeWidth: number;
83
+ strokeLinecap: StrokeLinecap;
84
+ strokeLinejoin: StrokeLinejoin;
85
+ strokeMiterlimit: number;
86
+ strokeDasharray: number[];
87
+ strokeDashoffset: number;
88
+ visibility: string;
89
+ }
90
+
91
+ declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
92
+
6
93
  declare class Matrix3 {
7
94
  elements: number[];
8
95
  constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
@@ -109,8 +196,15 @@ declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x
109
196
 
110
197
  declare function getDirectedArea(vertices: number[]): number;
111
198
 
112
- declare function pointInPolygonEvenOdd(point: number[], polygon: number[]): boolean;
113
- declare function pointInPolygonNonZero(point: number[], polygon: number[]): boolean;
199
+ declare function toKebabCase(str: string): string;
200
+ declare function getIntersectionPoint(p1: Vector2, p2: Vector2, q1: Vector2, q2: Vector2): Vector2;
201
+
202
+ interface Grouping {
203
+ index: number;
204
+ parentIndex: number | null;
205
+ wn: number;
206
+ }
207
+ declare function nonzeroFillRule(paths: number[][]): Grouping[];
114
208
 
115
209
  declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
116
210
 
@@ -214,7 +308,6 @@ declare class RoundCurve extends Curve {
214
308
  declare class ArcCurve extends RoundCurve {
215
309
  constructor(cx?: number, cy?: number, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
216
310
  drawTo(ctx: CanvasRenderingContext2D): this;
217
- getAdaptiveVertices(output?: number[]): number[];
218
311
  }
219
312
 
220
313
  declare class CompositeCurve<T extends Curve = Curve> extends Curve {
@@ -350,60 +443,6 @@ declare class SplineCurve extends Curve {
350
443
  copy(source: SplineCurve): this;
351
444
  }
352
445
 
353
- /**
354
- * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
355
- */
356
- type Path2DCommand = {
357
- type: 'm' | 'M';
358
- x: number;
359
- y: number;
360
- } | {
361
- type: 'h' | 'H';
362
- x: number;
363
- } | {
364
- type: 'v' | 'V';
365
- y: number;
366
- } | {
367
- type: 'l' | 'L';
368
- x: number;
369
- y: number;
370
- } | {
371
- type: 'c' | 'C';
372
- x1: number;
373
- y1: number;
374
- x2: number;
375
- y2: number;
376
- x: number;
377
- y: number;
378
- } | {
379
- type: 's' | 'S';
380
- x2: number;
381
- y2: number;
382
- x: number;
383
- y: number;
384
- } | {
385
- type: 'q' | 'Q';
386
- x1: number;
387
- y1: number;
388
- x: number;
389
- y: number;
390
- } | {
391
- type: 't' | 'T';
392
- x: number;
393
- y: number;
394
- } | {
395
- type: 'a' | 'A';
396
- rx: number;
397
- ry: number;
398
- angle: number;
399
- largeArcFlag: number;
400
- sweepFlag: number;
401
- x: number;
402
- y: number;
403
- } | {
404
- type: 'z' | 'Z';
405
- };
406
-
407
446
  declare class CurvePath extends CompositeCurve {
408
447
  startPoint?: Vector2;
409
448
  currentPoint?: Vector2;
@@ -436,39 +475,6 @@ declare class CurvePath extends CompositeCurve {
436
475
  copy(source: CurvePath): this;
437
476
  }
438
477
 
439
- /**
440
- * Svg path data
441
- *
442
- * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
443
- */
444
- type Path2DData = string;
445
-
446
- type FillRule = 'nonzero' | 'evenodd';
447
- type StrokeLinecap = 'butt' | 'round' | 'square';
448
- type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
449
- interface Path2DDrawStyle {
450
- fill: string | any;
451
- stroke: string | any;
452
- shadowColor: string;
453
- shadowOffsetX: number;
454
- shadowOffsetY: number;
455
- shadowBlur: number;
456
- }
457
- interface Path2DStyle extends Path2DDrawStyle {
458
- [key: string]: any;
459
- fillOpacity: number;
460
- fillRule: FillRule;
461
- opacity: number;
462
- strokeOpacity: number;
463
- strokeWidth: number;
464
- strokeLinecap: StrokeLinecap;
465
- strokeLinejoin: StrokeLinejoin;
466
- strokeMiterlimit: number;
467
- strokeDasharray: number[];
468
- strokeDashoffset: number;
469
- visibility: string;
470
- }
471
-
472
478
  /**
473
479
  * @link https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
474
480
  *
@@ -535,8 +541,6 @@ declare class Path2DSet {
535
541
  }>): HTMLCanvasElement;
536
542
  }
537
543
 
538
- declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
539
-
540
544
  declare class FFDControlGrid {
541
545
  rows: number;
542
546
  cols: number;
@@ -579,5 +583,5 @@ declare function svgToDom(svg: string | SVGElement): SVGElement;
579
583
 
580
584
  declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
581
585
 
582
- export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, LineCurve, Matrix3, Path2D, Path2DSet, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, Vector2, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, parseArcCommand, parsePathDataArgs, pointInPolygonEvenOdd, pointInPolygonNonZero, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet };
586
+ export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, LineCurve, Matrix3, Path2D, Path2DSet, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, Vector2, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, getIntersectionPoint, nonzeroFillRule, parseArcCommand, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet, toKebabCase };
583
587
  export type { DrawPointOptions, FillRule, FillTriangulateOptions, FillTriangulatedResult, LineCap, LineJoin, LineStyle, Path2DCommand, Path2DData, Path2DDrawStyle, Path2DStyle, StrokeLinecap, StrokeLinejoin, StrokeTriangulateOptions, StrokeTriangulatedResult, VectorLike };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,93 @@ interface DrawPointOptions {
3
3
  }
4
4
  declare function drawPoint(ctx: CanvasRenderingContext2D, x: number, y: number, options?: DrawPointOptions): void;
5
5
 
6
+ /**
7
+ * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
8
+ */
9
+ type Path2DCommand = {
10
+ type: 'm' | 'M';
11
+ x: number;
12
+ y: number;
13
+ } | {
14
+ type: 'h' | 'H';
15
+ x: number;
16
+ } | {
17
+ type: 'v' | 'V';
18
+ y: number;
19
+ } | {
20
+ type: 'l' | 'L';
21
+ x: number;
22
+ y: number;
23
+ } | {
24
+ type: 'c' | 'C';
25
+ x1: number;
26
+ y1: number;
27
+ x2: number;
28
+ y2: number;
29
+ x: number;
30
+ y: number;
31
+ } | {
32
+ type: 's' | 'S';
33
+ x2: number;
34
+ y2: number;
35
+ x: number;
36
+ y: number;
37
+ } | {
38
+ type: 'q' | 'Q';
39
+ x1: number;
40
+ y1: number;
41
+ x: number;
42
+ y: number;
43
+ } | {
44
+ type: 't' | 'T';
45
+ x: number;
46
+ y: number;
47
+ } | {
48
+ type: 'a' | 'A';
49
+ rx: number;
50
+ ry: number;
51
+ angle: number;
52
+ largeArcFlag: number;
53
+ sweepFlag: number;
54
+ x: number;
55
+ y: number;
56
+ } | {
57
+ type: 'z' | 'Z';
58
+ };
59
+ /**
60
+ * SVG path data
61
+ *
62
+ * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
63
+ */
64
+ type Path2DData = string;
65
+ type FillRule = 'nonzero' | 'evenodd';
66
+ type StrokeLinecap = 'butt' | 'round' | 'square';
67
+ type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
68
+ interface Path2DDrawStyle {
69
+ fill: string | any;
70
+ stroke: string | any;
71
+ shadowColor: string;
72
+ shadowOffsetX: number;
73
+ shadowOffsetY: number;
74
+ shadowBlur: number;
75
+ }
76
+ interface Path2DStyle extends Path2DDrawStyle {
77
+ [key: string]: any;
78
+ fillOpacity: number;
79
+ fillRule: FillRule;
80
+ opacity: number;
81
+ strokeOpacity: number;
82
+ strokeWidth: number;
83
+ strokeLinecap: StrokeLinecap;
84
+ strokeLinejoin: StrokeLinejoin;
85
+ strokeMiterlimit: number;
86
+ strokeDasharray: number[];
87
+ strokeDashoffset: number;
88
+ visibility: string;
89
+ }
90
+
91
+ declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
92
+
6
93
  declare class Matrix3 {
7
94
  elements: number[];
8
95
  constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
@@ -109,8 +196,15 @@ declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x
109
196
 
110
197
  declare function getDirectedArea(vertices: number[]): number;
111
198
 
112
- declare function pointInPolygonEvenOdd(point: number[], polygon: number[]): boolean;
113
- declare function pointInPolygonNonZero(point: number[], polygon: number[]): boolean;
199
+ declare function toKebabCase(str: string): string;
200
+ declare function getIntersectionPoint(p1: Vector2, p2: Vector2, q1: Vector2, q2: Vector2): Vector2;
201
+
202
+ interface Grouping {
203
+ index: number;
204
+ parentIndex: number | null;
205
+ wn: number;
206
+ }
207
+ declare function nonzeroFillRule(paths: number[][]): Grouping[];
114
208
 
115
209
  declare function quadraticBezier(t: number, p0: number, p1: number, p2: number): number;
116
210
 
@@ -214,7 +308,6 @@ declare class RoundCurve extends Curve {
214
308
  declare class ArcCurve extends RoundCurve {
215
309
  constructor(cx?: number, cy?: number, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean);
216
310
  drawTo(ctx: CanvasRenderingContext2D): this;
217
- getAdaptiveVertices(output?: number[]): number[];
218
311
  }
219
312
 
220
313
  declare class CompositeCurve<T extends Curve = Curve> extends Curve {
@@ -350,60 +443,6 @@ declare class SplineCurve extends Curve {
350
443
  copy(source: SplineCurve): this;
351
444
  }
352
445
 
353
- /**
354
- * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
355
- */
356
- type Path2DCommand = {
357
- type: 'm' | 'M';
358
- x: number;
359
- y: number;
360
- } | {
361
- type: 'h' | 'H';
362
- x: number;
363
- } | {
364
- type: 'v' | 'V';
365
- y: number;
366
- } | {
367
- type: 'l' | 'L';
368
- x: number;
369
- y: number;
370
- } | {
371
- type: 'c' | 'C';
372
- x1: number;
373
- y1: number;
374
- x2: number;
375
- y2: number;
376
- x: number;
377
- y: number;
378
- } | {
379
- type: 's' | 'S';
380
- x2: number;
381
- y2: number;
382
- x: number;
383
- y: number;
384
- } | {
385
- type: 'q' | 'Q';
386
- x1: number;
387
- y1: number;
388
- x: number;
389
- y: number;
390
- } | {
391
- type: 't' | 'T';
392
- x: number;
393
- y: number;
394
- } | {
395
- type: 'a' | 'A';
396
- rx: number;
397
- ry: number;
398
- angle: number;
399
- largeArcFlag: number;
400
- sweepFlag: number;
401
- x: number;
402
- y: number;
403
- } | {
404
- type: 'z' | 'Z';
405
- };
406
-
407
446
  declare class CurvePath extends CompositeCurve {
408
447
  startPoint?: Vector2;
409
448
  currentPoint?: Vector2;
@@ -436,39 +475,6 @@ declare class CurvePath extends CompositeCurve {
436
475
  copy(source: CurvePath): this;
437
476
  }
438
477
 
439
- /**
440
- * Svg path data
441
- *
442
- * @link https://developer.mozilla.org/docs/Web/SVG/Attribute/d
443
- */
444
- type Path2DData = string;
445
-
446
- type FillRule = 'nonzero' | 'evenodd';
447
- type StrokeLinecap = 'butt' | 'round' | 'square';
448
- type StrokeLinejoin = 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round';
449
- interface Path2DDrawStyle {
450
- fill: string | any;
451
- stroke: string | any;
452
- shadowColor: string;
453
- shadowOffsetX: number;
454
- shadowOffsetY: number;
455
- shadowBlur: number;
456
- }
457
- interface Path2DStyle extends Path2DDrawStyle {
458
- [key: string]: any;
459
- fillOpacity: number;
460
- fillRule: FillRule;
461
- opacity: number;
462
- strokeOpacity: number;
463
- strokeWidth: number;
464
- strokeLinecap: StrokeLinecap;
465
- strokeLinejoin: StrokeLinejoin;
466
- strokeMiterlimit: number;
467
- strokeDasharray: number[];
468
- strokeDashoffset: number;
469
- visibility: string;
470
- }
471
-
472
478
  /**
473
479
  * @link https://developer.mozilla.org/zh-CN/docs/Web/API/Path2D
474
480
  *
@@ -535,8 +541,6 @@ declare class Path2DSet {
535
541
  }>): HTMLCanvasElement;
536
542
  }
537
543
 
538
- declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
539
-
540
544
  declare class FFDControlGrid {
541
545
  rows: number;
542
546
  cols: number;
@@ -579,5 +583,5 @@ declare function svgToDom(svg: string | SVGElement): SVGElement;
579
583
 
580
584
  declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
581
585
 
582
- export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, LineCurve, Matrix3, Path2D, Path2DSet, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, Vector2, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, parseArcCommand, parsePathDataArgs, pointInPolygonEvenOdd, pointInPolygonNonZero, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet };
586
+ export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, LineCurve, Matrix3, Path2D, Path2DSet, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, Vector2, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, getIntersectionPoint, nonzeroFillRule, parseArcCommand, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet, toKebabCase };
583
587
  export type { DrawPointOptions, FillRule, FillTriangulateOptions, FillTriangulatedResult, LineCap, LineJoin, LineStyle, Path2DCommand, Path2DData, Path2DDrawStyle, Path2DStyle, StrokeLinecap, StrokeLinejoin, StrokeTriangulateOptions, StrokeTriangulatedResult, VectorLike };