fixes #1873 subtract mask transformed fix
diff --git a/player/js/3rd_party/transformation-matrix.js b/player/js/3rd_party/transformation-matrix.js
index 6ce724e..b3936ed 100644
--- a/player/js/3rd_party/transformation-matrix.js
+++ b/player/js/3rd_party/transformation-matrix.js
@@ -262,7 +262,7 @@
return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];
}
- function inversePoint(pt) {
+ function getInverseMatrix() {
var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];
var a = this.props[5]/determinant;
var b = - this.props[1]/determinant;
@@ -270,7 +270,19 @@
var d = this.props[0]/determinant;
var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12])/determinant;
var f = - (this.props[0] * this.props[13] - this.props[1] * this.props[12])/determinant;
- return [pt[0] * a + pt[1] * c + e, pt[0] * b + pt[1] * d + f, 0];
+ var inverseMatrix = new Matrix();
+ inverseMatrix.props[0] = a;
+ inverseMatrix.props[1] = b;
+ inverseMatrix.props[4] = c;
+ inverseMatrix.props[5] = d;
+ inverseMatrix.props[12] = e;
+ inverseMatrix.props[13] = f;
+ return inverseMatrix;
+ }
+
+ function inversePoint(pt) {
+ var inverseMatrix = this.getInverseMatrix();
+ return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0)
}
function inversePoints(pts){
@@ -387,6 +399,7 @@
this.equals = equals;
this.inversePoints = inversePoints;
this.inversePoint = inversePoint;
+ this.getInverseMatrix = getInverseMatrix;
this._t = this.transform;
this.isIdentity = isIdentity;
this._identity = true;
diff --git a/player/js/mask.js b/player/js/mask.js
index 7100a3a..772973d 100644
--- a/player/js/mask.js
+++ b/player/js/mask.js
@@ -149,8 +149,7 @@
}
if(this.masksProperties[i].mode !== 'n'){
if(this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)){
- this.viewData[i].invRect.setAttribute('x', -finalMat.props[12]);
- this.viewData[i].invRect.setAttribute('y', -finalMat.props[13]);
+ this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())
}
if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){
var feMorph = this.storedData[i].expan;