| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/css/cssom/CSSMatrixComponent.h" | 5 #include "core/css/cssom/CSSMatrixComponent.h" |
| 6 | 6 |
| 7 #include <cmath> | |
| 8 #include <memory> | |
| 9 #include "core/css/CSSPrimitiveValue.h" | 7 #include "core/css/CSSPrimitiveValue.h" |
| 10 #include "platform/wtf/MathExtras.h" | 8 #include "platform/wtf/MathExtras.h" |
| 11 | 9 |
| 12 namespace blink { | 10 namespace blink { |
| 13 | 11 |
| 14 CSSMatrixComponent* CSSMatrixComponent::Create(DOMMatrixReadOnly* matrix) { | 12 CSSMatrixComponent* CSSMatrixComponent::Create(DOMMatrixReadOnly* matrix) { |
| 15 return new CSSMatrixComponent(matrix); | 13 return new CSSMatrixComponent(matrix); |
| 16 } | 14 } |
| 17 | 15 |
| 18 CSSFunctionValue* CSSMatrixComponent::ToCSSValue() const { | 16 CSSFunctionValue* CSSMatrixComponent::ToCSSValue() const { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 34 matrix()->m41(), matrix()->m42(), matrix()->m43(), matrix()->m44()}; | 32 matrix()->m41(), matrix()->m42(), matrix()->m43(), matrix()->m44()}; |
| 35 for (double value : values) { | 33 for (double value : values) { |
| 36 result->Append(*CSSPrimitiveValue::Create( | 34 result->Append(*CSSPrimitiveValue::Create( |
| 37 value, CSSPrimitiveValue::UnitType::kNumber)); | 35 value, CSSPrimitiveValue::UnitType::kNumber)); |
| 38 } | 36 } |
| 39 } | 37 } |
| 40 | 38 |
| 41 return result; | 39 return result; |
| 42 } | 40 } |
| 43 | 41 |
| 44 CSSMatrixComponent* CSSMatrixComponent::Perspective(double length) { | |
| 45 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 46 | |
| 47 if (length != 0) | |
| 48 matrix->setM34(-1 / length); | |
| 49 return new CSSMatrixComponent(matrix, kPerspectiveType); | |
| 50 } | |
| 51 | |
| 52 CSSMatrixComponent* CSSMatrixComponent::Rotate(double angle) { | |
| 53 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 54 | |
| 55 matrix->rotateSelf(angle); | |
| 56 return new CSSMatrixComponent(matrix, kRotationType); | |
| 57 } | |
| 58 | |
| 59 CSSMatrixComponent* CSSMatrixComponent::Rotate3d(double angle, | |
| 60 double x, | |
| 61 double y, | |
| 62 double z) { | |
| 63 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 64 | |
| 65 matrix->rotateAxisAngleSelf(x, y, z, angle); | |
| 66 return new CSSMatrixComponent(matrix, kRotation3DType); | |
| 67 } | |
| 68 | |
| 69 CSSMatrixComponent* CSSMatrixComponent::Scale(double x, double y) { | |
| 70 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 71 | |
| 72 matrix->setM11(x); | |
| 73 matrix->setM22(y); | |
| 74 return new CSSMatrixComponent(matrix, kScaleType); | |
| 75 } | |
| 76 | |
| 77 CSSMatrixComponent* CSSMatrixComponent::Scale3d(double x, double y, double z) { | |
| 78 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 79 | |
| 80 matrix->setM11(x); | |
| 81 matrix->setM22(y); | |
| 82 matrix->setM33(z); | |
| 83 return new CSSMatrixComponent(matrix, kScale3DType); | |
| 84 } | |
| 85 | |
| 86 CSSMatrixComponent* CSSMatrixComponent::Skew(double ax, double ay) { | |
| 87 double tan_ax = std::tan(deg2rad(ax)); | |
| 88 double tan_ay = std::tan(deg2rad(ay)); | |
| 89 | |
| 90 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 91 | |
| 92 matrix->setM12(tan_ay); | |
| 93 matrix->setM21(tan_ax); | |
| 94 return new CSSMatrixComponent(matrix, kSkewType); | |
| 95 } | |
| 96 | |
| 97 CSSMatrixComponent* CSSMatrixComponent::Translate(double x, double y) { | |
| 98 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 99 | |
| 100 matrix->setM41(x); | |
| 101 matrix->setM42(y); | |
| 102 return new CSSMatrixComponent(matrix, kTranslationType); | |
| 103 } | |
| 104 | |
| 105 CSSMatrixComponent* CSSMatrixComponent::Translate3d(double x, | |
| 106 double y, | |
| 107 double z) { | |
| 108 DOMMatrix* matrix = DOMMatrix::Create(); | |
| 109 | |
| 110 matrix->setM41(x); | |
| 111 matrix->setM42(y); | |
| 112 matrix->setM43(z); | |
| 113 return new CSSMatrixComponent(matrix, kTranslation3DType); | |
| 114 } | |
| 115 | |
| 116 CSSMatrixComponent::CSSMatrixComponent(DOMMatrixReadOnly* matrix) | 42 CSSMatrixComponent::CSSMatrixComponent(DOMMatrixReadOnly* matrix) |
| 117 : CSSTransformComponent() { | 43 : CSSTransformComponent() { |
| 118 matrix_ = DOMMatrix::Create(matrix); | 44 matrix_ = DOMMatrix::Create(matrix); |
| 119 is2d_ = matrix->is2D(); | 45 is2d_ = matrix->is2D(); |
| 120 } | 46 } |
| 121 | 47 |
| 122 CSSMatrixComponent::CSSMatrixComponent(DOMMatrixReadOnly* matrix, | |
| 123 TransformComponentType from_type) | |
| 124 : CSSTransformComponent() { | |
| 125 matrix_ = DOMMatrix::Create(matrix); | |
| 126 is2d_ = Is2DComponentType(from_type); | |
| 127 } | |
| 128 | |
| 129 } // namespace blink | 48 } // namespace blink |
| OLD | NEW |