modern-path2d 0.1.6 → 0.1.8

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.cts CHANGED
@@ -19,27 +19,31 @@ declare class Matrix3 {
19
19
  clone(): Matrix3;
20
20
  }
21
21
 
22
- declare class Point2D {
22
+ interface VectorLike {
23
23
  x: number;
24
24
  y: number;
25
- static get MAX(): Point2D;
26
- static get MIN(): Point2D;
25
+ }
26
+ declare class Vector2 {
27
+ x: number;
28
+ y: number;
29
+ static get MAX(): Vector2;
30
+ static get MIN(): Vector2;
27
31
  constructor(x?: number, y?: number);
28
32
  set(x: number, y: number): this;
29
- add(point: Point2D): this;
30
- sub(point: Point2D): this;
31
- distanceTo(point: Point2D): number;
32
- distanceToSquared(point: Point2D): number;
33
+ add(vec: VectorLike): this;
34
+ sub(vec: VectorLike): this;
35
+ distanceTo(vec: VectorLike): number;
36
+ distanceToSquared(vec: VectorLike): number;
33
37
  length(): number;
34
38
  multiplyScalar(scalar: number): this;
35
39
  divideScalar(scalar: number): this;
36
- subVectors(a: Point2D, b: Point2D): this;
40
+ subVectors(a: VectorLike, b: VectorLike): this;
37
41
  normalize(): this;
38
- lerpVectors(v1: Point2D, v2: Point2D, alpha: number): this;
39
- equals(point: Point2D): boolean;
42
+ lerpVectors(v1: VectorLike, v2: VectorLike, alpha: number): this;
43
+ equals(vec: VectorLike): boolean;
40
44
  applyMatrix3(m: Matrix3): this;
41
- copy(point: Point2D): this;
42
- clone(): Point2D;
45
+ copy(vec: VectorLike): this;
46
+ clone(): Vector2;
43
47
  }
44
48
 
45
49
  declare class BoundingBox {
@@ -56,40 +60,40 @@ declare class BoundingBox {
56
60
  constructor(left?: number, top?: number, width?: number, height?: number);
57
61
  static from(...boxes: BoundingBox[]): BoundingBox;
58
62
  translate(tx: number, ty: number): this;
59
- getCenterPoint(): Point2D;
63
+ getCenterPoint(): Vector2;
60
64
  clone(): BoundingBox;
61
65
  toArray(): [number, number, number, number];
62
66
  }
63
67
 
64
68
  declare class CurvePath extends Curve {
65
69
  curves: Curve[];
66
- currentPoint: Point2D;
70
+ currentPoint: Vector2;
67
71
  autoClose: boolean;
68
72
  protected _cacheLengths: number[];
69
- constructor(points?: Point2D[]);
73
+ constructor(points?: Vector2[]);
70
74
  addCurve(curve: Curve): this;
71
75
  closePath(): this;
72
- getPoint(position: number, output?: Point2D): Point2D;
76
+ getPoint(position: number, output?: Vector2): Vector2;
73
77
  getLength(): number;
74
78
  updateArcLengths(): void;
75
79
  getCurveLengths(): number[];
76
- getSpacedPoints(divisions?: number): Point2D[];
77
- getPoints(divisions?: number): Point2D[];
78
- setFromPoints(points: Point2D[]): this;
80
+ getSpacedPoints(divisions?: number): Vector2[];
81
+ getPoints(divisions?: number): Vector2[];
82
+ setFromPoints(points: Vector2[]): this;
79
83
  bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this;
80
84
  lineTo(x: number, y: number): this;
81
85
  moveTo(x: number, y: number): this;
82
86
  quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): this;
83
87
  rect(x: number, y: number, w: number, h: number): this;
84
- splineThru(points: Point2D[]): this;
88
+ splineThru(points: Vector2[]): this;
85
89
  arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, clockwise?: boolean): this;
86
90
  absarc(x: number, y: number, radius: number, startAngle: number, endAngle: number, clockwise?: boolean): this;
87
91
  ellipse(x: number, y: number, radiusX: number, radiusY: number, startAngle: number, endAngle: number, clockwise?: boolean, rotation?: number): this;
88
92
  absellipse(x: number, y: number, radiusX: number, radiusY: number, startAngle: number, endAngle: number, clockwise?: boolean, rotation?: number): this;
89
93
  getCommands(): PathCommand[];
90
- getMinMax(min?: Point2D, max?: Point2D): {
91
- min: Point2D;
92
- max: Point2D;
94
+ getMinMax(min?: Vector2, max?: Vector2): {
95
+ min: Vector2;
96
+ max: Vector2;
93
97
  };
94
98
  drawTo(ctx: CanvasRenderingContext2D): this;
95
99
  copy(source: CurvePath): this;
@@ -115,12 +119,13 @@ declare class Path2D<T = any> {
115
119
  rect(x: number, y: number, w: number, h: number): this;
116
120
  addCommands(commands: PathCommand[]): this;
117
121
  addData(data: string): this;
118
- splineThru(points: Point2D[]): this;
122
+ splineThru(points: Vector2[]): this;
119
123
  forEachCurve(cb: (curve: Curve) => void): this;
124
+ transformPoint(cb: (point: Vector2) => void): this;
120
125
  transform(matrix: Matrix3): this;
121
- getMinMax(min?: Point2D, max?: Point2D): {
122
- min: Point2D;
123
- max: Point2D;
126
+ getMinMax(min?: Vector2, max?: Vector2): {
127
+ min: Vector2;
128
+ max: Vector2;
124
129
  };
125
130
  getBoundingBox(): BoundingBox;
126
131
  getCommands(): PathCommand[];
@@ -193,26 +198,25 @@ declare abstract class Curve {
193
198
  arcLengthDivisions: number;
194
199
  protected _cacheArcLengths?: number[];
195
200
  protected _needsUpdate: boolean;
196
- abstract getPoint(t: number, output?: Point2D): Point2D;
197
- getPointAt(u: number, output?: Point2D): Point2D;
198
- getPoints(divisions?: number): Point2D[];
199
- getSpacedPoints(divisions?: number): Point2D[];
201
+ abstract getPoint(t: number, output?: Vector2): Vector2;
202
+ getPointAt(u: number, output?: Vector2): Vector2;
203
+ getPoints(divisions?: number): Vector2[];
204
+ getSpacedPoints(divisions?: number): Vector2[];
200
205
  getLength(): number;
201
206
  getLengths(divisions?: number): number[];
202
207
  updateArcLengths(): void;
203
208
  getUtoTmapping(u: number, distance?: number): number;
204
- getTangent(t: number, output?: Point2D): Point2D;
205
- getTangentAt(u: number, output?: Point2D): Point2D;
209
+ getTangent(t: number, output?: Vector2): Vector2;
210
+ getTangentAt(u: number, output?: Vector2): Vector2;
206
211
  /** overrideable */
212
+ transformPoint(cb: (point: Vector2) => void): this;
207
213
  transform(matrix: Matrix3): this;
208
- /** overrideable */
209
214
  getDivisions(divisions: number): number;
210
- /** overrideable */
211
- getMinMax(min?: Point2D, max?: Point2D): {
212
- min: Point2D;
213
- max: Point2D;
215
+ getMinMax(min?: Vector2, max?: Vector2): {
216
+ min: Vector2;
217
+ max: Vector2;
214
218
  };
215
- /** overrideable */
219
+ getBoundingBox(): BoundingBox;
216
220
  getCommands(): PathCommand[];
217
221
  getData(): string;
218
222
  /** overrideable */
@@ -222,31 +226,32 @@ declare abstract class Curve {
222
226
  }
223
227
 
224
228
  declare class CircleCurve extends Curve {
225
- center: Point2D;
229
+ center: Vector2;
226
230
  radius: number;
227
231
  start: number;
228
232
  end: number;
229
- constructor(center: Point2D, radius: number, start?: number, end?: number);
230
- getPoint(t: number): Point2D;
231
- getTangent(t: number): Point2D;
232
- getNormal(t: number): Point2D;
233
- getMinMax(min?: Point2D, max?: Point2D): {
234
- min: Point2D;
235
- max: Point2D;
233
+ constructor(center: Vector2, radius: number, start?: number, end?: number);
234
+ getPoint(t: number): Vector2;
235
+ getTangent(t: number): Vector2;
236
+ getNormal(t: number): Vector2;
237
+ transformPoint(cb: (point: Vector2) => void): this;
238
+ getMinMax(min?: Vector2, max?: Vector2): {
239
+ min: Vector2;
240
+ max: Vector2;
236
241
  };
237
242
  }
238
243
 
239
244
  declare class CubicBezierCurve extends Curve {
240
- v0: Point2D;
241
- v1: Point2D;
242
- v2: Point2D;
243
- v3: Point2D;
244
- constructor(v0?: Point2D, v1?: Point2D, v2?: Point2D, v3?: Point2D);
245
- getPoint(t: number, output?: Point2D): Point2D;
246
- transform(matrix: Matrix3): this;
247
- getMinMax(min?: Point2D, max?: Point2D): {
248
- min: Point2D;
249
- max: Point2D;
245
+ start: Vector2;
246
+ startControl: Vector2;
247
+ endControl: Vector2;
248
+ end: Vector2;
249
+ constructor(start?: Vector2, startControl?: Vector2, endControl?: Vector2, end?: Vector2);
250
+ getPoint(t: number, output?: Vector2): Vector2;
251
+ transformPoint(cb: (point: Vector2) => void): this;
252
+ getMinMax(min?: Vector2, max?: Vector2): {
253
+ min: Vector2;
254
+ max: Vector2;
250
255
  };
251
256
  getCommands(): PathCommand[];
252
257
  drawTo(ctx: CanvasRenderingContext2D): this;
@@ -254,99 +259,105 @@ declare class CubicBezierCurve extends Curve {
254
259
  }
255
260
 
256
261
  declare class EllipseCurve extends Curve {
257
- x: number;
258
- y: number;
262
+ center: Vector2;
259
263
  radiusX: number;
260
264
  radiusY: number;
261
265
  startAngle: number;
262
266
  endAngle: number;
263
267
  clockwise: boolean;
264
268
  rotation: number;
265
- constructor(x?: number, y?: number, radiusX?: number, radiusY?: number, startAngle?: number, endAngle?: number, clockwise?: boolean, rotation?: number);
266
- getPoint(t: number, output?: Point2D): Point2D;
269
+ constructor(center?: Vector2, radiusX?: number, radiusY?: number, startAngle?: number, endAngle?: number, clockwise?: boolean, rotation?: number);
270
+ getPoint(t: number, output?: Vector2): Vector2;
267
271
  getDivisions(divisions?: number): number;
268
272
  getCommands(): PathCommand[];
269
273
  drawTo(ctx: CanvasRenderingContext2D): this;
270
274
  transform(matrix: Matrix3): this;
275
+ transformPoint(cb: (point: Vector2) => void): this;
276
+ getMinMax(min?: Vector2, max?: Vector2): {
277
+ min: Vector2;
278
+ max: Vector2;
279
+ };
271
280
  copy(source: EllipseCurve): this;
272
281
  }
273
282
 
274
- declare class HeartCurve extends Curve {
275
- center: Point2D;
276
- size: number;
277
- start: number;
278
- end: number;
279
- curves: Curve[];
280
- pointT: number;
281
- constructor(center: Point2D, size: number, start?: number, end?: number);
282
- getPoint(value: number): Point2D;
283
- getPointAt(value: number): Point2D;
284
- getCurrentLine(value: number): Curve;
285
- getTangent(value: number): Point2D;
286
- getNormal(value: number): Point2D;
287
- transform(matrix: Matrix3): this;
288
- getMinMax(min?: Point2D, max?: Point2D): {
289
- min: Point2D;
290
- max: Point2D;
283
+ declare class LineCurve extends Curve {
284
+ start: Vector2;
285
+ end: Vector2;
286
+ constructor(start?: Vector2, end?: Vector2);
287
+ getPoint(t: number, output?: Vector2): Vector2;
288
+ getPointAt(u: number, output?: Vector2): Vector2;
289
+ getTangent(_t: number, output?: Vector2): Vector2;
290
+ getTangentAt(u: number, output?: Vector2): Vector2;
291
+ getNormal(t: number, output?: Vector2): Vector2;
292
+ transformPoint(cb: (point: Vector2) => void): this;
293
+ getDivisions(): number;
294
+ getMinMax(min?: Vector2, max?: Vector2): {
295
+ min: Vector2;
296
+ max: Vector2;
291
297
  };
292
298
  getCommands(): PathCommand[];
293
299
  drawTo(ctx: CanvasRenderingContext2D): this;
300
+ copy(source: LineCurve): this;
294
301
  }
295
302
 
296
- declare class LineCurve extends Curve {
297
- v1: Point2D;
298
- v2: Point2D;
299
- constructor(v1?: Point2D, v2?: Point2D);
300
- getPoint(t: number, output?: Point2D): Point2D;
301
- getPointAt(u: number, output?: Point2D): Point2D;
302
- getTangent(t: number, output?: Point2D): Point2D;
303
- getTangentAt(u: number, output?: Point2D): Point2D;
304
- transform(matrix: Matrix3): this;
305
- getDivisions(): number;
306
- getMinMax(min?: Point2D, max?: Point2D): {
307
- min: Point2D;
308
- max: Point2D;
303
+ declare class HeartCurve extends Curve {
304
+ center: Vector2;
305
+ size: number;
306
+ start: number;
307
+ end: number;
308
+ curves: (CircleCurve | LineCurve)[];
309
+ curveT: number;
310
+ constructor(center: Vector2, size: number, start?: number, end?: number);
311
+ update(): this;
312
+ getPoint(t: number): Vector2;
313
+ getPointAt(t: number): Vector2;
314
+ getCurve(t: number): CircleCurve | LineCurve;
315
+ getTangent(t: number): Vector2;
316
+ getNormal(t: number): Vector2;
317
+ transformPoint(cb: (point: Vector2) => void): this;
318
+ getMinMax(min?: Vector2, max?: Vector2): {
319
+ min: Vector2;
320
+ max: Vector2;
309
321
  };
310
322
  getCommands(): PathCommand[];
311
323
  drawTo(ctx: CanvasRenderingContext2D): this;
312
- copy(source: LineCurve): this;
313
324
  }
314
325
 
315
326
  declare class PloygonCurve extends Curve {
316
- center: Point2D;
327
+ center: Vector2;
317
328
  radius: number;
318
- num: number;
329
+ number: number;
319
330
  start: number;
320
331
  end: number;
321
332
  curves: LineCurve[];
322
- points: Point2D[];
323
- currentLine: LineCurve;
324
- pointK: any;
325
- constructor(center: Point2D, radius?: number, num?: number, start?: number, end?: number);
326
- getPoint(value: number): Point2D;
327
- getPointAt(value: number): Point2D;
328
- getCurrentLine(value: number): LineCurve;
329
- getTangent(value: number): Point2D;
330
- getNormal(value: number): Point2D;
331
- transform(matrix: Matrix3): this;
332
- getMinMax(min?: Point2D, max?: Point2D): {
333
- min: Point2D;
334
- max: Point2D;
333
+ curveT: number;
334
+ points: Vector2[];
335
+ constructor(center: Vector2, radius?: number, number?: number, start?: number, end?: number);
336
+ update(): this;
337
+ getCurve(t: number): LineCurve;
338
+ getPoint(t: number, output?: Vector2): Vector2;
339
+ getPointAt(u: number, output?: Vector2): Vector2;
340
+ getTangent(t: number, output?: Vector2): Vector2;
341
+ getNormal(t: number, output?: Vector2): Vector2;
342
+ transformPoint(cb: (point: Vector2) => void): this;
343
+ getMinMax(min?: Vector2, max?: Vector2): {
344
+ min: Vector2;
345
+ max: Vector2;
335
346
  };
336
347
  getCommands(): PathCommand[];
337
348
  drawTo(ctx: CanvasRenderingContext2D): this;
338
349
  }
339
350
 
340
351
  declare class QuadraticBezierCurve extends Curve {
341
- v0: Point2D;
342
- v1: Point2D;
343
- v2: Point2D;
344
- constructor(v0?: Point2D, v1?: Point2D, v2?: Point2D);
345
- getPoint(t: number, output?: Point2D): Point2D;
346
- transform(matrix: Matrix3): this;
347
- getMinMax(min?: Point2D, max?: Point2D): {
348
- min: Point2D;
349
- max: Point2D;
352
+ start: Vector2;
353
+ control: Vector2;
354
+ end: Vector2;
355
+ constructor(start?: Vector2, control?: Vector2, end?: Vector2);
356
+ getPoint(t: number, output?: Vector2): Vector2;
357
+ transformPoint(cb: (point: Vector2) => void): this;
358
+ getMinMax(min?: Vector2, max?: Vector2): {
359
+ min: Vector2;
360
+ max: Vector2;
350
361
  };
351
362
  getCommands(): PathCommand[];
352
363
  drawTo(ctx: CanvasRenderingContext2D): this;
@@ -354,40 +365,43 @@ declare class QuadraticBezierCurve extends Curve {
354
365
  }
355
366
 
356
367
  declare class RectangularCurve extends Curve {
357
- center: Point2D;
368
+ center: Vector2;
358
369
  rx: number;
359
370
  aspectRatio: number;
360
371
  start: number;
361
372
  end: number;
362
373
  curves: LineCurve[];
363
- pointT: number;
374
+ curveT: number;
364
375
  get x(): number;
365
376
  get y(): number;
366
377
  get width(): number;
367
378
  get height(): number;
368
- constructor(center: Point2D, rx: number, aspectRatio?: number, start?: number, end?: number);
369
- getPoint(t: number): Point2D;
370
- getPointAt(u: number): Point2D;
371
- getCurrentLine(t: number): LineCurve;
372
- getTangent(t: number): Point2D;
373
- getNormal(value: number): Point2D;
374
- transform(matrix: Matrix3): this;
375
- getMinMax(min?: Point2D, max?: Point2D): {
376
- min: Point2D;
377
- max: Point2D;
379
+ constructor(center: Vector2, rx: number, aspectRatio?: number, start?: number, end?: number);
380
+ update(): this;
381
+ getCurve(t: number): LineCurve;
382
+ getPoint(t: number, output?: Vector2): Vector2;
383
+ getPointAt(u: number, output?: Vector2): Vector2;
384
+ getTangent(t: number, output?: Vector2): Vector2;
385
+ getNormal(t: number, output?: Vector2): Vector2;
386
+ transformPoint(cb: (point: Vector2) => void): this;
387
+ getMinMax(min?: Vector2, max?: Vector2): {
388
+ min: Vector2;
389
+ max: Vector2;
378
390
  };
379
391
  getCommands(): PathCommand[];
380
392
  drawTo(ctx: CanvasRenderingContext2D): this;
381
393
  }
382
394
 
383
395
  declare class SplineCurve extends Curve {
384
- points: Point2D[];
385
- constructor(points?: Point2D[]);
396
+ points: Vector2[];
397
+ constructor(points?: Vector2[]);
386
398
  getDivisions(divisions?: number): number;
387
- getPoint(t: number, output?: Point2D): Point2D;
399
+ getPoint(t: number, output?: Vector2): Vector2;
400
+ transformPoint(cb: (point: Vector2) => void): this;
388
401
  copy(source: SplineCurve): this;
389
402
  }
390
403
 
404
+ declare function parseSvgToDom(svg: string | SVGElement): SVGElement;
391
405
  declare function parseSvg(svg: string | SVGElement): Path2D[];
392
406
 
393
- export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, Point2D, QuadraticBezierCurve, RectangularCurve, SplineCurve, parseSvg };
407
+ export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, Vector2, type VectorLike, parseSvg, parseSvgToDom };