modern-path2d 1.4.16 → 1.5.1

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.ts CHANGED
@@ -90,65 +90,57 @@ interface Path2DStyle extends Path2DDrawStyle {
90
90
 
91
91
  declare function setCanvasContext(ctx: CanvasRenderingContext2D, style: Partial<Path2DStyle>): void;
92
92
 
93
- declare class Matrix3 {
94
- elements: number[];
95
- constructor(n11?: number, n12?: number, n13?: number, n21?: number, n22?: number, n23?: number, n31?: number, n32?: number, n33?: number);
96
- set(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): this;
97
- identity(): this;
98
- copy(m: Matrix3): this;
99
- multiply(m: Matrix3): this;
100
- premultiply(m: Matrix3): this;
101
- multiplyMatrices(a: Matrix3, b: Matrix3): this;
102
- invert(): this;
103
- transpose(): this;
104
- scale(sx: number, sy: number): this;
105
- rotate(theta: number): this;
106
- translate(tx: number, ty: number): this;
107
- makeTranslation(x: number, y: number): this;
108
- makeRotation(theta: number): this;
109
- makeScale(x: number, y: number): this;
110
- fromArray(array: number[], offset?: number): this;
111
- clone(): Matrix3;
112
- }
113
-
114
- interface VectorLike {
93
+ interface Vector2Like {
115
94
  x: number;
116
95
  y: number;
117
96
  }
118
- declare class Vector2 {
119
- x: number;
120
- y: number;
97
+ declare class Vector2 implements Vector2Like {
98
+ protected _x: number;
99
+ protected _y: number;
100
+ protected _onUpdate?: ((vec: Vector2) => void) | undefined;
121
101
  static get MAX(): Vector2;
122
102
  static get MIN(): Vector2;
103
+ static lerp(a: Vector2Like, b: Vector2Like, t: number): Vector2;
104
+ get width(): number;
105
+ set width(val: number);
106
+ get height(): number;
107
+ set height(val: number);
108
+ get left(): number;
109
+ set left(val: number);
110
+ get top(): number;
111
+ set top(val: number);
112
+ get x(): number;
113
+ set x(value: number);
114
+ get y(): number;
115
+ set y(value: number);
116
+ constructor(_x?: number, _y?: number, _onUpdate?: ((vec: Vector2) => void) | undefined);
117
+ set(x?: number, y?: number): this;
118
+ add(p: Vector2Like): this;
119
+ sub(p: Vector2Like): this;
120
+ subVectors(a: Vector2Like, b: Vector2Like): this;
121
+ multiply(x?: number, y?: number): this;
122
+ divide(x?: number, y?: number): this;
123
+ cross(p: Vector2Like): number;
124
+ dot(p: Vector2Like): number;
125
+ rotate(rad: number, origin?: Vector2Like): this;
126
+ getLength(): number;
127
+ getAngle(): number;
128
+ distanceTo(p: Vector2Like): number;
129
+ normalize(): this;
130
+ copyFrom(p: Vector2Like): this;
131
+ copyTo<T extends Vector2>(p: T): T;
132
+ equals(vec: Vector2Like): boolean;
123
133
  get array(): [number, number];
124
- constructor(x?: number, y?: number);
125
134
  finite(): this;
126
- set(x: number, y: number): this;
127
- add(vec: VectorLike): this;
128
- sub(vec: VectorLike): this;
129
- multiply(vec: VectorLike): this;
130
- divide(vec: VectorLike): this;
131
- dot(vec: VectorLike): number;
132
- cross(vec: VectorLike): number;
133
- rotate(a: number, target?: VectorLike): this;
134
- distanceTo(vec: VectorLike): number;
135
- distanceToSquared(vec: VectorLike): number;
136
135
  lengthSquared(): number;
137
136
  length(): number;
138
- scale(sx: number, sy?: number, target?: VectorLike): this;
139
- skew(ax: number, ay?: number, target?: VectorLike): this;
140
- min(...vecs: VectorLike[]): this;
141
- max(...vecs: VectorLike[]): this;
142
- normalize(): this;
143
- addVectors(a: VectorLike, b: VectorLike): this;
144
- subVectors(a: VectorLike, b: VectorLike): this;
145
- multiplyVectors(a: VectorLike, b: VectorLike): this;
146
- divideVectors(a: VectorLike, b: VectorLike): this;
147
- lerpVectors(v1: VectorLike, v2: VectorLike, alpha: number): this;
148
- equals(vec: VectorLike): boolean;
149
- applyMatrix3(m: Matrix3): this;
150
- copy(vec: VectorLike): this;
151
- clone(): Vector2;
137
+ scale(sx: number, sy?: number, origin?: Vector2Like): this;
138
+ skew(ax: number, ay?: number, origin?: Vector2Like): this;
139
+ clampMin(...pList: Vector2Like[]): this;
140
+ clampMax(...pList: Vector2Like[]): this;
141
+ clone(_onUpdate?: (vec: Vector2) => void): Vector2;
142
+ toJSON(): Vector2Like;
143
+ destroy(): void;
152
144
  }
153
145
 
154
146
  declare class BoundingBox {
@@ -171,6 +163,88 @@ declare class BoundingBox {
171
163
  clone(): BoundingBox;
172
164
  }
173
165
 
166
+ interface TransformableObject {
167
+ position: {
168
+ x: number;
169
+ y: number;
170
+ };
171
+ scale: {
172
+ x: number;
173
+ y: number;
174
+ };
175
+ skew: {
176
+ x: number;
177
+ y: number;
178
+ };
179
+ rotation: number;
180
+ }
181
+ /**
182
+ * Transform
183
+ *
184
+ * | a | c | tx|
185
+ * | b | d | ty|
186
+ * | 0 | 0 | 1 |
187
+ */
188
+ declare class Transform2D {
189
+ a: number;
190
+ b: number;
191
+ c: number;
192
+ d: number;
193
+ tx: number;
194
+ ty: number;
195
+ protected _array?: Float32Array<ArrayBuffer>;
196
+ constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number);
197
+ set(a: number, b: number, c: number, d: number, tx: number, ty: number): this;
198
+ append(t2d: Transform2D): this;
199
+ appendFrom(a: Transform2D, b: Transform2D): this;
200
+ setTransform(x: number, y: number, pivotX: number, pivotY: number, scaleX: number, scaleY: number, rotation: number, skewX: number, skewY: number): this;
201
+ prepend(t2d: Transform2D): this;
202
+ protected _skewX?: number;
203
+ protected _skewY?: number;
204
+ protected _skewXTan: number;
205
+ protected _skewYTan: number;
206
+ skewX(x: number): this;
207
+ skewY(y: number): this;
208
+ skew(x: number, y: number): this;
209
+ translateX(x: number): this;
210
+ translateY(y: number): this;
211
+ translateZ(z: number): this;
212
+ translate3d(x: number, y: number, z: number): this;
213
+ translate(x: number, y: number, _z?: number): this;
214
+ scaleX(x: number): this;
215
+ scaleY(y: number): this;
216
+ scale3d(x: number, y: number, z?: number): this;
217
+ scale(x: number, y: number, _z?: number): this;
218
+ rotateX(x: number): this;
219
+ rotateY(y: number): this;
220
+ rotateZ(z: number): this;
221
+ rotate(angle: number): this;
222
+ rotate3d(x: number, y: number, z: number, rad: number): this;
223
+ protected _rotateToScale(rad: number): number;
224
+ protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
225
+ decompose(pivot?: {
226
+ x: number;
227
+ y: number;
228
+ }, output?: TransformableObject): TransformableObject;
229
+ apply<P extends Vector2Like = Vector2>(pos: Vector2Like, newPos?: P): P;
230
+ affineInvert(): this;
231
+ affineInverse(): this;
232
+ applyAffineInverse<P extends Vector2Like = Vector2>(pos: Vector2Like, newPos?: P): P;
233
+ identity(): this;
234
+ isIdentity(): boolean;
235
+ copyTo(t2d: Transform2D): Transform2D;
236
+ copyFrom(t2d: Transform2D): this;
237
+ equals(t2d: Transform2D): boolean;
238
+ appendCssTransform(cssTransform: string): this;
239
+ clone(): this;
240
+ toArray(transpose?: boolean, out?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
241
+ toString(): string;
242
+ destroy(): void;
243
+ }
244
+
245
+ declare const PI: number;
246
+ declare const PI_2: number;
247
+
174
248
  declare function catmullRom(t: number, p0: number, p1: number, p2: number, p3: number): number;
175
249
 
176
250
  declare function cubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
@@ -239,7 +313,7 @@ declare abstract class Curve {
239
313
  getPointAt(u: number, output?: Vector2): Vector2;
240
314
  isClockwise(): boolean;
241
315
  getControlPointRefs(): Vector2[];
242
- applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
316
+ applyTransform(transform: Transform2D | ((point: Vector2) => void)): this;
243
317
  getUnevenVertices(count?: number, output?: number[]): number[];
244
318
  getSpacedVertices(count?: number, output?: number[]): number[];
245
319
  getAdaptiveVertices(output?: number[]): number[];
@@ -256,7 +330,7 @@ declare abstract class Curve {
256
330
  getTangentAt(u: number, output?: Vector2): Vector2;
257
331
  getNormal(t: number, output?: Vector2): Vector2;
258
332
  getNormalAt(u: number, output?: Vector2): Vector2;
259
- getTForPoint(target: VectorLike, epsilon?: number): number;
333
+ getTForPoint(target: Vector2Like, epsilon?: number): number;
260
334
  getMinMax(min?: Vector2, max?: Vector2): {
261
335
  min: Vector2;
262
336
  max: Vector2;
@@ -268,7 +342,7 @@ declare abstract class Curve {
268
342
  toCommands(): Path2DCommand[];
269
343
  toData(): Path2DData;
270
344
  drawTo(ctx: CanvasRenderingContext2D): this;
271
- copy(source: Curve): this;
345
+ copyFrom(source: Curve): this;
272
346
  clone(): this;
273
347
  }
274
348
 
@@ -298,12 +372,12 @@ declare class RoundCurve extends Curve {
298
372
  getPoint(t: number, output?: Vector2): Vector2;
299
373
  toCommands(): Path2DCommand[];
300
374
  drawTo(ctx: CanvasRenderingContext2D): this;
301
- applyTransform(matrix: Matrix3): this;
375
+ applyTransform(transform: Transform2D): this;
302
376
  getControlPointRefs(): Vector2[];
303
377
  protected _getAdaptiveVerticesByArc(output?: number[]): number[];
304
378
  protected _getAdaptiveVerticesByCircle(output?: number[]): number[];
305
379
  getAdaptiveVertices(output?: number[]): number[];
306
- copy(source: RoundCurve): this;
380
+ copyFrom(source: RoundCurve): this;
307
381
  }
308
382
 
309
383
  declare class ArcCurve extends RoundCurve {
@@ -325,7 +399,7 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
325
399
  getAdaptiveVertices(output?: number[]): number[];
326
400
  strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
327
401
  getFillVertices(options?: FillTriangulateOptions): number[];
328
- applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
402
+ applyTransform(transform: Transform2D | ((point: Vector2) => void)): this;
329
403
  getMinMax(min?: Vector2, max?: Vector2): {
330
404
  min: Vector2;
331
405
  max: Vector2;
@@ -333,7 +407,7 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
333
407
  getBoundingBox(): BoundingBox;
334
408
  toCommands(): Path2DCommand[];
335
409
  drawTo(ctx: CanvasRenderingContext2D): this;
336
- copy(source: CompositeCurve<T>): this;
410
+ copyFrom(source: CompositeCurve<T>): this;
337
411
  }
338
412
 
339
413
  declare class CubicBezierCurve extends Curve {
@@ -353,7 +427,7 @@ declare class CubicBezierCurve extends Curve {
353
427
  };
354
428
  toCommands(): Path2DCommand[];
355
429
  drawTo(ctx: CanvasRenderingContext2D): this;
356
- copy(source: CubicBezierCurve): this;
430
+ copyFrom(source: CubicBezierCurve): this;
357
431
  }
358
432
 
359
433
  declare class EllipseCurve extends RoundCurve {
@@ -379,7 +453,7 @@ declare class LineCurve extends Curve {
379
453
  toCommands(): Path2DCommand[];
380
454
  getFillVertices(options?: FillTriangulateOptions): number[];
381
455
  drawTo(ctx: CanvasRenderingContext2D): this;
382
- copy(source: LineCurve): this;
456
+ copyFrom(source: LineCurve): this;
383
457
  }
384
458
 
385
459
  declare class PloygonCurve extends CompositeCurve<LineCurve> {
@@ -392,7 +466,7 @@ declare class EquilateralPloygonCurve extends PloygonCurve {
392
466
  sideCount: number;
393
467
  constructor(cx?: number, cy?: number, radius?: number, sideCount?: number);
394
468
  update(): this;
395
- copy(source: EquilateralPloygonCurve): this;
469
+ copyFrom(source: EquilateralPloygonCurve): this;
396
470
  }
397
471
 
398
472
  declare class QuadraticBezierCurve extends Curve {
@@ -410,7 +484,7 @@ declare class QuadraticBezierCurve extends Curve {
410
484
  };
411
485
  toCommands(): Path2DCommand[];
412
486
  drawTo(ctx: CanvasRenderingContext2D): this;
413
- copy(source: QuadraticBezierCurve): this;
487
+ copyFrom(source: QuadraticBezierCurve): this;
414
488
  }
415
489
 
416
490
  declare class RectangleCurve extends PloygonCurve {
@@ -422,7 +496,7 @@ declare class RectangleCurve extends PloygonCurve {
422
496
  update(): this;
423
497
  drawTo(ctx: CanvasRenderingContext2D): this;
424
498
  getFillVertices(_options?: FillTriangulateOptions): number[];
425
- copy(source: RectangleCurve): this;
499
+ copyFrom(source: RectangleCurve): this;
426
500
  }
427
501
 
428
502
  declare class RoundRectangleCurve extends RoundCurve {
@@ -434,7 +508,7 @@ declare class RoundRectangleCurve extends RoundCurve {
434
508
  constructor(x?: number, y?: number, width?: number, height?: number, radius?: number);
435
509
  update(): this;
436
510
  drawTo(ctx: CanvasRenderingContext2D): this;
437
- copy(source: RoundRectangleCurve): this;
511
+ copyFrom(source: RoundRectangleCurve): this;
438
512
  }
439
513
 
440
514
  declare class SplineCurve extends Curve {
@@ -442,7 +516,7 @@ declare class SplineCurve extends Curve {
442
516
  constructor(points?: Vector2[]);
443
517
  getPoint(t: number, output?: Vector2): Vector2;
444
518
  getControlPointRefs(): Vector2[];
445
- copy(source: SplineCurve): this;
519
+ copyFrom(source: SplineCurve): this;
446
520
  }
447
521
 
448
522
  declare class CurvePath extends CompositeCurve {
@@ -458,7 +532,7 @@ declare class CurvePath extends CompositeCurve {
458
532
  getSpacedVertices(count?: number, output?: number[]): number[];
459
533
  getAdaptiveVertices(output?: number[]): number[];
460
534
  getFillVertices(options?: FillTriangulateOptions): number[];
461
- protected _setCurrentPoint(point: VectorLike): this;
535
+ protected _setCurrentPoint(point: Vector2Like): this;
462
536
  protected _connetLineTo(curve: Curve): this;
463
537
  closePath(): this;
464
538
  moveTo(x: number, y: number): this;
@@ -474,7 +548,7 @@ declare class CurvePath extends CompositeCurve {
474
548
  roundRect(x: number, y: number, width: number, height: number, radii: number): this;
475
549
  splineThru(points: Vector2[]): this;
476
550
  drawTo(ctx: CanvasRenderingContext2D): this;
477
- copy(source: CurvePath): this;
551
+ copyFrom(source: CurvePath): this;
478
552
  }
479
553
 
480
554
  /**
@@ -512,9 +586,9 @@ declare class Path2D<T = any> extends CompositeCurve<CurvePath> {
512
586
  addCommands(commands: Path2DCommand[]): this;
513
587
  addData(data: Path2DData): this;
514
588
  splineThru(points: Vector2[]): this;
515
- scale(sx: number, sy?: number, target?: VectorLike): this;
516
- skew(ax: number, ay?: number, target?: VectorLike): this;
517
- rotate(a: number, target?: VectorLike): this;
589
+ scale(sx: number, sy?: number, target?: Vector2Like): this;
590
+ skew(ax: number, ay?: number, target?: Vector2Like): this;
591
+ rotate(a: number, target?: Vector2Like): this;
518
592
  bold(b: number): this;
519
593
  getMinMax(min?: Vector2, max?: Vector2, withStyle?: boolean): {
520
594
  min: Vector2;
@@ -528,7 +602,7 @@ declare class Path2D<T = any> extends CompositeCurve<CurvePath> {
528
602
  toCommands(): Path2DCommand[];
529
603
  toData(): Path2DData;
530
604
  toSvgPathString(): string;
531
- copy(source: Path2D): this;
605
+ copyFrom(source: Path2D): this;
532
606
  }
533
607
 
534
608
  interface TriangulatedResult {
@@ -593,5 +667,5 @@ declare function svgToDom(svg: string | SVGElement): SVGElement;
593
667
 
594
668
  declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
595
669
 
596
- 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 };
597
- export type { DrawPointOptions, FillRule, FillTriangulateOptions, FillTriangulatedResult, LineCap, LineJoin, LineStyle, Path2DCommand, Path2DData, Path2DDrawStyle, Path2DStyle, StrokeLinecap, StrokeLinejoin, StrokeTriangulateOptions, StrokeTriangulatedResult, TriangulatedResult, VectorLike };
670
+ export { ArcCurve, BoundingBox, CompositeCurve, CubicBezierCurve, Curve, CurvePath, EllipseCurve, EquilateralPloygonCurve, FFDControlGrid, LineCurve, PI, PI_2, Path2D, Path2DSet, PloygonCurve, QuadraticBezierCurve, RectangleCurve, RoundRectangleCurve, SplineCurve, Transform2D, Vector2, applyFFD, catmullRom, cubicBezier, drawPoint, fillTriangulate, getAdaptiveCubicBezierCurvePoints, getAdaptiveQuadraticBezierCurvePoints, getDirectedArea, getIntersectionPoint, nonzeroFillRule, parseArcCommand, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet, toKebabCase };
671
+ export type { DrawPointOptions, FillRule, FillTriangulateOptions, FillTriangulatedResult, LineCap, LineJoin, LineStyle, Path2DCommand, Path2DData, Path2DDrawStyle, Path2DStyle, StrokeLinecap, StrokeLinejoin, StrokeTriangulateOptions, StrokeTriangulatedResult, TransformableObject, TriangulatedResult, Vector2Like };