| Index: third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp b/third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp
|
| index 3ad9133c7d98c592987354d119b05d3299458ed5..952ec18ee128376a76bedb7fa4265bcb7c9ddb17 100644
|
| --- a/third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp
|
| +++ b/third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp
|
| @@ -5,31 +5,57 @@
|
| #include "core/css/cssom/CSSMatrixComponent.h"
|
|
|
| #include "core/css/CSSPrimitiveValue.h"
|
| +#include "core/css/cssom/CSSMatrixComponentOptions.h"
|
| +#include "core/geometry/DOMMatrix.h"
|
| #include "platform/wtf/MathExtras.h"
|
|
|
| namespace blink {
|
|
|
| -CSSMatrixComponent* CSSMatrixComponent::Create(DOMMatrixReadOnly* matrix) {
|
| - return new CSSMatrixComponent(matrix);
|
| +namespace {
|
| +
|
| +DOMMatrix* To2DMatrix(DOMMatrixReadOnly* matrix) {
|
| + DOMMatrix* twoDimensionalMatrix = DOMMatrix::Create();
|
| + twoDimensionalMatrix->setA(matrix->m11());
|
| + twoDimensionalMatrix->setB(matrix->m12());
|
| + twoDimensionalMatrix->setC(matrix->m21());
|
| + twoDimensionalMatrix->setD(matrix->m22());
|
| + twoDimensionalMatrix->setE(matrix->m41());
|
| + twoDimensionalMatrix->setF(matrix->m42());
|
| + return twoDimensionalMatrix;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +CSSMatrixComponent* CSSMatrixComponent::Create(
|
| + DOMMatrixReadOnly* matrix,
|
| + const CSSMatrixComponentOptions& options) {
|
| + return new CSSMatrixComponent(matrix, options.is2D() || matrix->is2D());
|
| +}
|
| +
|
| +DOMMatrix* CSSMatrixComponent::AsMatrix() const {
|
| + if (is2D() && !matrix_->is2D())
|
| + return To2DMatrix(matrix_);
|
| +
|
| + return matrix_.Get();
|
| }
|
|
|
| CSSFunctionValue* CSSMatrixComponent::ToCSSValue() const {
|
| CSSFunctionValue* result =
|
| - CSSFunctionValue::Create(is2d_ ? CSSValueMatrix : CSSValueMatrix3d);
|
| + CSSFunctionValue::Create(is2D() ? CSSValueMatrix : CSSValueMatrix3d);
|
|
|
| - if (is2d_) {
|
| - double values[6] = {matrix()->a(), matrix()->b(), matrix()->c(),
|
| - matrix()->d(), matrix()->e(), matrix()->f()};
|
| + if (is2D()) {
|
| + double values[6] = {matrix_->a(), matrix_->b(), matrix_->c(),
|
| + matrix_->d(), matrix_->e(), matrix_->f()};
|
| for (double value : values) {
|
| result->Append(*CSSPrimitiveValue::Create(
|
| value, CSSPrimitiveValue::UnitType::kNumber));
|
| }
|
| } else {
|
| double values[16] = {
|
| - matrix()->m11(), matrix()->m12(), matrix()->m13(), matrix()->m14(),
|
| - matrix()->m21(), matrix()->m22(), matrix()->m23(), matrix()->m24(),
|
| - matrix()->m31(), matrix()->m32(), matrix()->m33(), matrix()->m34(),
|
| - matrix()->m41(), matrix()->m42(), matrix()->m43(), matrix()->m44()};
|
| + matrix_->m11(), matrix_->m12(), matrix_->m13(), matrix_->m14(),
|
| + matrix_->m21(), matrix_->m22(), matrix_->m23(), matrix_->m24(),
|
| + matrix_->m31(), matrix_->m32(), matrix_->m33(), matrix_->m34(),
|
| + matrix_->m41(), matrix_->m42(), matrix_->m43(), matrix_->m44()};
|
| for (double value : values) {
|
| result->Append(*CSSPrimitiveValue::Create(
|
| value, CSSPrimitiveValue::UnitType::kNumber));
|
| @@ -39,10 +65,4 @@ CSSFunctionValue* CSSMatrixComponent::ToCSSValue() const {
|
| return result;
|
| }
|
|
|
| -CSSMatrixComponent::CSSMatrixComponent(DOMMatrixReadOnly* matrix)
|
| - : CSSTransformComponent() {
|
| - matrix_ = DOMMatrix::Create(matrix);
|
| - is2d_ = matrix->is2D();
|
| -}
|
| -
|
| } // namespace blink
|
|
|