modern-canvas 0.4.16 → 0.4.17

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.cjs CHANGED
@@ -1295,6 +1295,7 @@ class Matrix extends EventEmitter {
1295
1295
  }
1296
1296
  }
1297
1297
  _array = [];
1298
+ dirtyId = 0;
1298
1299
  get length() {
1299
1300
  return this.cols * this.rows;
1300
1301
  }
@@ -1399,6 +1400,7 @@ class Matrix extends EventEmitter {
1399
1400
  return this._operate("*", value, output);
1400
1401
  }
1401
1402
  _onUpdate(_array) {
1403
+ this.dirtyId++;
1402
1404
  }
1403
1405
  toArray(transpose = false) {
1404
1406
  const { cols, rows, _array: array } = this;
@@ -1980,150 +1982,90 @@ class Rect2 {
1980
1982
  }
1981
1983
 
1982
1984
  class Transform2D extends Matrix3 {
1983
- constructor(autoUpdate = true) {
1984
- super();
1985
- this.autoUpdate = autoUpdate;
1986
- }
1987
- _cx = 1;
1988
- _sx = 0;
1989
- _cy = 0;
1990
- _sy = 1;
1991
- _translateX = 0;
1992
- _translateY = 0;
1993
- _translateZ = 1;
1994
- _scaleX = 1;
1995
- _scaleY = 1;
1996
- _skewX = 0;
1997
- _skewY = 0;
1998
- _rotate = 0;
1999
- dirtyId = 0;
2000
- _needsUpdateArray = false;
2001
- _needsUpdateFields = false;
2002
- _onUpdate(array) {
2003
- super._onUpdate(array);
2004
- this._requestUpdateFields();
2005
- }
2006
- _updateSkew() {
2007
- this._cx = Math.cos(this._rotate + this._skewY);
2008
- this._sx = Math.sin(this._rotate + this._skewY);
2009
- this._cy = -Math.sin(this._rotate - this._skewX);
2010
- this._sy = Math.cos(this._rotate - this._skewX);
2011
- }
2012
- _requestUpdateArray() {
2013
- if (this.autoUpdate) {
2014
- this._performUpdateArray();
2015
- } else {
2016
- this._needsUpdateArray = true;
2017
- }
2018
- }
2019
- _requestUpdateFields() {
2020
- if (this.autoUpdate) {
2021
- this._performUpdateFields();
2022
- } else {
2023
- this._needsUpdateFields = true;
2024
- }
2025
- }
2026
- _performUpdateArray() {
2027
- const a = this._cx * this._scaleX;
2028
- const b = this._sx * this._scaleX;
2029
- const c = this._cy * this._scaleY;
2030
- const d = this._sy * this._scaleY;
2031
- const tx = this._translateX;
2032
- const ty = this._translateY;
2033
- const tz = this._translateZ;
2034
- const array = this._array;
2035
- this._array = [
2036
- a,
2037
- c,
2038
- tx,
2039
- b,
2040
- d,
2041
- ty,
2042
- array[6],
2043
- array[7],
2044
- tz
2045
- ];
2046
- this.dirtyId++;
2047
- }
2048
- _performUpdateFields() {
2049
- const {
2050
- a,
2051
- c,
2052
- tx,
2053
- b,
2054
- d,
2055
- ty,
2056
- tz
2057
- } = this.toObject();
2058
- const skewX = -Math.atan2(-c, d);
2059
- const skewY = Math.atan2(b, a);
2060
- const delta = Math.abs(skewX + skewY);
2061
- if (delta < 1e-5 || Math.abs(PI_2 - delta) < 1e-5) {
2062
- this._rotate = skewY;
2063
- this._skewX = this._skewY = 0;
2064
- } else {
2065
- this._rotate = 0;
2066
- this._skewX = skewX;
2067
- this._skewY = skewY;
2068
- }
2069
- this._scaleX = Math.sqrt(a * a + b * b);
2070
- this._scaleY = Math.sqrt(c * c + d * d);
2071
- this._translateX = tx;
2072
- this._translateY = ty;
2073
- this._translateZ = tz;
2074
- this.dirtyId++;
2075
- }
2076
- skew(x, y) {
2077
- this._skewX = x;
2078
- this._skewY = y;
2079
- this._updateSkew();
2080
- this._requestUpdateArray();
2081
- return this;
1985
+ static _t2d = /* @__PURE__ */ new Transform2D();
1986
+ premultiply(t2d) {
1987
+ return t2d.multiply(this, this);
2082
1988
  }
2083
1989
  skewX(x) {
2084
- return this.skew(x, this._skewY);
1990
+ return this.skew(x, 1);
2085
1991
  }
2086
1992
  skewY(y) {
2087
- return this.skew(this._skewX, y);
1993
+ return this.skew(1, y);
2088
1994
  }
2089
- translate(x, y, z = 1) {
2090
- this._translateX = x;
2091
- this._translateY = y;
2092
- this._translateZ = z;
2093
- this._requestUpdateArray();
1995
+ skew(x, y) {
1996
+ return this.premultiply(Transform2D._t2d.makeSkew(x, y));
1997
+ }
1998
+ makeSkew(x, y) {
1999
+ const cx = Math.cos(y);
2000
+ const sx = Math.sin(y);
2001
+ const cy = -Math.sin(-x);
2002
+ const sy = Math.cos(-x);
2003
+ this.set([
2004
+ cx,
2005
+ cy,
2006
+ 0,
2007
+ sx,
2008
+ sy,
2009
+ 0,
2010
+ 0,
2011
+ 0,
2012
+ 1
2013
+ ]);
2094
2014
  return this;
2095
2015
  }
2096
2016
  translateX(x) {
2097
- return this.translate(x, this._translateY);
2017
+ return this.translate(x, 0);
2098
2018
  }
2099
2019
  translateY(y) {
2100
- return this.translate(this._translateX, y);
2020
+ return this.translate(0, y);
2101
2021
  }
2102
2022
  translateZ(z) {
2103
- return this.translate(this._translateX, this._translateY, z);
2023
+ return this.translate(0, 0, z);
2104
2024
  }
2105
2025
  translate3d(x, y, z) {
2106
2026
  return this.translate(x, y, z);
2107
2027
  }
2108
- scale(x, y, _z = 1) {
2109
- this._scaleX = x;
2110
- this._scaleY = y;
2111
- this._requestUpdateArray();
2028
+ translate(x, y, z = 0) {
2029
+ return this.premultiply(Transform2D._t2d.makeTranslation(x, y, z));
2030
+ }
2031
+ makeTranslation(x, y, _z = 0) {
2032
+ this.set([
2033
+ 1,
2034
+ 0,
2035
+ x,
2036
+ 0,
2037
+ 1,
2038
+ y,
2039
+ 0,
2040
+ 0,
2041
+ 1
2042
+ ]);
2112
2043
  return this;
2113
2044
  }
2114
2045
  scaleX(x) {
2115
- return this.scale(x, this._scaleY);
2046
+ return this.scale(x, 1);
2116
2047
  }
2117
2048
  scaleY(y) {
2118
- return this.scale(this._scaleX, y);
2049
+ return this.scale(1, y);
2119
2050
  }
2120
- scale3d(x, y, z) {
2051
+ scale3d(x, y, z = 1) {
2121
2052
  return this.scale(x, y, z);
2122
2053
  }
2123
- rotate(rad) {
2124
- this._rotate = rad;
2125
- this._updateSkew();
2126
- this._requestUpdateArray();
2054
+ scale(x, y, z = 1) {
2055
+ return this.premultiply(Transform2D._t2d.makeScale(x, y, z));
2056
+ }
2057
+ makeScale(x, y, z = 1) {
2058
+ this.set([
2059
+ x,
2060
+ 0,
2061
+ 0,
2062
+ 0,
2063
+ y,
2064
+ 0,
2065
+ 0,
2066
+ 0,
2067
+ z
2068
+ ]);
2127
2069
  return this;
2128
2070
  }
2129
2071
  rotateX(x) {
@@ -2135,6 +2077,9 @@ class Transform2D extends Matrix3 {
2135
2077
  rotateZ(z) {
2136
2078
  return this.rotate(z);
2137
2079
  }
2080
+ rotate(rad) {
2081
+ return this.premultiply(Transform2D._t2d.makeRotation(rad));
2082
+ }
2138
2083
  rotate3d(x, y, z, rad) {
2139
2084
  const [rx, ry, rz] = this._rotate3d(x, y, z, rad);
2140
2085
  rx && this.rotateX(rx);
@@ -2168,6 +2113,22 @@ class Transform2D extends Matrix3 {
2168
2113
  return [rotateX, rotateY, rotateZ];
2169
2114
  }
2170
2115
  }
2116
+ makeRotation(theta) {
2117
+ const c = Math.cos(theta);
2118
+ const s = Math.sin(theta);
2119
+ this.set([
2120
+ c,
2121
+ -s,
2122
+ 0,
2123
+ s,
2124
+ c,
2125
+ 0,
2126
+ 0,
2127
+ 0,
2128
+ 1
2129
+ ]);
2130
+ return this;
2131
+ }
2171
2132
  applyToPoint(x, y) {
2172
2133
  const { a, c, tx, b, d, ty } = this.toObject();
2173
2134
  return [
@@ -2178,20 +2139,6 @@ class Transform2D extends Matrix3 {
2178
2139
  inverse() {
2179
2140
  return this.clone().invert();
2180
2141
  }
2181
- update() {
2182
- let updated = false;
2183
- if (this._needsUpdateArray) {
2184
- this._needsUpdateArray = false;
2185
- this._performUpdateArray();
2186
- updated = true;
2187
- }
2188
- if (this._needsUpdateFields) {
2189
- this._needsUpdateFields = false;
2190
- this._performUpdateFields();
2191
- updated = true;
2192
- }
2193
- return updated;
2194
- }
2195
2142
  isIdentity() {
2196
2143
  const { a, b, c, d, tx, ty } = this.toObject();
2197
2144
  return a === 1 && b === 0 && c === 0 && d === 1 && tx === 0 && ty === 0;
@@ -4389,58 +4336,56 @@ function parseCSSFilter(filter) {
4389
4336
  return m;
4390
4337
  }
4391
4338
 
4392
- function parseCSSTransform(transform, width, height) {
4393
- const t2d = new Transform2D(false);
4339
+ function parseCSSTransform(transform, width, height, output = new Transform2D()) {
4394
4340
  transform = !transform || transform === "none" ? "" : transform;
4395
4341
  parseCssFunctions(transform, { width, height }).forEach(({ name, args }) => {
4396
4342
  const values = args.map((arg) => arg.normalizedIntValue);
4397
- const _temp = new Transform2D();
4398
4343
  switch (name) {
4399
4344
  case "translate":
4400
- _temp.translate(values[0] * width, (values[1] ?? values[0]) * height);
4345
+ output.translate(values[0] * width, (values[1] ?? values[0]) * height);
4401
4346
  break;
4402
4347
  case "translateX":
4403
- _temp.translateX(values[0] * width);
4348
+ output.translateX(values[0] * width);
4404
4349
  break;
4405
4350
  case "translateY":
4406
- _temp.translateY(values[0] * height);
4351
+ output.translateY(values[0] * height);
4407
4352
  break;
4408
4353
  case "translateZ":
4409
- _temp.translateZ(values[0]);
4354
+ output.translateZ(values[0]);
4410
4355
  break;
4411
4356
  case "translate3d":
4412
- _temp.translate3d(
4357
+ output.translate3d(
4413
4358
  values[0] * width,
4414
4359
  (values[1] ?? values[0]) * height,
4415
4360
  values[2] ?? values[1] ?? values[0]
4416
4361
  );
4417
4362
  break;
4418
4363
  case "scale":
4419
- _temp.scale(values[0], values[1] ?? values[0]);
4364
+ output.scale(values[0], values[1] ?? values[0]);
4420
4365
  break;
4421
4366
  case "scaleX":
4422
- _temp.scaleX(values[0]);
4367
+ output.scaleX(values[0]);
4423
4368
  break;
4424
4369
  case "scaleY":
4425
- _temp.scaleY(values[0]);
4370
+ output.scaleY(values[0]);
4426
4371
  break;
4427
4372
  case "scale3d":
4428
- _temp.scale3d(values[0], values[1] ?? values[0], values[2] ?? values[1] ?? values[0]);
4373
+ output.scale3d(values[0], values[1] ?? values[0], values[2] ?? values[1] ?? values[0]);
4429
4374
  break;
4430
4375
  case "rotate":
4431
- _temp.rotate(values[0] * PI_2);
4376
+ output.rotate(values[0] * PI_2);
4432
4377
  break;
4433
4378
  case "rotateX":
4434
- _temp.rotateX(values[0] * PI_2);
4379
+ output.rotateX(values[0] * PI_2);
4435
4380
  break;
4436
4381
  case "rotateY":
4437
- _temp.rotateY(values[0] * PI_2);
4382
+ output.rotateY(values[0] * PI_2);
4438
4383
  break;
4439
4384
  case "rotateZ":
4440
- _temp.rotateZ(values[0] * PI_2);
4385
+ output.rotateZ(values[0] * PI_2);
4441
4386
  break;
4442
4387
  case "rotate3d":
4443
- _temp.rotate3d(
4388
+ output.rotate3d(
4444
4389
  values[0] * PI_2,
4445
4390
  (values[1] ?? values[0]) * PI_2,
4446
4391
  (values[2] ?? values[1] ?? values[0]) * PI_2,
@@ -4448,22 +4393,20 @@ function parseCSSTransform(transform, width, height) {
4448
4393
  );
4449
4394
  break;
4450
4395
  case "skew":
4451
- _temp.skew(values[0], values[0] ?? values[1]);
4396
+ output.skew(values[0], values[0] ?? values[1]);
4452
4397
  break;
4453
4398
  case "skewX":
4454
- _temp.skewX(values[0]);
4399
+ output.skewX(values[0]);
4455
4400
  break;
4456
4401
  case "skewY":
4457
- _temp.skewY(values[0]);
4402
+ output.skewY(values[0]);
4458
4403
  break;
4459
4404
  case "matrix":
4460
- _temp.set(values);
4405
+ output.set(values);
4461
4406
  break;
4462
4407
  }
4463
- t2d.multiply(_temp);
4464
4408
  });
4465
- t2d.update();
4466
- return t2d;
4409
+ return output;
4467
4410
  }
4468
4411
 
4469
4412
  function parseCSSTransformOrigin(transformOrigin) {
@@ -8689,7 +8632,7 @@ exports.Node2D = class Node2D extends exports.CanvasItem {
8689
8632
  rotation = 0;
8690
8633
  scale = new Vector2(1, 1);
8691
8634
  skew = new Vector2();
8692
- transform = new Transform2D(false);
8635
+ transform = new Transform2D();
8693
8636
  globalPosition = new Vector2();
8694
8637
  globalRotation = 0;
8695
8638
  globalScale = new Vector2();
@@ -8701,7 +8644,7 @@ exports.Node2D = class Node2D extends exports.CanvasItem {
8701
8644
  this.setProperties(properties).append(nodes);
8702
8645
  }
8703
8646
  _updateTransform() {
8704
- this.transform.identity().scale(this.scale.x, this.scale.y).skew(this.skew.x, this.skew.y).translate(this.position.x, this.position.y).rotate(this.rotation).update();
8647
+ this.transform.identity().scale(this.scale.x, this.scale.y).skew(this.skew.x, this.skew.y).rotate(this.rotation).translate(this.position.x, this.position.y);
8705
8648
  }
8706
8649
  _updateGlobalTransform() {
8707
8650
  const parent = this.getParent();
@@ -8904,17 +8847,13 @@ exports.BaseElement2D = class BaseElement2D extends exports.Node2D {
8904
8847
  this.requestRedraw();
8905
8848
  }
8906
8849
  _updateTransform() {
8907
- super._updateTransform();
8908
8850
  const { width, height } = this.size;
8909
- const cssTransform = parseCSSTransform(this.style.transform, width, height);
8910
- cssTransform.multiply(this.transform, this.transform);
8911
- const t3dT2dArr = this.transform.toArray();
8912
8851
  const [originX, originY] = parseCSSTransformOrigin(this.style.transformOrigin);
8913
8852
  const offsetX = originX * width;
8914
8853
  const offsetY = originY * height;
8915
- t3dT2dArr[2] += t3dT2dArr[0] * -offsetX + t3dT2dArr[1] * -offsetY + offsetX;
8916
- t3dT2dArr[5] += t3dT2dArr[3] * -offsetX + t3dT2dArr[4] * -offsetY + offsetY;
8917
- this.transform.set(t3dT2dArr);
8854
+ this.transform.identity().translate(-offsetX, -offsetY).scale(this.scale.x, this.scale.y).skew(this.skew.x, this.skew.y).rotate(this.rotation);
8855
+ parseCSSTransform(this.style.transform, width, height, this.transform);
8856
+ this.transform.translate(offsetX + this.position.x, offsetY + this.position.y);
8918
8857
  }
8919
8858
  _updateGlobalTransform() {
8920
8859
  super._updateGlobalTransform();
package/dist/index.d.cts CHANGED
@@ -356,6 +356,7 @@ declare abstract class Matrix extends EventEmitter {
356
356
  readonly rows: number;
357
357
  readonly cols: number;
358
358
  protected _array: number[];
359
+ dirtyId: number;
359
360
  get length(): number;
360
361
  constructor(rows: number, cols: number, array?: number[]);
361
362
  protected _operate(operator: string, target: MatrixLike | Vector, output?: MatrixOperateOutput): any;
@@ -509,51 +510,33 @@ interface Transform2DObject {
509
510
  * | 0 | 0 | 1 |
510
511
  */
511
512
  declare class Transform2D extends Matrix3 {
512
- autoUpdate: boolean;
513
- protected _cx: number;
514
- protected _sx: number;
515
- protected _cy: number;
516
- protected _sy: number;
517
- protected _translateX: number;
518
- protected _translateY: number;
519
- protected _translateZ: number;
520
- protected _scaleX: number;
521
- protected _scaleY: number;
522
- protected _skewX: number;
523
- protected _skewY: number;
524
- protected _rotate: number;
525
- dirtyId: number;
526
- protected _needsUpdateArray: boolean;
527
- protected _needsUpdateFields: boolean;
528
- constructor(autoUpdate?: boolean);
529
- protected _onUpdate(array: number[]): void;
530
- protected _updateSkew(): void;
531
- protected _requestUpdateArray(): void;
532
- protected _requestUpdateFields(): void;
533
- protected _performUpdateArray(): void;
534
- protected _performUpdateFields(): void;
535
- skew(x: number, y: number): this;
513
+ private static _t2d;
514
+ premultiply(t2d: Transform2D): this;
536
515
  skewX(x: number): this;
537
516
  skewY(y: number): this;
538
- translate(x: number, y: number, z?: number): this;
517
+ skew(x: number, y: number): this;
518
+ makeSkew(x: number, y: number): this;
539
519
  translateX(x: number): this;
540
520
  translateY(y: number): this;
541
521
  translateZ(z: number): this;
542
522
  translate3d(x: number, y: number, z: number): this;
543
- scale(x: number, y: number, _z?: number): this;
523
+ translate(x: number, y: number, z?: number): this;
524
+ makeTranslation(x: number, y: number, _z?: number): this;
544
525
  scaleX(x: number): this;
545
526
  scaleY(y: number): this;
546
- scale3d(x: number, y: number, z: number): this;
547
- rotate(rad: number): this;
527
+ scale3d(x: number, y: number, z?: number): this;
528
+ scale(x: number, y: number, z?: number): this;
529
+ makeScale(x: number, y: number, z?: number): this;
548
530
  rotateX(x: number): this;
549
531
  rotateY(y: number): this;
550
532
  rotateZ(z: number): this;
533
+ rotate(rad: number): this;
551
534
  rotate3d(x: number, y: number, z: number, rad: number): this;
552
535
  protected _rotateToScale(rad: number): number;
553
536
  protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
537
+ makeRotation(theta: number): this;
554
538
  applyToPoint(x: number, y: number): number[];
555
539
  inverse(): this;
556
- update(): boolean;
557
540
  isIdentity(): boolean;
558
541
  toObject(): Transform2DObject;
559
542
  }
@@ -2915,7 +2898,7 @@ type CSSFilterKey = 'hue-rotate' | 'saturate' | 'brightness' | 'contrast' | 'inv
2915
2898
  type CSSFilters = Record<CSSFilterKey, number>;
2916
2899
  declare function parseCSSFilter(filter: string): ColorMatrix;
2917
2900
 
2918
- declare function parseCSSTransform(transform: string, width: number, height: number): Transform2D;
2901
+ declare function parseCSSTransform(transform: string, width: number, height: number, output?: Transform2D): Transform2D;
2919
2902
 
2920
2903
  declare function parseCSSTransformOrigin(transformOrigin: string): number[];
2921
2904
 
package/dist/index.d.mts CHANGED
@@ -356,6 +356,7 @@ declare abstract class Matrix extends EventEmitter {
356
356
  readonly rows: number;
357
357
  readonly cols: number;
358
358
  protected _array: number[];
359
+ dirtyId: number;
359
360
  get length(): number;
360
361
  constructor(rows: number, cols: number, array?: number[]);
361
362
  protected _operate(operator: string, target: MatrixLike | Vector, output?: MatrixOperateOutput): any;
@@ -509,51 +510,33 @@ interface Transform2DObject {
509
510
  * | 0 | 0 | 1 |
510
511
  */
511
512
  declare class Transform2D extends Matrix3 {
512
- autoUpdate: boolean;
513
- protected _cx: number;
514
- protected _sx: number;
515
- protected _cy: number;
516
- protected _sy: number;
517
- protected _translateX: number;
518
- protected _translateY: number;
519
- protected _translateZ: number;
520
- protected _scaleX: number;
521
- protected _scaleY: number;
522
- protected _skewX: number;
523
- protected _skewY: number;
524
- protected _rotate: number;
525
- dirtyId: number;
526
- protected _needsUpdateArray: boolean;
527
- protected _needsUpdateFields: boolean;
528
- constructor(autoUpdate?: boolean);
529
- protected _onUpdate(array: number[]): void;
530
- protected _updateSkew(): void;
531
- protected _requestUpdateArray(): void;
532
- protected _requestUpdateFields(): void;
533
- protected _performUpdateArray(): void;
534
- protected _performUpdateFields(): void;
535
- skew(x: number, y: number): this;
513
+ private static _t2d;
514
+ premultiply(t2d: Transform2D): this;
536
515
  skewX(x: number): this;
537
516
  skewY(y: number): this;
538
- translate(x: number, y: number, z?: number): this;
517
+ skew(x: number, y: number): this;
518
+ makeSkew(x: number, y: number): this;
539
519
  translateX(x: number): this;
540
520
  translateY(y: number): this;
541
521
  translateZ(z: number): this;
542
522
  translate3d(x: number, y: number, z: number): this;
543
- scale(x: number, y: number, _z?: number): this;
523
+ translate(x: number, y: number, z?: number): this;
524
+ makeTranslation(x: number, y: number, _z?: number): this;
544
525
  scaleX(x: number): this;
545
526
  scaleY(y: number): this;
546
- scale3d(x: number, y: number, z: number): this;
547
- rotate(rad: number): this;
527
+ scale3d(x: number, y: number, z?: number): this;
528
+ scale(x: number, y: number, z?: number): this;
529
+ makeScale(x: number, y: number, z?: number): this;
548
530
  rotateX(x: number): this;
549
531
  rotateY(y: number): this;
550
532
  rotateZ(z: number): this;
533
+ rotate(rad: number): this;
551
534
  rotate3d(x: number, y: number, z: number, rad: number): this;
552
535
  protected _rotateToScale(rad: number): number;
553
536
  protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
537
+ makeRotation(theta: number): this;
554
538
  applyToPoint(x: number, y: number): number[];
555
539
  inverse(): this;
556
- update(): boolean;
557
540
  isIdentity(): boolean;
558
541
  toObject(): Transform2DObject;
559
542
  }
@@ -2915,7 +2898,7 @@ type CSSFilterKey = 'hue-rotate' | 'saturate' | 'brightness' | 'contrast' | 'inv
2915
2898
  type CSSFilters = Record<CSSFilterKey, number>;
2916
2899
  declare function parseCSSFilter(filter: string): ColorMatrix;
2917
2900
 
2918
- declare function parseCSSTransform(transform: string, width: number, height: number): Transform2D;
2901
+ declare function parseCSSTransform(transform: string, width: number, height: number, output?: Transform2D): Transform2D;
2919
2902
 
2920
2903
  declare function parseCSSTransformOrigin(transformOrigin: string): number[];
2921
2904
 
package/dist/index.d.ts CHANGED
@@ -356,6 +356,7 @@ declare abstract class Matrix extends EventEmitter {
356
356
  readonly rows: number;
357
357
  readonly cols: number;
358
358
  protected _array: number[];
359
+ dirtyId: number;
359
360
  get length(): number;
360
361
  constructor(rows: number, cols: number, array?: number[]);
361
362
  protected _operate(operator: string, target: MatrixLike | Vector, output?: MatrixOperateOutput): any;
@@ -509,51 +510,33 @@ interface Transform2DObject {
509
510
  * | 0 | 0 | 1 |
510
511
  */
511
512
  declare class Transform2D extends Matrix3 {
512
- autoUpdate: boolean;
513
- protected _cx: number;
514
- protected _sx: number;
515
- protected _cy: number;
516
- protected _sy: number;
517
- protected _translateX: number;
518
- protected _translateY: number;
519
- protected _translateZ: number;
520
- protected _scaleX: number;
521
- protected _scaleY: number;
522
- protected _skewX: number;
523
- protected _skewY: number;
524
- protected _rotate: number;
525
- dirtyId: number;
526
- protected _needsUpdateArray: boolean;
527
- protected _needsUpdateFields: boolean;
528
- constructor(autoUpdate?: boolean);
529
- protected _onUpdate(array: number[]): void;
530
- protected _updateSkew(): void;
531
- protected _requestUpdateArray(): void;
532
- protected _requestUpdateFields(): void;
533
- protected _performUpdateArray(): void;
534
- protected _performUpdateFields(): void;
535
- skew(x: number, y: number): this;
513
+ private static _t2d;
514
+ premultiply(t2d: Transform2D): this;
536
515
  skewX(x: number): this;
537
516
  skewY(y: number): this;
538
- translate(x: number, y: number, z?: number): this;
517
+ skew(x: number, y: number): this;
518
+ makeSkew(x: number, y: number): this;
539
519
  translateX(x: number): this;
540
520
  translateY(y: number): this;
541
521
  translateZ(z: number): this;
542
522
  translate3d(x: number, y: number, z: number): this;
543
- scale(x: number, y: number, _z?: number): this;
523
+ translate(x: number, y: number, z?: number): this;
524
+ makeTranslation(x: number, y: number, _z?: number): this;
544
525
  scaleX(x: number): this;
545
526
  scaleY(y: number): this;
546
- scale3d(x: number, y: number, z: number): this;
547
- rotate(rad: number): this;
527
+ scale3d(x: number, y: number, z?: number): this;
528
+ scale(x: number, y: number, z?: number): this;
529
+ makeScale(x: number, y: number, z?: number): this;
548
530
  rotateX(x: number): this;
549
531
  rotateY(y: number): this;
550
532
  rotateZ(z: number): this;
533
+ rotate(rad: number): this;
551
534
  rotate3d(x: number, y: number, z: number, rad: number): this;
552
535
  protected _rotateToScale(rad: number): number;
553
536
  protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
537
+ makeRotation(theta: number): this;
554
538
  applyToPoint(x: number, y: number): number[];
555
539
  inverse(): this;
556
- update(): boolean;
557
540
  isIdentity(): boolean;
558
541
  toObject(): Transform2DObject;
559
542
  }
@@ -2915,7 +2898,7 @@ type CSSFilterKey = 'hue-rotate' | 'saturate' | 'brightness' | 'contrast' | 'inv
2915
2898
  type CSSFilters = Record<CSSFilterKey, number>;
2916
2899
  declare function parseCSSFilter(filter: string): ColorMatrix;
2917
2900
 
2918
- declare function parseCSSTransform(transform: string, width: number, height: number): Transform2D;
2901
+ declare function parseCSSTransform(transform: string, width: number, height: number, output?: Transform2D): Transform2D;
2919
2902
 
2920
2903
  declare function parseCSSTransformOrigin(transformOrigin: string): number[];
2921
2904