modern-path2d 0.1.7 → 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.mts 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,27 +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
219
  getBoundingBox(): BoundingBox;
216
- /** overrideable */
217
220
  getCommands(): PathCommand[];
218
221
  getData(): string;
219
222
  /** overrideable */
@@ -223,31 +226,32 @@ declare abstract class Curve {
223
226
  }
224
227
 
225
228
  declare class CircleCurve extends Curve {
226
- center: Point2D;
229
+ center: Vector2;
227
230
  radius: number;
228
231
  start: number;
229
232
  end: number;
230
- constructor(center: Point2D, radius: number, start?: number, end?: number);
231
- getPoint(t: number): Point2D;
232
- getTangent(t: number): Point2D;
233
- getNormal(t: number): Point2D;
234
- getMinMax(min?: Point2D, max?: Point2D): {
235
- min: Point2D;
236
- 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;
237
241
  };
238
242
  }
239
243
 
240
244
  declare class CubicBezierCurve extends Curve {
241
- v0: Point2D;
242
- v1: Point2D;
243
- v2: Point2D;
244
- v3: Point2D;
245
- constructor(v0?: Point2D, v1?: Point2D, v2?: Point2D, v3?: Point2D);
246
- getPoint(t: number, output?: Point2D): Point2D;
247
- transform(matrix: Matrix3): this;
248
- getMinMax(min?: Point2D, max?: Point2D): {
249
- min: Point2D;
250
- 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;
251
255
  };
252
256
  getCommands(): PathCommand[];
253
257
  drawTo(ctx: CanvasRenderingContext2D): this;
@@ -255,103 +259,105 @@ declare class CubicBezierCurve extends Curve {
255
259
  }
256
260
 
257
261
  declare class EllipseCurve extends Curve {
258
- x: number;
259
- y: number;
262
+ center: Vector2;
260
263
  radiusX: number;
261
264
  radiusY: number;
262
265
  startAngle: number;
263
266
  endAngle: number;
264
267
  clockwise: boolean;
265
268
  rotation: number;
266
- constructor(x?: number, y?: number, radiusX?: number, radiusY?: number, startAngle?: number, endAngle?: number, clockwise?: boolean, rotation?: number);
267
- 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;
268
271
  getDivisions(divisions?: number): number;
269
272
  getCommands(): PathCommand[];
270
273
  drawTo(ctx: CanvasRenderingContext2D): this;
271
274
  transform(matrix: Matrix3): this;
272
- getMinMax(min?: Point2D, max?: Point2D): {
273
- min: Point2D;
274
- max: Point2D;
275
+ transformPoint(cb: (point: Vector2) => void): this;
276
+ getMinMax(min?: Vector2, max?: Vector2): {
277
+ min: Vector2;
278
+ max: Vector2;
275
279
  };
276
280
  copy(source: EllipseCurve): this;
277
281
  }
278
282
 
279
- declare class HeartCurve extends Curve {
280
- center: Point2D;
281
- size: number;
282
- start: number;
283
- end: number;
284
- curves: Curve[];
285
- pointT: number;
286
- constructor(center: Point2D, size: number, start?: number, end?: number);
287
- getPoint(value: number): Point2D;
288
- getPointAt(value: number): Point2D;
289
- getCurrentLine(value: number): Curve;
290
- getTangent(value: number): Point2D;
291
- getNormal(value: number): Point2D;
292
- transform(matrix: Matrix3): this;
293
- getMinMax(min?: Point2D, max?: Point2D): {
294
- min: Point2D;
295
- 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;
296
297
  };
297
298
  getCommands(): PathCommand[];
298
299
  drawTo(ctx: CanvasRenderingContext2D): this;
300
+ copy(source: LineCurve): this;
299
301
  }
300
302
 
301
- declare class LineCurve extends Curve {
302
- v1: Point2D;
303
- v2: Point2D;
304
- constructor(v1?: Point2D, v2?: Point2D);
305
- getPoint(t: number, output?: Point2D): Point2D;
306
- getPointAt(u: number, output?: Point2D): Point2D;
307
- getTangent(t: number, output?: Point2D): Point2D;
308
- getTangentAt(u: number, output?: Point2D): Point2D;
309
- transform(matrix: Matrix3): this;
310
- getDivisions(): number;
311
- getMinMax(min?: Point2D, max?: Point2D): {
312
- min: Point2D;
313
- 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;
314
321
  };
315
322
  getCommands(): PathCommand[];
316
323
  drawTo(ctx: CanvasRenderingContext2D): this;
317
- copy(source: LineCurve): this;
318
324
  }
319
325
 
320
326
  declare class PloygonCurve extends Curve {
321
- center: Point2D;
327
+ center: Vector2;
322
328
  radius: number;
323
- num: number;
329
+ number: number;
324
330
  start: number;
325
331
  end: number;
326
332
  curves: LineCurve[];
327
- points: Point2D[];
328
- currentLine: LineCurve;
329
- pointK: any;
330
- constructor(center: Point2D, radius?: number, num?: number, start?: number, end?: number);
331
- getPoint(value: number): Point2D;
332
- getPointAt(value: number): Point2D;
333
- getCurrentLine(value: number): LineCurve;
334
- getTangent(value: number): Point2D;
335
- getNormal(value: number): Point2D;
336
- transform(matrix: Matrix3): this;
337
- getMinMax(min?: Point2D, max?: Point2D): {
338
- min: Point2D;
339
- 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;
340
346
  };
341
347
  getCommands(): PathCommand[];
342
348
  drawTo(ctx: CanvasRenderingContext2D): this;
343
349
  }
344
350
 
345
351
  declare class QuadraticBezierCurve extends Curve {
346
- v0: Point2D;
347
- v1: Point2D;
348
- v2: Point2D;
349
- constructor(v0?: Point2D, v1?: Point2D, v2?: Point2D);
350
- getPoint(t: number, output?: Point2D): Point2D;
351
- transform(matrix: Matrix3): this;
352
- getMinMax(min?: Point2D, max?: Point2D): {
353
- min: Point2D;
354
- 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;
355
361
  };
356
362
  getCommands(): PathCommand[];
357
363
  drawTo(ctx: CanvasRenderingContext2D): this;
@@ -359,41 +365,43 @@ declare class QuadraticBezierCurve extends Curve {
359
365
  }
360
366
 
361
367
  declare class RectangularCurve extends Curve {
362
- center: Point2D;
368
+ center: Vector2;
363
369
  rx: number;
364
370
  aspectRatio: number;
365
371
  start: number;
366
372
  end: number;
367
373
  curves: LineCurve[];
368
- pointT: number;
374
+ curveT: number;
369
375
  get x(): number;
370
376
  get y(): number;
371
377
  get width(): number;
372
378
  get height(): number;
373
- constructor(center: Point2D, rx: number, aspectRatio?: number, start?: number, end?: number);
374
- getPoint(t: number): Point2D;
375
- getPointAt(u: number): Point2D;
376
- getCurrentLine(t: number): LineCurve;
377
- getTangent(t: number): Point2D;
378
- getNormal(value: number): Point2D;
379
- transform(matrix: Matrix3): this;
380
- getMinMax(min?: Point2D, max?: Point2D): {
381
- min: Point2D;
382
- 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;
383
390
  };
384
391
  getCommands(): PathCommand[];
385
392
  drawTo(ctx: CanvasRenderingContext2D): this;
386
393
  }
387
394
 
388
395
  declare class SplineCurve extends Curve {
389
- points: Point2D[];
390
- constructor(points?: Point2D[]);
396
+ points: Vector2[];
397
+ constructor(points?: Vector2[]);
391
398
  getDivisions(divisions?: number): number;
392
- getPoint(t: number, output?: Point2D): Point2D;
399
+ getPoint(t: number, output?: Vector2): Vector2;
400
+ transformPoint(cb: (point: Vector2) => void): this;
393
401
  copy(source: SplineCurve): this;
394
402
  }
395
403
 
396
404
  declare function parseSvgToDom(svg: string | SVGElement): SVGElement;
397
405
  declare function parseSvg(svg: string | SVGElement): Path2D[];
398
406
 
399
- export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, Point2D, QuadraticBezierCurve, RectangularCurve, SplineCurve, parseSvg, parseSvgToDom };
407
+ export { BoundingBox, CircleCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, HeartCurve, LineCurve, Matrix3, Path2D, PloygonCurve, QuadraticBezierCurve, RectangularCurve, SplineCurve, Vector2, type VectorLike, parseSvg, parseSvgToDom };