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 #ifndef CSSMatrixComponent_h | 5 #ifndef CSSMatrixComponent_h |
6 #define CSSMatrixComponent_h | 6 #define CSSMatrixComponent_h |
7 | 7 |
8 #include "core/css/cssom/CSSTransformComponent.h" | 8 #include "core/css/cssom/CSSTransformComponent.h" |
9 #include "core/geometry/DOMMatrix.h" | 9 #include "core/geometry/DOMMatrix.h" |
| 10 #include "core/geometry/DOMMatrixReadOnly.h" |
10 | 11 |
11 namespace blink { | 12 namespace blink { |
12 | 13 |
13 class DOMMatrix; | 14 class CSSMatrixComponentOptions; |
14 | 15 |
15 // Represents a matrix value in a CSSTransformValue used for properties like | 16 // Represents a matrix value in a CSSTransformValue used for properties like |
16 // "transform". | 17 // "transform". |
17 // See CSSMatrixComponent.idl for more information about this class. | 18 // See CSSMatrixComponent.idl for more information about this class. |
18 class CORE_EXPORT CSSMatrixComponent final : public CSSTransformComponent { | 19 class CORE_EXPORT CSSMatrixComponent final : public CSSTransformComponent { |
19 WTF_MAKE_NONCOPYABLE(CSSMatrixComponent); | 20 WTF_MAKE_NONCOPYABLE(CSSMatrixComponent); |
20 DEFINE_WRAPPERTYPEINFO(); | 21 DEFINE_WRAPPERTYPEINFO(); |
21 | 22 |
22 public: | 23 public: |
23 // Constructor defined in the IDL. | 24 // Constructors defined in the IDL. |
24 static CSSMatrixComponent* Create(DOMMatrixReadOnly*); | 25 static CSSMatrixComponent* Create(DOMMatrixReadOnly*, |
| 26 const CSSMatrixComponentOptions&); |
25 | 27 |
26 // Blink-internal ways of creating CSSMatrixComponents. | 28 // Blink-internal ways of creating CSSMatrixComponents. |
27 static CSSMatrixComponent* FromCSSValue(const CSSFunctionValue& value) { | 29 static CSSMatrixComponent* FromCSSValue(const CSSFunctionValue& value) { |
| 30 // TODO(meade): Implement. |
28 return nullptr; | 31 return nullptr; |
29 } | 32 } |
30 | 33 |
31 // Getters and setters for attributes defined in the IDL. | 34 // Getters and setters for attributes defined in the IDL. |
32 DOMMatrix* matrix() const { return matrix_; } | 35 DOMMatrix* matrix() { return matrix_.Get(); } |
33 void setMatrix(DOMMatrix* matrix) { matrix_ = matrix; } | 36 void setMatrix(DOMMatrix* matrix) { matrix_ = matrix; } |
34 | 37 |
35 // Internal methods - from CSSTransformComponent. | 38 // Internal methods - from CSSTransformComponent. |
36 TransformComponentType GetType() const override { | 39 TransformComponentType GetType() const final { return kMatrixType; } |
37 return is2d_ ? kMatrixType : kMatrix3DType; | 40 DOMMatrix* AsMatrix() const final; |
38 } | 41 CSSFunctionValue* ToCSSValue() const final; |
39 DOMMatrix* AsMatrix() const override { return matrix(); } | |
40 CSSFunctionValue* ToCSSValue() const override; | |
41 | 42 |
42 DEFINE_INLINE_VIRTUAL_TRACE() { | 43 DEFINE_INLINE_VIRTUAL_TRACE() { |
43 visitor->Trace(matrix_); | 44 visitor->Trace(matrix_); |
44 CSSTransformComponent::Trace(visitor); | 45 CSSTransformComponent::Trace(visitor); |
45 } | 46 } |
46 | 47 |
47 private: | 48 private: |
48 CSSMatrixComponent(DOMMatrixReadOnly*); | 49 CSSMatrixComponent(DOMMatrixReadOnly* matrix, bool is2D) |
| 50 : CSSTransformComponent(is2D), matrix_(DOMMatrix::Create(matrix)) {} |
49 | 51 |
50 Member<DOMMatrix> matrix_; | 52 Member<DOMMatrix> matrix_; |
51 bool is2d_; | |
52 }; | 53 }; |
53 | 54 |
54 } // namespace blink | 55 } // namespace blink |
55 | 56 |
56 #endif | 57 #endif |
OLD | NEW |