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

Side by Side Diff: third_party/WebKit/Source/core/css/cssom/CSSRotation.h

Issue 2867883003: [CSS Typed OM] Delete obsolete number and length classes from Typed OM (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 unified diff | Download patch
OLDNEW
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 CSSRotation_h 5 #ifndef CSSRotation_h
6 #define CSSRotation_h 6 #define CSSRotation_h
7 7
8 #include "core/css/cssom/CSSAngleValue.h"
9 #include "core/css/cssom/CSSMatrixComponent.h" 8 #include "core/css/cssom/CSSMatrixComponent.h"
9 #include "core/css/cssom/CSSNumericValue.h"
10 #include "core/css/cssom/CSSTransformComponent.h" 10 #include "core/css/cssom/CSSTransformComponent.h"
11 11
12 namespace blink { 12 namespace blink {
13 13
14 class CORE_EXPORT CSSRotation final : public CSSTransformComponent { 14 class CORE_EXPORT CSSRotation final : public CSSTransformComponent {
15 WTF_MAKE_NONCOPYABLE(CSSRotation); 15 WTF_MAKE_NONCOPYABLE(CSSRotation);
16 DEFINE_WRAPPERTYPEINFO(); 16 DEFINE_WRAPPERTYPEINFO();
17 17
18 public: 18 public:
19 static CSSRotation* Create(const CSSAngleValue* angle_value) { 19 static CSSRotation* Create(const CSSNumericValue* angle_value) {
20 return new CSSRotation(angle_value); 20 return new CSSRotation(angle_value);
21 } 21 }
22 22
23 static CSSRotation* Create(double x, 23 static CSSRotation* Create(double x,
24 double y, 24 double y,
25 double z, 25 double z,
26 const CSSAngleValue* angle_value) { 26 const CSSNumericValue* angle_value) {
27 return new CSSRotation(x, y, z, angle_value); 27 return new CSSRotation(x, y, z, angle_value);
28 } 28 }
29 29
30 static CSSRotation* FromCSSValue(const CSSFunctionValue&); 30 static CSSRotation* FromCSSValue(const CSSFunctionValue&);
31 31
32 // Bindings requires returning non-const pointers. This is safe because 32 // Bindings requires returning non-const pointers. This is safe because
33 // CSSAngleValues are immutable. 33 // CSSNumericValues are immutable.
34 CSSAngleValue* angle() const { 34 CSSNumericValue* angle() const {
35 return const_cast<CSSAngleValue*>(angle_.Get()); 35 return const_cast<CSSNumericValue*>(angle_.Get());
36 } 36 }
37 double x() const { return x_; } 37 double x() const { return x_; }
38 double y() const { return y_; } 38 double y() const { return y_; }
39 double z() const { return z_; } 39 double z() const { return z_; }
40 40
41 TransformComponentType GetType() const override { 41 TransformComponentType GetType() const override {
42 return is2d_ ? kRotationType : kRotation3DType; 42 return is2d_ ? kRotationType : kRotation3DType;
43 } 43 }
44 44
45 CSSMatrixComponent* asMatrix() const override { 45 CSSMatrixComponent* asMatrix() const override {
46 return is2d_ ? CSSMatrixComponent::Rotate(angle_->degrees()) 46 return nullptr;
47 : CSSMatrixComponent::Rotate3d(angle_->degrees(), x_, y_, z_); 47 // TODO(meade): Implement.
48 // return is2d_
49 // ? CSSMatrixComponent::Rotate(
50 // angle_->to(CSSPrimitiveValue::UnitType::kDegrees)->value())
51 // : CSSMatrixComponent::Rotate3d(
52 // angle_->to(CSSPrimitiveValue::UnitType::kDegrees)->value(),
53 // x_, y_, z_);
48 } 54 }
49 55
50 CSSFunctionValue* ToCSSValue() const override; 56 CSSFunctionValue* ToCSSValue() const override;
51 57
52 DEFINE_INLINE_VIRTUAL_TRACE() { 58 DEFINE_INLINE_VIRTUAL_TRACE() {
53 visitor->Trace(angle_); 59 visitor->Trace(angle_);
54 CSSTransformComponent::Trace(visitor); 60 CSSTransformComponent::Trace(visitor);
55 } 61 }
56 62
57 private: 63 private:
58 CSSRotation(const CSSAngleValue* angle) 64 CSSRotation(const CSSNumericValue* angle)
59 : angle_(angle), x_(0), y_(0), z_(1), is2d_(true) {} 65 : angle_(angle), x_(0), y_(0), z_(1), is2d_(true) {}
60 66
61 CSSRotation(double x, double y, double z, const CSSAngleValue* angle) 67 CSSRotation(double x, double y, double z, const CSSNumericValue* angle)
62 : angle_(angle), x_(x), y_(y), z_(z), is2d_(false) {} 68 : angle_(angle), x_(x), y_(y), z_(z), is2d_(false) {}
63 69
64 Member<const CSSAngleValue> angle_; 70 Member<const CSSNumericValue> angle_;
65 double x_; 71 double x_;
66 double y_; 72 double y_;
67 double z_; 73 double z_;
68 bool is2d_; 74 bool is2d_;
69 }; 75 };
70 76
71 } // namespace blink 77 } // namespace blink
72 78
73 #endif 79 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698