modern-path2d 1.4.16 → 1.5.2

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,8 +163,111 @@ 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, ctx?: {
239
+ width?: number;
240
+ height?: number;
241
+ }): this;
242
+ clone(): this;
243
+ toArray(transpose?: boolean, out?: Float32Array<ArrayBuffer>): Float32Array<ArrayBuffer>;
244
+ toString(): string;
245
+ destroy(): void;
246
+ }
247
+
174
248
  declare function catmullRom(t: number, p0: number, p1: number, p2: number, p3: number): number;
175
249
 
250
+ interface CssFunctionArg {
251
+ unit: string | null;
252
+ value: string;
253
+ intValue: number;
254
+ normalizedIntValue: number;
255
+ normalizedDefaultIntValue: number;
256
+ }
257
+ interface CssFunction {
258
+ name: string;
259
+ args: CssFunctionArg[];
260
+ }
261
+ interface ParseCssFunctionContext {
262
+ index?: number;
263
+ fontSize?: number;
264
+ width?: number;
265
+ height?: number;
266
+ }
267
+ declare function parseCssFunctions(propertyValue: string, context?: ParseCssFunctionContext): CssFunction[];
268
+ declare function parseCssArgs(name: string, value: string, context?: ParseCssFunctionContext): CssFunctionArg[];
269
+ declare function parseCssArg(name: string, value: string, context?: ParseCssFunctionContext): CssFunctionArg;
270
+
176
271
  declare function cubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number;
177
272
 
