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

Unified Diff: ui/gfx/compositor/layer.cc

Issue 8362006: Reland r107720 - Enable the new layer animation framework. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/compositor/layer.h ('k') | ui/gfx/compositor/layer_animation_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/compositor/layer.cc
diff --git a/ui/gfx/compositor/layer.cc b/ui/gfx/compositor/layer.cc
index a075137abeb62211f70f3731a316d8815bd33adb..e9a9ed578dfdfde1fab4b94b0af6d50f9d396cec 100644
--- a/ui/gfx/compositor/layer.cc
+++ b/ui/gfx/compositor/layer.cc
@@ -18,7 +18,7 @@
#include "ui/gfx/compositor/compositor_cc.h"
#endif
#include "ui/gfx/canvas_skia.h"
-#include "ui/gfx/compositor/layer_animation_manager.h"
+#include "ui/gfx/compositor/layer_animator.h"
#include "ui/gfx/interpolated_transform.h"
#include "ui/gfx/point3.h"
@@ -135,49 +135,46 @@ bool Layer::Contains(const Layer* other) const {
return false;
}
-void Layer::SetAnimation(Animation* animation) {
- if (animation) {
- if (!animator_.get())
- animator_.reset(new LayerAnimationManager(this));
- animation->Start();
- animator_->SetAnimation(animation);
- } else {
- animator_.reset();
- }
+void Layer::SetAnimator(LayerAnimator* animator) {
+ if (animator)
+ animator->SetDelegate(this);
+ animator_.reset(animator);
+}
+
+LayerAnimator* Layer::GetAnimator() {
+ if (!animator_.get())
+ SetAnimator(LayerAnimator::CreateDefaultAnimator());
+ return animator_.get();
}
void Layer::SetTransform(const ui::Transform& transform) {
- StopAnimatingIfNecessary(LayerAnimationManager::TRANSFORM);
- if (animator_.get() && animator_->IsRunning()) {
- animator_->AnimateTransform(transform);
- return;
- }
- SetTransformImmediately(transform);
+ GetAnimator()->SetTransform(transform);
+}
+
+Transform Layer::GetTargetTransform() const {
+ if (animator_.get() && animator_->is_animating())
+ return animator_->GetTargetTransform();
+ return transform_;
}
void Layer::SetBounds(const gfx::Rect& bounds) {
- StopAnimatingIfNecessary(LayerAnimationManager::LOCATION);
- if (animator_.get() && animator_->IsRunning() &&
- bounds.size() == bounds_.size()) {
- animator_->AnimateToPoint(bounds.origin());
- return;
- }
- SetBoundsImmediately(bounds);
+ GetAnimator()->SetBounds(bounds);
}
gfx::Rect Layer::GetTargetBounds() const {
- if (animator_.get() && animator_->IsRunning())
- return gfx::Rect(animator_->GetTargetPoint(), bounds_.size());
+ if (animator_.get() && animator_->is_animating())
+ return animator_->GetTargetBounds();
return bounds_;
}
void Layer::SetOpacity(float opacity) {
- StopAnimatingIfNecessary(LayerAnimationManager::OPACITY);
- if (animator_.get() && animator_->IsRunning()) {
- animator_->AnimateOpacity(opacity);
- return;
- }
- SetOpacityImmediately(opacity);
+ GetAnimator()->SetOpacity(opacity);
+}
+
+float Layer::GetTargetOpacity() const {
+ if (animator_.get() && animator_->is_animating())
+ return animator_->GetTargetOpacity();
+ return opacity_;
}
void Layer::SetVisible(bool visible) {
@@ -596,29 +593,6 @@ bool Layer::GetTransformRelativeTo(const Layer* ancestor,
return p == ancestor;
}
-void Layer::StopAnimatingIfNecessary(
- LayerAnimationManager::AnimationProperty property) {
- if (!animator_.get() || !animator_->IsRunning() ||
- !animator_->got_initial_tick()) {
- return;
- }
-
- if (property != LayerAnimationManager::LOCATION &&
- animator_->IsAnimating(LayerAnimationManager::LOCATION)) {
- SetBoundsImmediately(
- gfx::Rect(animator_->GetTargetPoint(), bounds_.size()));
- }
- if (property != LayerAnimationManager::OPACITY &&
- animator_->IsAnimating(LayerAnimationManager::OPACITY)) {
- SetOpacityImmediately(animator_->GetTargetOpacity());
- }
- if (property != LayerAnimationManager::TRANSFORM &&
- animator_->IsAnimating(LayerAnimationManager::TRANSFORM)) {
- SetTransformImmediately(animator_->GetTargetTransform());
- }
- animator_.reset();
-}
-
void Layer::SetBoundsImmediately(const gfx::Rect& bounds) {
bounds_ = bounds;
@@ -648,18 +622,39 @@ void Layer::SetOpacityImmediately(float opacity) {
#endif
}
-void Layer::SetBoundsFromAnimator(const gfx::Rect& bounds) {
+void Layer::SetBoundsFromAnimation(const gfx::Rect& bounds) {
SetBoundsImmediately(bounds);
}
-void Layer::SetTransformFromAnimator(const Transform& transform) {
+void Layer::SetTransformFromAnimation(const Transform& transform) {
SetTransformImmediately(transform);
}
-void Layer::SetOpacityFromAnimator(float opacity) {
+void Layer::SetOpacityFromAnimation(float opacity) {
SetOpacityImmediately(opacity);
}
+void Layer::ScheduleDrawForAnimation() {
+ ScheduleDraw();
+}
+
+const gfx::Rect& Layer::GetBoundsForAnimation() const {
+ return bounds();
+}
+
+const Transform& Layer::GetTransformForAnimation() const {
+ return transform();
+}
+
+float Layer::GetOpacityForAnimation() const {
+ return opacity();
+}
+
+void Layer::OnLayerAnimationEnded(LayerAnimationSequence* sequence) {
+ if (delegate_)
+ delegate_->OnLayerAnimationEnded(sequence);
+}
+
#if defined(USE_WEBKIT_COMPOSITOR)
void Layer::CreateWebLayer() {
web_layer_ = WebKit::WebContentLayer::create(this, this);
« no previous file with comments | « ui/gfx/compositor/layer.h ('k') | ui/gfx/compositor/layer_animation_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698