Index: third_party/WebKit/Source/core/css/cssom/MatrixTransformComponent.cpp |
diff --git a/third_party/WebKit/Source/core/css/cssom/MatrixTransformComponent.cpp b/third_party/WebKit/Source/core/css/cssom/MatrixTransformComponent.cpp |
index 2c60e76e2b9db513ad928c275de8c85e71931873..b7295f8cf5f8cfda6620e890df4192f31b4783df 100644 |
--- a/third_party/WebKit/Source/core/css/cssom/MatrixTransformComponent.cpp |
+++ b/third_party/WebKit/Source/core/css/cssom/MatrixTransformComponent.cpp |
@@ -6,6 +6,8 @@ |
#include "core/css/CSSPrimitiveValue.h" |
#include "core/css/CSSValuePool.h" |
+#include "wtf/MathExtras.h" |
+#include <cmath> |
namespace blink { |
@@ -29,4 +31,71 @@ PassRefPtrWillBeRawPtr<CSSFunctionValue> MatrixTransformComponent::toCSSValue() |
return result.release(); |
} |
+MatrixTransformComponent* MatrixTransformComponent::perspective(double length) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ if (length != 0) |
+ matrix->setM34(-1 / length); |
+ return new MatrixTransformComponent(matrix.release(), PerspectiveType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::rotate(double angle) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->rotate(angle); |
+ return new MatrixTransformComponent(matrix.release(), RotationType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::rotate3d(double angle, double x, double y, double z) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->rotate3d(x, y, z, angle); |
+ return new MatrixTransformComponent(matrix.release(), Rotation3DType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::scale(double x, double y) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->setM11(x); |
+ matrix->setM22(y); |
+ return new MatrixTransformComponent(matrix.release(), ScaleType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::scale3d(double x, double y, double z) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->setM11(x); |
+ matrix->setM22(y); |
+ matrix->setM33(z); |
+ return new MatrixTransformComponent(matrix.release(), Scale3DType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::skew(double ax, double ay) |
+{ |
+ double tanAx = std::tan(deg2rad(ax)); |
+ double tanAy = std::tan(deg2rad(ay)); |
+ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->setM12(tanAy); |
+ matrix->setM21(tanAx); |
+ return new MatrixTransformComponent(matrix.release(), SkewType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::translate(double x, double y) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->setM41(x); |
+ matrix->setM42(y); |
+ return new MatrixTransformComponent(matrix.release(), TranslateType); |
+} |
+ |
+MatrixTransformComponent* MatrixTransformComponent::translate3d(double x, double y, double z) |
+{ |
+ OwnPtr<TransformationMatrix> matrix = TransformationMatrix::create(); |
+ matrix->setM41(x); |
+ matrix->setM42(y); |
+ matrix->setM43(z); |
+ return new MatrixTransformComponent(matrix.release(), Translate3DType); |
+} |
+ |
} // namespace blink |