Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Unified Diff: third_party/WebKit/Source/core/css/cssom/CSSMatrixComponent.cpp

Issue 2943303002: [CSS Typed OM] Refactor is2D handling in CSSTransformComponents to match new spec (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698