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

Unified Diff: ui/gfx/compositor/layer_animator.h

Issue 10365007: ui: Move compositor/ directory out of gfx/, up to ui/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix DEPS Created 8 years, 8 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_animation_sequence_unittest.cc ('k') | ui/gfx/compositor/layer_animator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/compositor/layer_animator.h
diff --git a/ui/gfx/compositor/layer_animator.h b/ui/gfx/compositor/layer_animator.h
deleted file mode 100644
index 070534ad09a285584f309fb44176b45b02ecc0c9..0000000000000000000000000000000000000000
--- a/ui/gfx/compositor/layer_animator.h
+++ /dev/null
@@ -1,284 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_GFX_COMPOSITOR_LAYER_ANIMATOR_H_
-#define UI_GFX_COMPOSITOR_LAYER_ANIMATOR_H_
-#pragma once
-
-#include <deque>
-#include <vector>
-
-#include "base/compiler_specific.h"
-#include "base/memory/linked_ptr.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/observer_list.h"
-#include "base/time.h"
-#include "ui/base/animation/animation_container_element.h"
-#include "ui/base/animation/tween.h"
-#include "ui/gfx/compositor/compositor_export.h"
-#include "ui/gfx/compositor/layer_animation_element.h"
-
-namespace gfx {
-class Rect;
-}
-
-namespace ui {
-class Animation;
-class Layer;
-class LayerAnimationSequence;
-class LayerAnimationDelegate;
-class LayerAnimationObserver;
-class ScopedLayerAnimationSettings;
-class Transform;
-
-// When a property of layer needs to be changed it is set by way of
-// LayerAnimator. This enables LayerAnimator to animate property changes.
-// NB: during many tests, set_disable_animations_for_test is used and causes
-// all animations to complete immediately.
-class COMPOSITOR_EXPORT LayerAnimator : public AnimationContainerElement {
- public:
- enum PreemptionStrategy {
- IMMEDIATELY_SET_NEW_TARGET,
- IMMEDIATELY_ANIMATE_TO_NEW_TARGET,
- ENQUEUE_NEW_ANIMATION,
- REPLACE_QUEUED_ANIMATIONS,
- BLEND_WITH_CURRENT_ANIMATION
- };
-
- explicit LayerAnimator(base::TimeDelta transition_duration);
- virtual ~LayerAnimator();
-
- // No implicit animations when properties are set.
- static LayerAnimator* CreateDefaultAnimator();
-
- // Implicitly animates when properties are set.
- static LayerAnimator* CreateImplicitAnimator();
-
- // Sets the transform on the delegate. May cause an implicit animation.
- virtual void SetTransform(const Transform& transform);
- Transform GetTargetTransform() const;
-
- // Sets the bounds on the delegate. May cause an implicit animation.
- virtual void SetBounds(const gfx::Rect& bounds);
- gfx::Rect GetTargetBounds() const;
-
- // Sets the opacity on the delegate. May cause an implicit animation.
- virtual void SetOpacity(float opacity);
- float GetTargetOpacity() const;
-
- // Sets the visibility of the delegate. May cause an implicit animation.
- virtual void SetVisibility(bool visibility);
- bool GetTargetVisibility() const;
-
- // Sets the layer animation delegate the animator is associated with. The
- // animator does not own the delegate.
- void SetDelegate(LayerAnimationDelegate* delegate);
-
- // Sets the animation preemption strategy. This determines the behaviour if
- // a property is set during an animation. The default is
- // IMMEDIATELY_SET_NEW_TARGET (see ImmediatelySetNewTarget below).
- void set_preemption_strategy(PreemptionStrategy strategy) {
- preemption_strategy_ = strategy;
- }
-
- PreemptionStrategy preemption_strategy() const {
- return preemption_strategy_;
- }
-
- // Start an animation sequence. If an animation for the same property is in
- // progress, it needs to be interrupted with the new animation. The animator
- // takes ownership of this animation sequence.
- void StartAnimation(LayerAnimationSequence* animation);
-
- // Schedule an animation to be run when possible. The animator takes ownership
- // of this animation sequence.
- void ScheduleAnimation(LayerAnimationSequence* animation);
-
- // Schedules the animations to be run together. Obviously will no work if
- // they animate any common properties. The animator takes ownership of the
- // animation sequences.
- void ScheduleTogether(const std::vector<LayerAnimationSequence*>& animations);
-
- // Returns true if there is an animation in the queue (animations remain in
- // the queue until they complete, so this includes running animations).
- bool is_animating() const { return !animation_queue_.empty(); }
-
- // Returns true if there is an animation in the queue that animates the given
- // property (animations remain in the queue until they complete, so this
- // includes running animations).
- bool IsAnimatingProperty(
- LayerAnimationElement::AnimatableProperty property) const;
-
- // Stops animating the given property. No effect if there is no running
- // animation for the given property. Skips to the final state of the
- // animation.
- void StopAnimatingProperty(
- LayerAnimationElement::AnimatableProperty property);
-
- // Stops all animation and clears any queued animations.
- void StopAnimating();
-
- // These functions are used for adding or removing observers from the observer
- // list. The observers are notified when animations end.
- void AddObserver(LayerAnimationObserver* observer);
- void RemoveObserver(LayerAnimationObserver* observer);
-
- // This determines how implicit animations will be tweened. This has no
- // effect on animations that are explicitly started or scheduled. The default
- // is Tween::LINEAR.
- void set_tween_type(Tween::Type tween_type) { tween_type_ = tween_type; }
- Tween::Type tween_type() const { return tween_type_; }
-
- // For testing purposes only.
- void set_disable_timer_for_test(bool disable_timer) {
- disable_timer_for_test_ = disable_timer;
- }
- base::TimeTicks last_step_time() const { return last_step_time_; }
-
- // When set to true, all animations complete immediately.
- static void set_disable_animations_for_test(bool disable_animations) {
- disable_animations_for_test_ = disable_animations;
- }
-
- static bool disable_animations_for_test() {
- return disable_animations_for_test_;
- }
-
- protected:
- LayerAnimationDelegate* delegate() { return delegate_; }
- const LayerAnimationDelegate* delegate() const { return delegate_; }
-
- // Virtual for testing.
- virtual bool ProgressAnimation(LayerAnimationSequence* sequence,
- base::TimeDelta delta);
-
- // Returns true if the sequence is owned by this animator.
- bool HasAnimation(LayerAnimationSequence* sequence) const;
-
- private:
- friend class ScopedLayerAnimationSettings;
-
- // We need to keep track of the start time of every running animation.
- struct RunningAnimation {
- RunningAnimation(LayerAnimationSequence* sequence,
- base::TimeTicks start_time)
- : sequence(sequence),
- start_time(start_time) {
- }
- LayerAnimationSequence* sequence;
- base::TimeTicks start_time;
- };
-
- typedef std::vector<RunningAnimation> RunningAnimations;
- typedef std::deque<linked_ptr<LayerAnimationSequence> > AnimationQueue;
-
- // Implementation of AnimationContainerElement
- virtual void SetStartTime(base::TimeTicks start_time) OVERRIDE;
- virtual void Step(base::TimeTicks time_now) OVERRIDE;
- virtual base::TimeDelta GetTimerInterval() const OVERRIDE;
-
- // Starts or stops stepping depending on whether thare are running animations.
- void UpdateAnimationState();
-
- // Removes the sequences from both the running animations and the queue.
- // Returns a pointer to the removed animation, if any. NOTE: the caller is
- // responsible for deleting the returned pointer.
- LayerAnimationSequence* RemoveAnimation(
- LayerAnimationSequence* sequence) WARN_UNUSED_RESULT;
-
- // Progresses to the end of the sequence before removing it.
- void FinishAnimation(LayerAnimationSequence* sequence);
-
- // Finishes any running animation with zero duration.
- void FinishAnyAnimationWithZeroDuration();
-
- // Clears the running animations and the queue. No sequences are progressed.
- void ClearAnimations();
-
- // Returns the running animation animating the given property, if any.
- RunningAnimation* GetRunningAnimation(
- LayerAnimationElement::AnimatableProperty property);
-
- // Checks if the sequence has already been added to the queue and adds it
- // to the front if note.
- void AddToQueueIfNotPresent(LayerAnimationSequence* sequence);
-
- // Any running or queued animation that affects a property in common with
- // |sequence| is either finished or aborted depending on |abort|.
- void RemoveAllAnimationsWithACommonProperty(LayerAnimationSequence* sequence,
- bool abort);
-
- // Preempts a running animation by progressing both the running animation and
- // the given sequence to the end.
- void ImmediatelySetNewTarget(LayerAnimationSequence* sequence);
-
- // Preempts by aborting the running animation, and starts the given animation.
- void ImmediatelyAnimateToNewTarget(LayerAnimationSequence* sequence);
-
- // Preempts by adding the new animation to the queue.
- void EnqueueNewAnimation(LayerAnimationSequence* sequence);
-
- // Preempts by wiping out any unstarted animation in the queue and then
- // enqueuing this animation.
- void ReplaceQueuedAnimations(LayerAnimationSequence* sequence);
-
- // If there's an animation in the queue that doesn't animate the same property
- // as a running animation, or an animation schedule to run before it, start it
- // up. Repeat until there are no such animations.
- void ProcessQueue();
-
- // Attempts to add the sequence to the list of running animations. Returns
- // false if there is an animation running that already animates one of the
- // properties affected by |sequence|.
- bool StartSequenceImmediately(LayerAnimationSequence* sequence);
-
- // Sets the value of target as if all the running and queued animations were
- // allowed to finish.
- void GetTargetValue(LayerAnimationElement::TargetValue* target) const;
-
- // Called whenever an animation is added to the animation queue. Either by
- // starting the animation or adding to the queue.
- void OnScheduled(LayerAnimationSequence* sequence);
-
- // This is the queue of animations to run.
- AnimationQueue animation_queue_;
-
- // The target of all layer animations.
- LayerAnimationDelegate* delegate_;
-
- // The currently running animations.
- RunningAnimations running_animations_;
-
- // Determines how animations are replaced.
- PreemptionStrategy preemption_strategy_;
-
- // The default length of animations.
- base::TimeDelta transition_duration_;
-
- // The default tween type for implicit transitions
- Tween::Type tween_type_;
-
- // Used for coordinating the starting of animations.
- base::TimeTicks last_step_time_;
-
- // True if we are being stepped by our container.
- bool is_started_;
-
- // This prevents the animator from automatically stepping through animations
- // and allows for manual stepping.
- bool disable_timer_for_test_;
-
- // This causes all animations to complete immediately.
- static bool disable_animations_for_test_;
-
- // Observers are notified when layer animations end, are scheduled or are
- // aborted.
- ObserverList<LayerAnimationObserver> observers_;
-
- DISALLOW_COPY_AND_ASSIGN(LayerAnimator);
-};
-
-} // namespace ui
-
-#endif // UI_GFX_COMPOSITOR_LAYER_ANIMATOR_H_
« no previous file with comments | « ui/gfx/compositor/layer_animation_sequence_unittest.cc ('k') | ui/gfx/compositor/layer_animator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698