Index: ui/gfx/compositor/layer.h |
diff --git a/ui/gfx/compositor/layer.h b/ui/gfx/compositor/layer.h |
index 0c6b40e84c8afd77772e1276106f02037021c923..6d8ed31425ff3c09d5f0462bb9b1d0cbc1a38e89 100644 |
--- a/ui/gfx/compositor/layer.h |
+++ b/ui/gfx/compositor/layer.h |
@@ -15,16 +15,15 @@ |
#include "ui/gfx/rect.h" |
#include "ui/gfx/transform.h" |
#include "ui/gfx/compositor/compositor.h" |
-#include "ui/gfx/compositor/layer_animation_manager.h" |
-#include "ui/gfx/compositor/layer_animator_delegate.h" |
+#include "ui/gfx/compositor/layer_animation_delegate.h" |
#include "ui/gfx/compositor/layer_delegate.h" |
class SkCanvas; |
namespace ui { |
-class Animation; |
class Compositor; |
+class LayerAnimator; |
class Texture; |
// Layer manages a texture, transform and a set of child Layers. Any View that |
@@ -35,7 +34,7 @@ class Texture; |
// NOTE: unlike Views, each Layer does *not* own its children views. If you |
// delete a Layer and it has children, the parent of each child layer is set to |
// NULL, but the children are not deleted. |
-class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate { |
+class COMPOSITOR_EXPORT Layer : public LayerAnimationDelegate { |
public: |
enum LayerType { |
LAYER_HAS_NO_TEXTURE = 0, |
@@ -78,20 +77,22 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate { |
// Returns true if this Layer contains |other| somewhere in its children. |
bool Contains(const Layer* other) const; |
- // Sets the animation to use for changes to opacity, position or transform. |
- // That is, if you invoke this with non-NULL |animation| is started and any |
- // changes to opacity, position or transform are animated between the current |
- // value and target value. If the current animation is NULL or completed, |
- // changes are immediate. If the opacity, transform or bounds are changed |
- // and the animation is part way through, the animation is canceled and |
- // the bounds, opacity and transfrom and set to the target value. |
- // Layer takes ownership of |animation| and installs it's own delegate on the |
- // animation. |
- void SetAnimation(Animation* animation); |
+ // The layer's animator is responsible for causing automatic animations when |
+ // properties are set. It also manages a queue of pending animations and |
+ // handles blending of animations. |
+ void SetAnimator(LayerAnimator* animator); |
+ |
+ // Returns the layer's animator. Creates a default animator of one has not |
+ // been set. Will not return NULL. |
+ LayerAnimator* GetAnimator(); |
// The transform, relative to the parent. |
void SetTransform(const ui::Transform& transform); |
- const ui::Transform& transform() const { return transform_; } |
+ const Transform& transform() const { return transform_; } |
+ |
+ // Return the target transform if animator is running, or the current |
+ // transform otherwise. |
+ Transform GetTargetTransform() const; |
// The bounds, relative to the parent. |
void SetBounds(const gfx::Rect& bounds); |
@@ -106,6 +107,10 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate { |
float opacity() const { return opacity_; } |
void SetOpacity(float opacity); |
+ // Return the target opacity if animator is running, or the current bounds |
+ // otherwise. |
+ float GetTargetOpacity() const; |
+ |
// Sets the visibility of the Layer. A Layer may be visible but not |
// drawn. This happens if any ancestor of a Layer is not visible. |
void SetVisible(bool visible); |
@@ -223,22 +228,20 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate { |
// should have valid alpha. |
bool has_valid_alpha_channel() const { return !layer_updated_externally_; } |
- // If the animation is running and has progressed, it is stopped and all |
- // properties that are animated (except |property|) are immediately set to |
- // their target value. |
- void StopAnimatingIfNecessary( |
- LayerAnimationManager::AnimationProperty property); |
- |
// Following are invoked from the animation or if no animation exists to |
// update the values immediately. |
void SetBoundsImmediately(const gfx::Rect& bounds); |
void SetTransformImmediately(const ui::Transform& transform); |
void SetOpacityImmediately(float opacity); |
- // LayerAnimatorDelegate overrides: |
- virtual void SetBoundsFromAnimator(const gfx::Rect& bounds) OVERRIDE; |
- virtual void SetTransformFromAnimator(const Transform& transform) OVERRIDE; |
- virtual void SetOpacityFromAnimator(float opacity) OVERRIDE; |
+ // Implementation of LayerAnimationDelegate |
+ virtual void SetBoundsFromAnimation(const gfx::Rect& bounds) OVERRIDE; |
+ virtual void SetTransformFromAnimation(const Transform& transform) OVERRIDE; |
+ virtual void SetOpacityFromAnimation(float opacity) OVERRIDE; |
+ virtual void ScheduleDrawForAnimation() OVERRIDE; |
+ virtual const gfx::Rect& GetBoundsForAnimation() const OVERRIDE; |
+ virtual const Transform& GetTransformForAnimation() const OVERRIDE; |
+ virtual float GetOpacityForAnimation() const OVERRIDE; |
const LayerType type_; |
@@ -270,7 +273,7 @@ class COMPOSITOR_EXPORT Layer : public LayerAnimatorDelegate { |
LayerDelegate* delegate_; |
- scoped_ptr<LayerAnimationManager> animator_; |
+ scoped_ptr<LayerAnimator> animator_; |
DISALLOW_COPY_AND_ASSIGN(Layer); |
}; |