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

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

Issue 1437413002: cc: Remove ScopedPtrVector and cc::remove_if. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: just the vector Created 5 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
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 "cc/base/time_util.h" 8 #include "cc/base/time_util.h"
9 #include "ui/gfx/animation/tween.h" 9 #include "ui/gfx/animation/tween.h"
10 #include "ui/gfx/geometry/box_f.h" 10 #include "ui/gfx/geometry/box_f.h"
11 11
12 namespace cc { 12 namespace cc {
13 13
14 namespace { 14 namespace {
15 15
16 template <class KeyframeType> 16 template <class KeyframeType>
17 void InsertKeyframe(scoped_ptr<KeyframeType> keyframe, 17 void InsertKeyframe(scoped_ptr<KeyframeType> keyframe,
18 ScopedPtrVector<KeyframeType>* keyframes) { 18 std::vector<scoped_ptr<KeyframeType>>* keyframes) {
19 // Usually, the keyframes will be added in order, so this loop would be 19 // Usually, the keyframes will be added in order, so this loop would be
20 // unnecessary and we should skip it if possible. 20 // unnecessary and we should skip it if possible.
21 if (!keyframes->empty() && keyframe->Time() < keyframes->back()->Time()) { 21 if (!keyframes->empty() && keyframe->Time() < keyframes->back()->Time()) {
22 for (size_t i = 0; i < keyframes->size(); ++i) { 22 for (size_t i = 0; i < keyframes->size(); ++i) {
23 if (keyframe->Time() < keyframes->at(i)->Time()) { 23 if (keyframe->Time() < keyframes->at(i)->Time()) {
24 keyframes->insert(keyframes->begin() + i, keyframe.Pass()); 24 keyframes->insert(keyframes->begin() + i, keyframe.Pass());
25 return; 25 return;
26 } 26 }
27 } 27 }
28 } 28 }
29 29
30 keyframes->push_back(keyframe.Pass()); 30 keyframes->push_back(keyframe.Pass());
31 } 31 }
32 32
33 template <typename KeyframeType> 33 template <typename KeyframeType>
34 base::TimeDelta TransformedAnimationTime( 34 base::TimeDelta TransformedAnimationTime(
35 const ScopedPtrVector<KeyframeType>& keyframes, 35 const std::vector<scoped_ptr<KeyframeType>>& keyframes,
36 const scoped_ptr<TimingFunction>& timing_function, 36 const scoped_ptr<TimingFunction>& timing_function,
37 base::TimeDelta time) { 37 base::TimeDelta time) {
38 if (timing_function) { 38 if (timing_function) {
39 base::TimeDelta start_time = keyframes.front()->Time(); 39 base::TimeDelta start_time = keyframes.front()->Time();
40 base::TimeDelta duration = 40 base::TimeDelta duration =
41 keyframes.back()->Time() - keyframes.front()->Time(); 41 keyframes.back()->Time() - keyframes.front()->Time();
42 double progress = TimeUtil::Divide(time - start_time, duration); 42 double progress = TimeUtil::Divide(time - start_time, duration);
43 43
44 time = TimeUtil::Scale(duration, timing_function->GetValue(progress)) + 44 time = TimeUtil::Scale(duration, timing_function->GetValue(progress)) +
45 start_time; 45 start_time;
46 } 46 }
47 47
48 return time; 48 return time;
49 } 49 }
50 50
51 template <typename KeyframeType> 51 template <typename KeyframeType>
52 size_t GetActiveKeyframe(const ScopedPtrVector<KeyframeType>& keyframes, 52 size_t GetActiveKeyframe(const std::vector<scoped_ptr<KeyframeType>>& keyframes,
53 base::TimeDelta time) { 53 base::TimeDelta time) {
54 DCHECK_GE(keyframes.size(), 2ul); 54 DCHECK_GE(keyframes.size(), 2ul);
55 size_t i = 0; 55 size_t i = 0;
56 for (; i < keyframes.size() - 2; ++i) { // Last keyframe is never active. 56 for (; i < keyframes.size() - 2; ++i) { // Last keyframe is never active.
57 if (time < keyframes[i + 1]->Time()) 57 if (time < keyframes[i + 1]->Time())
58 break; 58 break;
59 } 59 }
60 60
61 return i; 61 return i;
62 } 62 }
63 63
64 template <typename KeyframeType> 64 template <typename KeyframeType>
65 double TransformedKeyframeProgress( 65 double TransformedKeyframeProgress(
66 const ScopedPtrVector<KeyframeType>& keyframes, 66 const std::vector<scoped_ptr<KeyframeType>>& keyframes,
67 base::TimeDelta time, 67 base::TimeDelta time,
68 size_t i) { 68 size_t i) {
69 double progress = 69 double progress =
70 TimeUtil::Divide(time - keyframes[i]->Time(), 70 TimeUtil::Divide(time - keyframes[i]->Time(),
71 keyframes[i + 1]->Time() - keyframes[i]->Time()); 71 keyframes[i + 1]->Time() - keyframes[i]->Time());
72 72
73 if (keyframes[i]->timing_function()) { 73 if (keyframes[i]->timing_function()) {
74 progress = keyframes[i]->timing_function()->GetValue(progress); 74 progress = keyframes[i]->timing_function()->GetValue(progress);
75 } 75 }
76 76
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 bool KeyframedFilterAnimationCurve::HasFilterThatMovesPixels() const { 476 bool KeyframedFilterAnimationCurve::HasFilterThatMovesPixels() const {
477 for (size_t i = 0; i < keyframes_.size(); ++i) { 477 for (size_t i = 0; i < keyframes_.size(); ++i) {
478 if (keyframes_[i]->Value().HasFilterThatMovesPixels()) { 478 if (keyframes_[i]->Value().HasFilterThatMovesPixels()) {
479 return true; 479 return true;
480 } 480 }
481 } 481 }
482 return false; 482 return false;
483 } 483 }
484 484
485 } // namespace cc 485 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698