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

Side by Side Diff: cc/animation/keyframed_animation_curve.h

Issue 719453007: Make Keyframe use TimeTicks/TimeDelta to represent time instead of double. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « cc/animation/animation_curve.h ('k') | cc/animation/keyframed_animation_curve.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_ 5 #ifndef CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_
6 #define CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_ 6 #define CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_
7 7
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "cc/animation/animation_curve.h" 9 #include "cc/animation/animation_curve.h"
10 #include "cc/animation/timing_function.h" 10 #include "cc/animation/timing_function.h"
11 #include "cc/animation/transform_operations.h" 11 #include "cc/animation/transform_operations.h"
12 #include "cc/base/cc_export.h" 12 #include "cc/base/cc_export.h"
13 #include "cc/base/scoped_ptr_vector.h" 13 #include "cc/base/scoped_ptr_vector.h"
14 14
15 namespace cc { 15 namespace cc {
16 16
17 class CC_EXPORT Keyframe { 17 class CC_EXPORT Keyframe {
18 public: 18 public:
19 double Time() const; 19 base::TimeDelta Time() const;
20 const TimingFunction* timing_function() const { 20 const TimingFunction* timing_function() const {
21 return timing_function_.get(); 21 return timing_function_.get();
22 } 22 }
23 23
24 protected: 24 protected:
25 Keyframe(double time, scoped_ptr<TimingFunction> timing_function); 25 Keyframe(base::TimeDelta time, scoped_ptr<TimingFunction> timing_function);
26 virtual ~Keyframe(); 26 virtual ~Keyframe();
27 27
28 private: 28 private:
29 double time_; 29 base::TimeDelta time_;
30 scoped_ptr<TimingFunction> timing_function_; 30 scoped_ptr<TimingFunction> timing_function_;
31 31
32 DISALLOW_COPY_AND_ASSIGN(Keyframe); 32 DISALLOW_COPY_AND_ASSIGN(Keyframe);
33 }; 33 };
34 34
35 class CC_EXPORT ColorKeyframe : public Keyframe { 35 class CC_EXPORT ColorKeyframe : public Keyframe {
36 public: 36 public:
37 static scoped_ptr<ColorKeyframe> Create( 37 static scoped_ptr<ColorKeyframe> Create(
38 double time, 38 base::TimeDelta time,
39 SkColor value, 39 SkColor value,
40 scoped_ptr<TimingFunction> timing_function); 40 scoped_ptr<TimingFunction> timing_function);
41 ~ColorKeyframe() override; 41 ~ColorKeyframe() override;
42 42
43 SkColor Value() const; 43 SkColor Value() const;
44 44
45 scoped_ptr<ColorKeyframe> Clone() const; 45 scoped_ptr<ColorKeyframe> Clone() const;
46 46
47 private: 47 private:
48 ColorKeyframe(double time, 48 ColorKeyframe(base::TimeDelta time,
49 SkColor value, 49 SkColor value,
50 scoped_ptr<TimingFunction> timing_function); 50 scoped_ptr<TimingFunction> timing_function);
51 51
52 SkColor value_; 52 SkColor value_;
53 }; 53 };
54 54
55 class CC_EXPORT FloatKeyframe : public Keyframe { 55 class CC_EXPORT FloatKeyframe : public Keyframe {
56 public: 56 public:
57 static scoped_ptr<FloatKeyframe> Create( 57 static scoped_ptr<FloatKeyframe> Create(
58 double time, 58 base::TimeDelta time,
59 float value, 59 float value,
60 scoped_ptr<TimingFunction> timing_function); 60 scoped_ptr<TimingFunction> timing_function);
61 ~FloatKeyframe() override; 61 ~FloatKeyframe() override;
62 62
63 float Value() const; 63 float Value() const;
64 64
65 scoped_ptr<FloatKeyframe> Clone() const; 65 scoped_ptr<FloatKeyframe> Clone() const;
66 66
67 private: 67 private:
68 FloatKeyframe(double time, 68 FloatKeyframe(base::TimeDelta time,
69 float value, 69 float value,
70 scoped_ptr<TimingFunction> timing_function); 70 scoped_ptr<TimingFunction> timing_function);
71 71
72 float value_; 72 float value_;
73 }; 73 };
74 74
75 class CC_EXPORT TransformKeyframe : public Keyframe { 75 class CC_EXPORT TransformKeyframe : public Keyframe {
76 public: 76 public:
77 static scoped_ptr<TransformKeyframe> Create( 77 static scoped_ptr<TransformKeyframe> Create(
78 double time, 78 base::TimeDelta time,
79 const TransformOperations& value, 79 const TransformOperations& value,
80 scoped_ptr<TimingFunction> timing_function); 80 scoped_ptr<TimingFunction> timing_function);
81 ~TransformKeyframe() override; 81 ~TransformKeyframe() override;
82 82
83 const TransformOperations& Value() const; 83 const TransformOperations& Value() const;
84 84
85 scoped_ptr<TransformKeyframe> Clone() const; 85 scoped_ptr<TransformKeyframe> Clone() const;
86 86
87 private: 87 private:
88 TransformKeyframe( 88 TransformKeyframe(base::TimeDelta time,
89 double time, 89 const TransformOperations& value,
90 const TransformOperations& value, 90 scoped_ptr<TimingFunction> timing_function);
91 scoped_ptr<TimingFunction> timing_function);
92 91
93 TransformOperations value_; 92 TransformOperations value_;
94 }; 93 };
95 94
96 class CC_EXPORT FilterKeyframe : public Keyframe { 95 class CC_EXPORT FilterKeyframe : public Keyframe {
97 public: 96 public:
98 static scoped_ptr<FilterKeyframe> Create( 97 static scoped_ptr<FilterKeyframe> Create(
99 double time, 98 base::TimeDelta time,
100 const FilterOperations& value, 99 const FilterOperations& value,
101 scoped_ptr<TimingFunction> timing_function); 100 scoped_ptr<TimingFunction> timing_function);
102 ~FilterKeyframe() override; 101 ~FilterKeyframe() override;
103 102
104 const FilterOperations& Value() const; 103 const FilterOperations& Value() const;
105 104
106 scoped_ptr<FilterKeyframe> Clone() const; 105 scoped_ptr<FilterKeyframe> Clone() const;
107 106
108 private: 107 private:
109 FilterKeyframe( 108 FilterKeyframe(base::TimeDelta time,
110 double time, 109 const FilterOperations& value,
111 const FilterOperations& value, 110 scoped_ptr<TimingFunction> timing_function);
112 scoped_ptr<TimingFunction> timing_function);
113 111
114 FilterOperations value_; 112 FilterOperations value_;
115 }; 113 };
116 114
117 class CC_EXPORT KeyframedColorAnimationCurve : public ColorAnimationCurve { 115 class CC_EXPORT KeyframedColorAnimationCurve : public ColorAnimationCurve {
118 public: 116 public:
119 // It is required that the keyframes be sorted by time. 117 // It is required that the keyframes be sorted by time.
120 static scoped_ptr<KeyframedColorAnimationCurve> Create(); 118 static scoped_ptr<KeyframedColorAnimationCurve> Create();
121 119
122 ~KeyframedColorAnimationCurve() override; 120 ~KeyframedColorAnimationCurve() override;
123 121
124 void AddKeyframe(scoped_ptr<ColorKeyframe> keyframe); 122 void AddKeyframe(scoped_ptr<ColorKeyframe> keyframe);
125 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) { 123 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) {
126 timing_function_ = timing_function.Pass(); 124 timing_function_ = timing_function.Pass();
127 } 125 }
128 126
129 // AnimationCurve implementation 127 // AnimationCurve implementation
130 base::TimeDelta Duration() const override; 128 base::TimeDelta Duration() const override;
131 scoped_ptr<AnimationCurve> Clone() const override; 129 scoped_ptr<AnimationCurve> Clone() const override;
132 130
133 // BackgrounColorAnimationCurve implementation 131 // BackgrounColorAnimationCurve implementation
134 SkColor GetValue(double t) const override; 132 SkColor GetValue(base::TimeDelta t) const override;
135 133
136 private: 134 private:
137 KeyframedColorAnimationCurve(); 135 KeyframedColorAnimationCurve();
138 136
139 // Always sorted in order of increasing time. No two keyframes have the 137 // Always sorted in order of increasing time. No two keyframes have the
140 // same time. 138 // same time.
141 ScopedPtrVector<ColorKeyframe> keyframes_; 139 ScopedPtrVector<ColorKeyframe> keyframes_;
142 scoped_ptr<TimingFunction> timing_function_; 140 scoped_ptr<TimingFunction> timing_function_;
143 141
144 DISALLOW_COPY_AND_ASSIGN(KeyframedColorAnimationCurve); 142 DISALLOW_COPY_AND_ASSIGN(KeyframedColorAnimationCurve);
145 }; 143 };
146 144
147 class CC_EXPORT KeyframedFloatAnimationCurve : public FloatAnimationCurve { 145 class CC_EXPORT KeyframedFloatAnimationCurve : public FloatAnimationCurve {
148 public: 146 public:
149 // It is required that the keyframes be sorted by time. 147 // It is required that the keyframes be sorted by time.
150 static scoped_ptr<KeyframedFloatAnimationCurve> Create(); 148 static scoped_ptr<KeyframedFloatAnimationCurve> Create();
151 149
152 ~KeyframedFloatAnimationCurve() override; 150 ~KeyframedFloatAnimationCurve() override;
153 151
154 void AddKeyframe(scoped_ptr<FloatKeyframe> keyframe); 152 void AddKeyframe(scoped_ptr<FloatKeyframe> keyframe);
155 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) { 153 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) {
156 timing_function_ = timing_function.Pass(); 154 timing_function_ = timing_function.Pass();
157 } 155 }
158 156
159 // AnimationCurve implementation 157 // AnimationCurve implementation
160 base::TimeDelta Duration() const override; 158 base::TimeDelta Duration() const override;
161 scoped_ptr<AnimationCurve> Clone() const override; 159 scoped_ptr<AnimationCurve> Clone() const override;
162 160
163 // FloatAnimationCurve implementation 161 // FloatAnimationCurve implementation
164 float GetValue(double t) const override; 162 float GetValue(base::TimeDelta t) const override;
165 163
166 private: 164 private:
167 KeyframedFloatAnimationCurve(); 165 KeyframedFloatAnimationCurve();
168 166
169 // Always sorted in order of increasing time. No two keyframes have the 167 // Always sorted in order of increasing time. No two keyframes have the
170 // same time. 168 // same time.
171 ScopedPtrVector<FloatKeyframe> keyframes_; 169 ScopedPtrVector<FloatKeyframe> keyframes_;
172 scoped_ptr<TimingFunction> timing_function_; 170 scoped_ptr<TimingFunction> timing_function_;
173 171
174 DISALLOW_COPY_AND_ASSIGN(KeyframedFloatAnimationCurve); 172 DISALLOW_COPY_AND_ASSIGN(KeyframedFloatAnimationCurve);
(...skipping 10 matching lines...) Expand all
185 void AddKeyframe(scoped_ptr<TransformKeyframe> keyframe); 183 void AddKeyframe(scoped_ptr<TransformKeyframe> keyframe);
186 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) { 184 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) {
187 timing_function_ = timing_function.Pass(); 185 timing_function_ = timing_function.Pass();
188 } 186 }
189 187
190 // AnimationCurve implementation 188 // AnimationCurve implementation
191 base::TimeDelta Duration() const override; 189 base::TimeDelta Duration() const override;
192 scoped_ptr<AnimationCurve> Clone() const override; 190 scoped_ptr<AnimationCurve> Clone() const override;
193 191
194 // TransformAnimationCurve implementation 192 // TransformAnimationCurve implementation
195 gfx::Transform GetValue(double t) const override; 193 gfx::Transform GetValue(base::TimeDelta t) const override;
196 bool AnimatedBoundsForBox(const gfx::BoxF& box, 194 bool AnimatedBoundsForBox(const gfx::BoxF& box,
197 gfx::BoxF* bounds) const override; 195 gfx::BoxF* bounds) const override;
198 bool AffectsScale() const override; 196 bool AffectsScale() const override;
199 bool IsTranslation() const override; 197 bool IsTranslation() const override;
200 bool MaximumTargetScale(bool forward_direction, 198 bool MaximumTargetScale(bool forward_direction,
201 float* max_scale) const override; 199 float* max_scale) const override;
202 200
203 private: 201 private:
204 KeyframedTransformAnimationCurve(); 202 KeyframedTransformAnimationCurve();
205 203
(...skipping 16 matching lines...) Expand all
222 void AddKeyframe(scoped_ptr<FilterKeyframe> keyframe); 220 void AddKeyframe(scoped_ptr<FilterKeyframe> keyframe);
223 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) { 221 void SetTimingFunction(scoped_ptr<TimingFunction> timing_function) {
224 timing_function_ = timing_function.Pass(); 222 timing_function_ = timing_function.Pass();
225 } 223 }
226 224
227 // AnimationCurve implementation 225 // AnimationCurve implementation
228 base::TimeDelta Duration() const override; 226 base::TimeDelta Duration() const override;
229 scoped_ptr<AnimationCurve> Clone() const override; 227 scoped_ptr<AnimationCurve> Clone() const override;
230 228
231 // FilterAnimationCurve implementation 229 // FilterAnimationCurve implementation
232 FilterOperations GetValue(double t) const override; 230 FilterOperations GetValue(base::TimeDelta t) const override;
233 bool HasFilterThatMovesPixels() const override; 231 bool HasFilterThatMovesPixels() const override;
234 232
235 private: 233 private:
236 KeyframedFilterAnimationCurve(); 234 KeyframedFilterAnimationCurve();
237 235
238 // Always sorted in order of increasing time. No two keyframes have the 236 // Always sorted in order of increasing time. No two keyframes have the
239 // same time. 237 // same time.
240 ScopedPtrVector<FilterKeyframe> keyframes_; 238 ScopedPtrVector<FilterKeyframe> keyframes_;
241 scoped_ptr<TimingFunction> timing_function_; 239 scoped_ptr<TimingFunction> timing_function_;
242 240
243 DISALLOW_COPY_AND_ASSIGN(KeyframedFilterAnimationCurve); 241 DISALLOW_COPY_AND_ASSIGN(KeyframedFilterAnimationCurve);
244 }; 242 };
245 243
246 } // namespace cc 244 } // namespace cc
247 245
248 #endif // CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_ 246 #endif // CC_ANIMATION_KEYFRAMED_ANIMATION_CURVE_H_
OLDNEW
« no previous file with comments | « cc/animation/animation_curve.h ('k') | cc/animation/keyframed_animation_curve.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698