Index: Source/core/dom/DOMMatrix.cpp |
diff --git a/Source/core/dom/DOMMatrix.cpp b/Source/core/dom/DOMMatrix.cpp |
index 38e20ac40d0582b01f05ec5f3edcdcdaca1adf4d..75cefcb63fe9bf945653424bb609bba356e300b0 100644 |
--- a/Source/core/dom/DOMMatrix.cpp |
+++ b/Source/core/dom/DOMMatrix.cpp |
@@ -45,4 +45,39 @@ DOMMatrix* DOMMatrix::translateSelf(double tx, double ty, double tz) |
return this; |
} |
+DOMMatrix* DOMMatrix::scaleSelf(double scale, double ox, double oy) |
+{ |
+ return scaleNonUniformSelf(scale, scale, 1, ox, oy); |
+} |
+ |
+DOMMatrix* DOMMatrix::scale3dSelf(double scale, double ox, double oy, double oz) |
+{ |
+ return scaleNonUniformSelf(scale, scale, scale, ox, oy, oz); |
+} |
+ |
+DOMMatrix* DOMMatrix::scaleNonUniformSelf(double sx, double sy, double sz, |
+ double ox, double oy, double oz) |
+{ |
+ if (sz != 1 || oz) |
+ m_is2D = false; |
+ |
+ if (sx == 1 && sy == 1 && sz == 1) |
+ return this; |
+ |
+ bool hasTranslation = (ox || oy || oz); |
+ |
+ if (hasTranslation) |
+ translateSelf(ox, oy, oz); |
+ |
+ if (m_is2D) |
+ m_matrix.scaleNonUniform(sx, sy); |
+ else |
+ m_matrix.scale3d(sx, sy, sz); |
+ |
+ if (hasTranslation) |
+ translateSelf(-ox, -oy, -oz); |
+ |
+ return this; |
+} |
+ |
} // namespace blink |