OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "ui/compositor/layer_animator_collection.h" | |
6 | |
7 #include <set> | |
8 | |
9 #include "base/time/time.h" | |
10 #include "ui/compositor/layer_animator.h" | |
11 #include "ui/gfx/frame_time.h" | |
12 | |
13 namespace ui { | |
14 | |
15 LayerAnimatorCollection::LayerAnimatorCollection( | |
16 LayerAnimatorCollectionDelegate* delegate) | |
17 : delegate_(delegate), | |
18 last_tick_time_(gfx::FrameTime::Now()) { | |
19 } | |
20 | |
21 LayerAnimatorCollection::~LayerAnimatorCollection() { | |
22 } | |
23 | |
24 void LayerAnimatorCollection::StartAnimator( | |
25 scoped_refptr<LayerAnimator> animator) { | |
26 DCHECK_EQ(0U, animators_.count(animator)); | |
27 if (!animators_.size()) | |
28 last_tick_time_ = gfx::FrameTime::Now(); | |
29 animators_.insert(animator); | |
30 if (delegate_) | |
31 delegate_->ScheduleAnimationForLayerCollection(); | |
32 } | |
33 | |
34 void LayerAnimatorCollection::StopAnimator( | |
35 scoped_refptr<LayerAnimator> animator) { | |
36 DCHECK_GT(animators_.count(animator), 0U); | |
37 animators_.erase(animator); | |
38 } | |
39 | |
40 bool LayerAnimatorCollection::HasActiveAnimators() const { | |
41 return !animators_.empty(); | |
42 } | |
43 | |
44 void LayerAnimatorCollection::Progress(base::TimeTicks now) { | |
45 last_tick_time_ = now; | |
46 std::set<scoped_refptr<LayerAnimator> > list = animators_; | |
47 for (std::set<scoped_refptr<LayerAnimator> >::iterator iter = list.begin(); | |
48 iter != list.end(); | |
49 ++iter) { | |
50 // Make sure the animator is still valid. | |
51 if (animators_.count(*iter) > 0) | |
52 (*iter)->Step(now); | |
53 } | |
54 } | |
55 | |
56 } // namespace ui | |
OLD | NEW |