178
273
  interface FillTriangulateOptions {
@@ -196,6 +291,8 @@ declare function getAdaptiveQuadraticBezierCurvePoints(sX: number, sY: number, x
196
291
 
197
292
  declare function getDirectedArea(vertices: number[]): number;
198
293
 
294
+ declare const PI: number;
295
+ declare const PI_2: number;
199
296
  declare function toKebabCase(str: string): string;
200
297
  declare function getIntersectionPoint(p1: Vector2, p2: Vector2, q1: Vector2, q2: Vector2): Vector2;
201
298
 
@@ -239,7 +336,7 @@ declare abstract class Curve {
239
336
  getPointAt(u: number, output?: Vector2): Vector2;
240
337
  isClockwise(): boolean;
241
338
  getControlPointRefs(): Vector2[];
242
- applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
339
+ applyTransform(transform: Transform2D | ((point: Vector2) => void)): this;
243
340
  getUnevenVertices(count?: number, output?: number[]): number[];
244
341
  getSpacedVertices(count?: number, output?: number[]): number[];
245
342
  getAdaptiveVertices(output?: number[]): number[];
@@ -256,7 +353,7 @@ declare abstract class Curve {
256
353
  getTangentAt(u: number, output?: Vector2): Vector2;
257
354
  getNormal(t: number, output?: Vector2): Vector2;
258
355
  getNormalAt(u: number, output?: Vector2): Vector2;
259
- getTForPoint(target: VectorLike, epsilon?: number): number;
356
+ getTForPoint(target: Vector2Like, epsilon?: number): number;
260
357
  getMinMax(min?: Vector2, max?: Vector2): {
261
358
  min: Vector2;
262
359
  max: Vector2;
@@ -268,7 +365,7 @@ declare abstract class Curve {
268
365
  toCommands(): Path2DCommand[];
269
366
  toData(): Path2DData;
270
367
  drawTo(ctx: CanvasRenderingContext2D): this;
271
- copy(source: Curve): this;
368
+ copyFrom(source: Curve): this;
272
369
  clone(): this;
273
370
  }
274
371
 
@@ -298,12 +395,12 @@ declare class RoundCurve extends Curve {
298
395
  getPoint(t: number, output?: Vector2): Vector2;
299
396
  toCommands(): Path2DCommand[];
300
397
  drawTo(ctx: CanvasRenderingContext2D): this;
301
- applyTransform(matrix: Matrix3): this;
398
+ applyTransform(transform: Transform2D): this;
302
399
  getControlPointRefs(): Vector2[];
303
400
  protected _getAdaptiveVerticesByArc(output?: number[]): number[];
304
401
  protected _getAdaptiveVerticesByCircle(output?: number[]): number[];
305
402
  getAdaptiveVertices(output?: number[]): number[];
306
- copy(source: RoundCurve): this;
403
+ copyFrom(source: RoundCurve): this;
307
404
  }
308
405
 
309
406
  declare class ArcCurve extends RoundCurve {
@@ -325,7 +422,7 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
325
422
  getAdaptiveVertices(output?: number[]): number[];
326
423
  strokeTriangulate(options?: StrokeTriangulateOptions): StrokeTriangulatedResult;
327
424
  getFillVertices(options?: FillTriangulateOptions): number[];
328
- applyTransform(transform: Matrix3 | ((point: Vector2) => void)): this;
425
+ applyTransform(transform: Transform2D | ((point: Vector2) => void)): this;
329
426
  getMinMax(min?: Vector2, max?: Vector2): {
330
427
  min: Vector2;
331
428
  max: Vector2;
@@ -333,7 +430,7 @@ declare class CompositeCurve<T extends Curve = Curve> extends Curve {
333
430
  getBoundingBox(): BoundingBox;
334
431
  toCommands(): Path2DCommand[];
335
432
  drawTo(ctx: CanvasRenderingContext2D): this;
336
- copy(source: CompositeCurve<T>): this;
433
+ copyFrom(source: CompositeCurve<T>): this;
337
434
  }
338
435
 
339
436
  declare class CubicBezierCurve extends Curve {
@@ -353,7 +450,7 @@ declare class CubicBezierCurve extends Curve {
353
450
  };
354
451
  toCommands(): Path2DCommand[];
355
452
  drawTo(ctx: CanvasRenderingContext2D): this;
356
- copy(source: CubicBezierCurve): this;
453
+ copyFrom(source: CubicBezierCurve): this;
357
454
  }
358
455
 
359
456
  declare class EllipseCurve extends RoundCurve {
@@ -379,7 +476,7 @@ declare class LineCurve extends Curve {
379
476
  toCommands(): Path2DCommand[];
380
477
  getFillVertices(options?: FillTriangulateOptions): number[];
381
478
  drawTo(ctx: CanvasRenderingContext2D): this;
382
- copy(source: LineCurve): this;
479
+ copyFrom(source: LineCurve): this;
383
480
  }
384
481
 
385
482
  declare class PloygonCurve extends CompositeCurve<LineCurve> {
@@ -392,7 +489,7 @@ declare class EquilateralPloygonCurve extends PloygonCurve {
392
489
  sideCount: number;
393
490
  constructor(cx?: number, cy?: number, radius?: number, sideCount?: number);
394
491
  update(): this;
395
- copy(source: EquilateralPloygonCurve): this;
492
+ copyFrom(source: EquilateralPloygonCurve): this;
396
493
  }
397
494
 
398
495
  declare class QuadraticBezierCurve extends Curve {
@@ -410,7 +507,7 @@ declare class QuadraticBezierCurve extends Curve {
410
507
  };
411
508
  toCommands(): Path2DCommand[];
412
509
  drawTo(ctx: CanvasRenderingContext2D): this;
413
- copy(source: QuadraticBezierCurve): this;
510
+ copyFrom(source: QuadraticBezierCurve): this;
414
511
  }
415
512
 
416
513
  declare class RectangleCurve extends PloygonCurve {
@@ -422,7 +519,7 @@ declare class RectangleCurve extends PloygonCurve {
422
519
  update(): this;
423
520
  drawTo(ctx: CanvasRenderingContext2D): this;
424
521
  getFillVertices(_options?: FillTriangulateOptions): number[];
425
- copy(source: RectangleCurve): this;
522
+ copyFrom(source: RectangleCurve): this;
426
523
  }
427
524
 
428
525
  declare class RoundRectangleCurve extends RoundCurve {
@@ -434,7 +531,7 @@ declare class RoundRectangleCurve extends RoundCurve {
434
531
  constructor(x?: number, y?: number, width?: number, height?: number, radius?: number);
435
532
  update(): this;
436
533
  drawTo(ctx: CanvasRenderingContext2D): this;
437
- copy(source: RoundRectangleCurve): this;
534
+ copyFrom(source: RoundRectangleCurve): this;
438
535
  }
439
536
 
440
537
  declare class SplineCurve extends Curve {
@@ -442,7 +539,7 @@ declare class SplineCurve extends Curve {
442
539
  constructor(points?: Vector2[]);
443
540
  getPoint(t: number, output?: Vector2): Vector2;
444
541
  getControlPointRefs(): Vector2[];
445
- copy(source: SplineCurve): this;
542
+ copyFrom(source: SplineCurve): this;
446
543
  }
447
544
 
448
545
  declare class CurvePath extends CompositeCurve {
@@ -458,7 +555,7 @@ declare class CurvePath extends CompositeCurve {
458
555
  getSpacedVertices(count?: number, output?: number[]): number[];
459
556
  getAdaptiveVertices(output?: number[]): number[];
460
557
  getFillVertices(options?: FillTriangulateOptions): number[];
461
- protected _setCurrentPoint(point: VectorLike): this;
558
+ protected _setCurrentPoint(point: Vector2Like): this;
462
559
  protected _connetLineTo(curve: Curve): this;
463
560
  closePath(): this;
464
561
  moveTo(x: number, y: number): this;
@@ -474,7 +571,7 @@ declare class CurvePath extends CompositeCurve {
474
571
  roundRect(x: number, y: number, width: number, height: number, radii: number): this;
475
572
  splineThru(points: Vector2[]): this;
476
573
  drawTo(ctx: CanvasRenderingContext2D): this;
477
- copy(source: CurvePath): this;
574
+ copyFrom(source: CurvePath): this;
478
575
  }
479
576
 
480
577
  /**
@@ -512,9 +609,9 @@ declare class Path2D<T = any> extends CompositeCurve<CurvePath> {
512
609
  addCommands(commands: Path2DCommand[]): this;
513
610
  addData(data: Path2DData): this;
514
611
  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;
612
+ scale(sx: number, sy?: number, target?: Vector2Like): this;
613
+ skew(ax: number, ay?: number, target?: Vector2Like): this;
614
+ rotate(a: number, target?: Vector2Like): this;
518
615
  bold(b: number): this;
519
616
  getMinMax(min?: Vector2, max?: Vector2, withStyle?: boolean): {
520
617
  min: Vector2;
@@ -528,7 +625,7 @@ declare class Path2D<T = any> extends CompositeCurve<CurvePath> {
528
625
  toCommands(): Path2DCommand[];
529
626
  toData(): Path2DData;
530
627
  toSvgPathString(): string;
531
- copy(source: Path2D): this;
628
+ copyFrom(source: Path2D): this;
532
629
  }
533
630
 
534
631
  interface TriangulatedResult {
@@ -593,5 +690,5 @@ declare function svgToDom(svg: string | SVGElement): SVGElement;
593
690
 
594
691
  declare function svgToPath2DSet(svg: string | SVGElement): Path2DSet;
595
692
 
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 };
693
+ 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, parseCssArg, parseCssArgs, parseCssFunctions, parsePathDataArgs, quadraticBezier, setCanvasContext, strokeTriangulate, svgPathCommandsAddToPath2D, svgPathCommandsToData, svgPathDataToCommands, svgToDom, svgToPath2DSet, toKebabCase };
694
+ export type { CssFunction, CssFunctionArg, DrawPointOptions, FillRule, FillTriangulateOptions, FillTriangulatedResult, LineCap, LineJoin, LineStyle, ParseCssFunctionContext, Path2DCommand, Path2DData, Path2DDrawStyle, Path2DStyle, StrokeLinecap, StrokeLinejoin, StrokeTriangulateOptions, StrokeTriangulatedResult, TransformableObject, TriangulatedResult, Vector2Like };