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

Side by Side Diff: Source/core/animation/InterpolableValue.h

Issue 926963003: InlinedVisitor: Migrate animation to use inlined tracing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 InterpolableValue_h 5 #ifndef InterpolableValue_h
6 #define InterpolableValue_h 6 #define InterpolableValue_h
7 7
8 #include "core/animation/animatable/AnimatableValue.h" 8 #include "core/animation/animatable/AnimatableValue.h"
9 #include "platform/heap/Handle.h" 9 #include "platform/heap/Handle.h"
10 #include "wtf/OwnPtr.h" 10 #include "wtf/OwnPtr.h"
11 #include "wtf/PassOwnPtr.h" 11 #include "wtf/PassOwnPtr.h"
12 #include "wtf/Vector.h" 12 #include "wtf/Vector.h"
13 13
14 namespace blink { 14 namespace blink {
15 15
16 class InterpolableValue : public NoBaseWillBeGarbageCollected<InterpolableValue> { 16 class InterpolableValue : public NoBaseWillBeGarbageCollected<InterpolableValue> {
17 DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(InterpolableValue); 17 DECLARE_EMPTY_VIRTUAL_DESTRUCTOR_WILL_BE_REMOVED(InterpolableValue);
18 public: 18 public:
19 virtual bool isNumber() const { return false; } 19 virtual bool isNumber() const { return false; }
20 virtual bool isBool() const { return false; } 20 virtual bool isBool() const { return false; }
21 virtual bool isList() const { return false; } 21 virtual bool isList() const { return false; }
22 virtual bool isAnimatableValue() const { return false; } 22 virtual bool isAnimatableValue() const { return false; }
23 23
24 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const = 0; 24 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const = 0;
25 25
26 virtual void trace(Visitor*) { } 26 DEFINE_INLINE_VIRTUAL_TRACE() { }
27 27
28 private: 28 private:
29 virtual void interpolate(const InterpolableValue& to, const double progress, InterpolableValue& result) const = 0; 29 virtual void interpolate(const InterpolableValue& to, const double progress, InterpolableValue& result) const = 0;
30 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst = 0; 30 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst = 0;
31 virtual void multiply(double scalar, InterpolableValue& result) const = 0; 31 virtual void multiply(double scalar, InterpolableValue& result) const = 0;
32 32
33 friend class Interpolation; 33 friend class Interpolation;
34 34
35 // Keep interpolate private, but allow calls within the hierarchy without 35 // Keep interpolate private, but allow calls within the hierarchy without
36 // knowledge of type. 36 // knowledge of type.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 m_values[position] = value; 109 m_values[position] = value;
110 } 110 }
111 const InterpolableValue* get(size_t position) const 111 const InterpolableValue* get(size_t position) const
112 { 112 {
113 ASSERT(position < m_size); 113 ASSERT(position < m_size);
114 return m_values[position].get(); 114 return m_values[position].get();
115 } 115 }
116 size_t length() const { return m_size; } 116 size_t length() const { return m_size; }
117 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const override fin al { return create(*this); } 117 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const override fin al { return create(*this); }
118 118
119 virtual void trace(Visitor*) override; 119 DECLARE_VIRTUAL_TRACE();
120 120
121 private: 121 private:
122 virtual void interpolate(const InterpolableValue& to, const double progress, InterpolableValue& result) const override final; 122 virtual void interpolate(const InterpolableValue& to, const double progress, InterpolableValue& result) const override final;
123 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst override final; 123 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst override final;
124 virtual void multiply(double scalar, InterpolableValue& result) const overri de final; 124 virtual void multiply(double scalar, InterpolableValue& result) const overri de final;
125 explicit InterpolableList(size_t size) 125 explicit InterpolableList(size_t size)
126 : m_size(size) 126 : m_size(size)
127 , m_values(m_size) 127 , m_values(m_size)
128 { 128 {
129 } 129 }
(...skipping 15 matching lines...) Expand all
145 public: 145 public:
146 static PassOwnPtrWillBeRawPtr<InterpolableAnimatableValue> create(PassRefPtr WillBeRawPtr<AnimatableValue> value) 146 static PassOwnPtrWillBeRawPtr<InterpolableAnimatableValue> create(PassRefPtr WillBeRawPtr<AnimatableValue> value)
147 { 147 {
148 return adoptPtrWillBeNoop(new InterpolableAnimatableValue(value)); 148 return adoptPtrWillBeNoop(new InterpolableAnimatableValue(value));
149 } 149 }
150 150
151 virtual bool isAnimatableValue() const override final { return true; } 151 virtual bool isAnimatableValue() const override final { return true; }
152 AnimatableValue* value() const { return m_value.get(); } 152 AnimatableValue* value() const { return m_value.get(); }
153 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const override fin al { return create(m_value); } 153 virtual PassOwnPtrWillBeRawPtr<InterpolableValue> clone() const override fin al { return create(m_value); }
154 154
155 virtual void trace(Visitor*) override; 155 DECLARE_VIRTUAL_TRACE();
156 156
157 private: 157 private:
158 virtual void interpolate(const InterpolableValue &to, const double progress, InterpolableValue& result) const override final; 158 virtual void interpolate(const InterpolableValue &to, const double progress, InterpolableValue& result) const override final;
159 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst override final { ASSERT_NOT_REACHED(); } 159 virtual void add(const InterpolableValue& rhs, InterpolableValue& result) co nst override final { ASSERT_NOT_REACHED(); }
160 virtual void multiply(double scalar, InterpolableValue& result) const overri de final { ASSERT_NOT_REACHED(); } 160 virtual void multiply(double scalar, InterpolableValue& result) const overri de final { ASSERT_NOT_REACHED(); }
161 RefPtrWillBeMember<AnimatableValue> m_value; 161 RefPtrWillBeMember<AnimatableValue> m_value;
162 162
163 InterpolableAnimatableValue(PassRefPtrWillBeRawPtr<AnimatableValue> value) 163 InterpolableAnimatableValue(PassRefPtrWillBeRawPtr<AnimatableValue> value)
164 : m_value(value) 164 : m_value(value)
165 { 165 {
166 } 166 }
167 }; 167 };
168 168
169 DEFINE_TYPE_CASTS(InterpolableNumber, InterpolableValue, value, value->isNumber( ), value.isNumber()); 169 DEFINE_TYPE_CASTS(InterpolableNumber, InterpolableValue, value, value->isNumber( ), value.isNumber());
170 DEFINE_TYPE_CASTS(InterpolableBool, InterpolableValue, value, value->isBool(), v alue.isBool()); 170 DEFINE_TYPE_CASTS(InterpolableBool, InterpolableValue, value, value->isBool(), v alue.isBool());
171 DEFINE_TYPE_CASTS(InterpolableList, InterpolableValue, value, value->isList(), v alue.isList()); 171 DEFINE_TYPE_CASTS(InterpolableList, InterpolableValue, value, value->isList(), v alue.isList());
172 DEFINE_TYPE_CASTS(InterpolableAnimatableValue, InterpolableValue, value, value-> isAnimatableValue(), value.isAnimatableValue()); 172 DEFINE_TYPE_CASTS(InterpolableAnimatableValue, InterpolableValue, value, value-> isAnimatableValue(), value.isAnimatableValue());
173 173
174 } 174 }
175 175
176 #endif 176 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698