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

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

Issue 609663003: cc: Remove use of PassAs() and constructor-casting with scoped_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cc-passas: no-base-changes Created 6 years, 2 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 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 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "cc/animation/keyframed_animation_curve.h" 7 #include "cc/animation/keyframed_animation_curve.h"
8 #include "ui/gfx/animation/tween.h" 8 #include "ui/gfx/animation/tween.h"
9 #include "ui/gfx/box_f.h" 9 #include "ui/gfx/box_f.h"
10 10
11 namespace cc { 11 namespace cc {
12 12
13 namespace { 13 namespace {
14 14
15 template <class Keyframe> 15 template <class Keyframe>
16 void InsertKeyframe(scoped_ptr<Keyframe> keyframe, 16 void InsertKeyframe(scoped_ptr<Keyframe> keyframe,
17 ScopedPtrVector<Keyframe>& keyframes) { 17 ScopedPtrVector<Keyframe>* keyframes) {
18 // Usually, the keyframes will be added in order, so this loop would be 18 // Usually, the keyframes will be added in order, so this loop would be
19 // unnecessary and we should skip it if possible. 19 // unnecessary and we should skip it if possible.
20 if (!keyframes.empty() && keyframe->Time() < keyframes.back()->Time()) { 20 if (!keyframes->empty() && keyframe->Time() < keyframes->back()->Time()) {
21 for (size_t i = 0; i < keyframes.size(); ++i) { 21 for (size_t i = 0; i < keyframes->size(); ++i) {
22 if (keyframe->Time() < keyframes[i]->Time()) { 22 if (keyframe->Time() < keyframes->at(i)->Time()) {
23 keyframes.insert(keyframes.begin() + i, keyframe.Pass()); 23 keyframes->insert(keyframes->begin() + i, keyframe.Pass());
24 return; 24 return;
25 } 25 }
26 } 26 }
27 } 27 }
28 28
29 keyframes.push_back(keyframe.Pass()); 29 keyframes->push_back(keyframe.Pass());
30 } 30 }
31 31
32 template <class Keyframes> 32 template <class Keyframes>
33 float GetProgress(double t, size_t i, const Keyframes& keyframes) { 33 float GetProgress(double t, size_t i, const Keyframes& keyframes) {
34 float progress = 34 float progress =
35 static_cast<float>((t - keyframes[i]->Time()) / 35 static_cast<float>((t - keyframes[i]->Time()) /
36 (keyframes[i + 1]->Time() - keyframes[i]->Time())); 36 (keyframes[i + 1]->Time() - keyframes[i]->Time()));
37 37
38 if (keyframes[i]->timing_function()) 38 if (keyframes[i]->timing_function())
39 progress = keyframes[i]->timing_function()->GetValue(progress); 39 progress = keyframes[i]->timing_function()->GetValue(progress);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 Create() { 162 Create() {
163 return make_scoped_ptr(new KeyframedColorAnimationCurve); 163 return make_scoped_ptr(new KeyframedColorAnimationCurve);
164 } 164 }
165 165
166 KeyframedColorAnimationCurve::KeyframedColorAnimationCurve() {} 166 KeyframedColorAnimationCurve::KeyframedColorAnimationCurve() {}
167 167
168 KeyframedColorAnimationCurve::~KeyframedColorAnimationCurve() {} 168 KeyframedColorAnimationCurve::~KeyframedColorAnimationCurve() {}
169 169
170 void KeyframedColorAnimationCurve::AddKeyframe( 170 void KeyframedColorAnimationCurve::AddKeyframe(
171 scoped_ptr<ColorKeyframe> keyframe) { 171 scoped_ptr<ColorKeyframe> keyframe) {
172 InsertKeyframe(keyframe.Pass(), keyframes_); 172 InsertKeyframe(keyframe.Pass(), &keyframes_);
173 } 173 }
174 174
175 double KeyframedColorAnimationCurve::Duration() const { 175 double KeyframedColorAnimationCurve::Duration() const {
176 return keyframes_.back()->Time() - keyframes_.front()->Time(); 176 return keyframes_.back()->Time() - keyframes_.front()->Time();
177 } 177 }
178 178
179 scoped_ptr<AnimationCurve> KeyframedColorAnimationCurve::Clone() const { 179 scoped_ptr<AnimationCurve> KeyframedColorAnimationCurve::Clone() const {
180 scoped_ptr<KeyframedColorAnimationCurve> to_return( 180 scoped_ptr<KeyframedColorAnimationCurve> to_return =
181 KeyframedColorAnimationCurve::Create()); 181 KeyframedColorAnimationCurve::Create();
182 for (size_t i = 0; i < keyframes_.size(); ++i) 182 for (size_t i = 0; i < keyframes_.size(); ++i)
183 to_return->AddKeyframe(keyframes_[i]->Clone()); 183 to_return->AddKeyframe(keyframes_[i]->Clone());
184 return to_return.PassAs<AnimationCurve>(); 184 return to_return.Pass();
185 } 185 }
186 186
187 SkColor KeyframedColorAnimationCurve::GetValue(double t) const { 187 SkColor KeyframedColorAnimationCurve::GetValue(double t) const {
188 if (t <= keyframes_.front()->Time()) 188 if (t <= keyframes_.front()->Time())
189 return keyframes_.front()->Value(); 189 return keyframes_.front()->Value();
190 190
191 if (t >= keyframes_.back()->Time()) 191 if (t >= keyframes_.back()->Time())
192 return keyframes_.back()->Value(); 192 return keyframes_.back()->Value();
193 193
194 size_t i = 0; 194 size_t i = 0;
(...skipping 14 matching lines...) Expand all
209 Create() { 209 Create() {
210 return make_scoped_ptr(new KeyframedFloatAnimationCurve); 210 return make_scoped_ptr(new KeyframedFloatAnimationCurve);
211 } 211 }
212 212
213 KeyframedFloatAnimationCurve::KeyframedFloatAnimationCurve() {} 213 KeyframedFloatAnimationCurve::KeyframedFloatAnimationCurve() {}
214 214
215 KeyframedFloatAnimationCurve::~KeyframedFloatAnimationCurve() {} 215 KeyframedFloatAnimationCurve::~KeyframedFloatAnimationCurve() {}
216 216
217 void KeyframedFloatAnimationCurve::AddKeyframe( 217 void KeyframedFloatAnimationCurve::AddKeyframe(
218 scoped_ptr<FloatKeyframe> keyframe) { 218 scoped_ptr<FloatKeyframe> keyframe) {
219 InsertKeyframe(keyframe.Pass(), keyframes_); 219 InsertKeyframe(keyframe.Pass(), &keyframes_);
220 } 220 }
221 221
222 double KeyframedFloatAnimationCurve::Duration() const { 222 double KeyframedFloatAnimationCurve::Duration() const {
223 return keyframes_.back()->Time() - keyframes_.front()->Time(); 223 return keyframes_.back()->Time() - keyframes_.front()->Time();
224 } 224 }
225 225
226 scoped_ptr<AnimationCurve> KeyframedFloatAnimationCurve::Clone() const { 226 scoped_ptr<AnimationCurve> KeyframedFloatAnimationCurve::Clone() const {
227 scoped_ptr<KeyframedFloatAnimationCurve> to_return( 227 scoped_ptr<KeyframedFloatAnimationCurve> to_return =
228 KeyframedFloatAnimationCurve::Create()); 228 KeyframedFloatAnimationCurve::Create();
229 for (size_t i = 0; i < keyframes_.size(); ++i) 229 for (size_t i = 0; i < keyframes_.size(); ++i)
230 to_return->AddKeyframe(keyframes_[i]->Clone()); 230 to_return->AddKeyframe(keyframes_[i]->Clone());
231 return to_return.PassAs<AnimationCurve>(); 231 return to_return.Pass();
232 } 232 }
233 233
234 float KeyframedFloatAnimationCurve::GetValue(double t) const { 234 float KeyframedFloatAnimationCurve::GetValue(double t) const {
235 if (t <= keyframes_.front()->Time()) 235 if (t <= keyframes_.front()->Time())
236 return keyframes_.front()->Value(); 236 return keyframes_.front()->Value();
237 237
238 if (t >= keyframes_.back()->Time()) 238 if (t >= keyframes_.back()->Time())
239 return keyframes_.back()->Value(); 239 return keyframes_.back()->Value();
240 240
241 size_t i = 0; 241 size_t i = 0;
(...skipping 12 matching lines...) Expand all
254 Create() { 254 Create() {
255 return make_scoped_ptr(new KeyframedTransformAnimationCurve); 255 return make_scoped_ptr(new KeyframedTransformAnimationCurve);
256 } 256 }
257 257
258 KeyframedTransformAnimationCurve::KeyframedTransformAnimationCurve() {} 258 KeyframedTransformAnimationCurve::KeyframedTransformAnimationCurve() {}
259 259
260 KeyframedTransformAnimationCurve::~KeyframedTransformAnimationCurve() {} 260 KeyframedTransformAnimationCurve::~KeyframedTransformAnimationCurve() {}
261 261
262 void KeyframedTransformAnimationCurve::AddKeyframe( 262 void KeyframedTransformAnimationCurve::AddKeyframe(
263 scoped_ptr<TransformKeyframe> keyframe) { 263 scoped_ptr<TransformKeyframe> keyframe) {
264 InsertKeyframe(keyframe.Pass(), keyframes_); 264 InsertKeyframe(keyframe.Pass(), &keyframes_);
265 } 265 }
266 266
267 double KeyframedTransformAnimationCurve::Duration() const { 267 double KeyframedTransformAnimationCurve::Duration() const {
268 return keyframes_.back()->Time() - keyframes_.front()->Time(); 268 return keyframes_.back()->Time() - keyframes_.front()->Time();
269 } 269 }
270 270
271 scoped_ptr<AnimationCurve> KeyframedTransformAnimationCurve::Clone() const { 271 scoped_ptr<AnimationCurve> KeyframedTransformAnimationCurve::Clone() const {
272 scoped_ptr<KeyframedTransformAnimationCurve> to_return( 272 scoped_ptr<KeyframedTransformAnimationCurve> to_return =
vmpstr 2014/09/26 16:44:23 Are we not allowing this type of constructor eithe
danakj 2014/09/26 16:56:44 No, it's fine, I just think following matching ()
273 KeyframedTransformAnimationCurve::Create()); 273 KeyframedTransformAnimationCurve::Create();
274 for (size_t i = 0; i < keyframes_.size(); ++i) 274 for (size_t i = 0; i < keyframes_.size(); ++i)
275 to_return->AddKeyframe(keyframes_[i]->Clone()); 275 to_return->AddKeyframe(keyframes_[i]->Clone());
276 return to_return.PassAs<AnimationCurve>(); 276 return to_return.Pass();
277 } 277 }
278 278
279 // Assumes that (*keyframes).front()->Time() < t < (*keyframes).back()-Time(). 279 // Assumes that (*keyframes).front()->Time() < t < (*keyframes).back()-Time().
280 template<typename ValueType, typename KeyframeType> 280 template<typename ValueType, typename KeyframeType>
281 static ValueType GetCurveValue(const ScopedPtrVector<KeyframeType>* keyframes, 281 static ValueType GetCurveValue(const ScopedPtrVector<KeyframeType>* keyframes,
282 double t) { 282 double t) {
283 size_t i = 0; 283 size_t i = 0;
284 for (; i < keyframes->size() - 1; ++i) { 284 for (; i < keyframes->size() - 1; ++i) {
285 if (t < (*keyframes)[i+1]->Time()) 285 if (t < (*keyframes)[i+1]->Time())
286 break; 286 break;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 Create() { 369 Create() {
370 return make_scoped_ptr(new KeyframedFilterAnimationCurve); 370 return make_scoped_ptr(new KeyframedFilterAnimationCurve);
371 } 371 }
372 372
373 KeyframedFilterAnimationCurve::KeyframedFilterAnimationCurve() {} 373 KeyframedFilterAnimationCurve::KeyframedFilterAnimationCurve() {}
374 374
375 KeyframedFilterAnimationCurve::~KeyframedFilterAnimationCurve() {} 375 KeyframedFilterAnimationCurve::~KeyframedFilterAnimationCurve() {}
376 376
377 void KeyframedFilterAnimationCurve::AddKeyframe( 377 void KeyframedFilterAnimationCurve::AddKeyframe(
378 scoped_ptr<FilterKeyframe> keyframe) { 378 scoped_ptr<FilterKeyframe> keyframe) {
379 InsertKeyframe(keyframe.Pass(), keyframes_); 379 InsertKeyframe(keyframe.Pass(), &keyframes_);
380 } 380 }
381 381
382 double KeyframedFilterAnimationCurve::Duration() const { 382 double KeyframedFilterAnimationCurve::Duration() const {
383 return keyframes_.back()->Time() - keyframes_.front()->Time(); 383 return keyframes_.back()->Time() - keyframes_.front()->Time();
384 } 384 }
385 385
386 scoped_ptr<AnimationCurve> KeyframedFilterAnimationCurve::Clone() const { 386 scoped_ptr<AnimationCurve> KeyframedFilterAnimationCurve::Clone() const {
387 scoped_ptr<KeyframedFilterAnimationCurve> to_return( 387 scoped_ptr<KeyframedFilterAnimationCurve> to_return =
388 KeyframedFilterAnimationCurve::Create()); 388 KeyframedFilterAnimationCurve::Create();
389 for (size_t i = 0; i < keyframes_.size(); ++i) 389 for (size_t i = 0; i < keyframes_.size(); ++i)
390 to_return->AddKeyframe(keyframes_[i]->Clone()); 390 to_return->AddKeyframe(keyframes_[i]->Clone());
391 return to_return.PassAs<AnimationCurve>(); 391 return to_return.Pass();
392 } 392 }
393 393
394 FilterOperations KeyframedFilterAnimationCurve::GetValue(double t) const { 394 FilterOperations KeyframedFilterAnimationCurve::GetValue(double t) const {
395 if (t <= keyframes_.front()->Time()) 395 if (t <= keyframes_.front()->Time())
396 return keyframes_.front()->Value(); 396 return keyframes_.front()->Value();
397 397
398 if (t >= keyframes_.back()->Time()) 398 if (t >= keyframes_.back()->Time())
399 return keyframes_.back()->Value(); 399 return keyframes_.back()->Value();
400 400
401 return GetCurveValue<FilterOperations, FilterKeyframe>(&keyframes_, t); 401 return GetCurveValue<FilterOperations, FilterKeyframe>(&keyframes_, t);
402 } 402 }
403 403
404 bool KeyframedFilterAnimationCurve::HasFilterThatMovesPixels() const { 404 bool KeyframedFilterAnimationCurve::HasFilterThatMovesPixels() const {
405 for (size_t i = 0; i < keyframes_.size(); ++i) { 405 for (size_t i = 0; i < keyframes_.size(); ++i) {
406 if (keyframes_[i]->Value().HasFilterThatMovesPixels()) { 406 if (keyframes_[i]->Value().HasFilterThatMovesPixels()) {
407 return true; 407 return true;
408 } 408 }
409 } 409 }
410 return false; 410 return false;
411 } 411 }
412 412
413 } // namespace cc 413 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698