Home | History | Annotate | Download | only in compositor
      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 #ifndef UI_COMPOSITOR_LAYER_ANIMATOR_COLLECTION_H_
      6 #define UI_COMPOSITOR_LAYER_ANIMATOR_COLLECTION_H_
      7 
      8 #include <set>
      9 
     10 #include "base/callback.h"
     11 #include "base/memory/ref_counted.h"
     12 #include "base/time/time.h"
     13 #include "ui/compositor/compositor_animation_observer.h"
     14 #include "ui/compositor/compositor_export.h"
     15 
     16 namespace ui {
     17 
     18 class Compositor;
     19 class LayerAnimator;
     20 
     21 // A collection of LayerAnimators that should be updated at each animation step
     22 // in the compositor.
     23 class COMPOSITOR_EXPORT LayerAnimatorCollection
     24     : public CompositorAnimationObserver {
     25  public:
     26   explicit LayerAnimatorCollection(Compositor* compositor);
     27   virtual ~LayerAnimatorCollection();
     28 
     29   void StartAnimator(scoped_refptr<LayerAnimator> animator);
     30   void StopAnimator(scoped_refptr<LayerAnimator> animator);
     31 
     32   bool HasActiveAnimators() const;
     33 
     34   base::TimeTicks last_tick_time() const { return last_tick_time_; }
     35 
     36   // CompositorAnimationObserver:
     37   virtual void OnAnimationStep(base::TimeTicks timestamp) OVERRIDE;
     38 
     39  private:
     40   Compositor* compositor_;
     41   base::TimeTicks last_tick_time_;
     42   std::set<scoped_refptr<LayerAnimator> > animators_;
     43 
     44   DISALLOW_COPY_AND_ASSIGN(LayerAnimatorCollection);
     45 };
     46 
     47 }  // namespace ui
     48 
     49 #endif  // UI_COMPOSITOR_LAYER_ANIMATOR_COLLECTION_H_
     50