| Index: views/animator.h
|
| ===================================================================
|
| --- views/animator.h (revision 0)
|
| +++ views/animator.h (revision 0)
|
| @@ -0,0 +1,110 @@
|
| +// Copyright (c) 2009 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 VIEWS_ANIMATOR_H_
|
| +#define VIEWS_ANIMATOR_H_
|
| +
|
| +#include <xutility>
|
| +
|
| +#include "app/animation.h"
|
| +#include "base/gfx/rect.h"
|
| +#include "base/ref_counted.h"
|
| +#include "base/scoped_ptr.h"
|
| +
|
| +class SlideAnimation;
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// ALERT!
|
| +//
|
| +// This API is preliminary and subject to change. Talk to beng before using it!
|
| +//
|
| +
|
| +namespace views {
|
| +
|
| +class View;
|
| +
|
| +class AnimatorDelegate {
|
| + public:
|
| + // Returns the view in the visual layout whose trailing edge the view that
|
| + // hosts an animator should be clamped to during animations, when
|
| + // ANIMATE_CLAMP is specified in combination with ANIMATE_X or ANIMATE_Y.
|
| + virtual View* GetClampedView(View* host) = 0;
|
| +
|
| + // Notifies the delegate that the active animation running for |host| has
|
| + // completed.
|
| + virtual void AnimationCompletedForHost(View* host) = 0;
|
| +};
|
| +
|
| +// An animator is an object that can animate actions on a host view. Once
|
| +// created, an Animator is typically owned by its host view.
|
| +class Animator : public AnimationDelegate {
|
| + public:
|
| + enum BoundsChangeFlags {
|
| + ANIMATE_NONE = 0x0, // Don't animate anything... o_O
|
| + ANIMATE_X = 0x1, // Animate the host view's x position
|
| + ANIMATE_Y = 0x2, // Animate the host view's y position
|
| + ANIMATE_WIDTH = 0x4, // Animate the host view's width
|
| + ANIMATE_HEIGHT = 0x8, // Animate the host view's height
|
| + ANIMATE_CLAMP = 0x10 // Clamp the host view's x or y position to the
|
| + // trailing edge of the view returned by
|
| + // AnimatorDelegate::GetClampedView.
|
| + };
|
| +
|
| + // Creates the animator for the specified host view. Optionally an
|
| + // AnimationContext can be provided to animate multiple views from a single
|
| + // animation.
|
| + explicit Animator(View* host);
|
| + Animator(View* host, AnimatorDelegate* delegate);
|
| + virtual ~Animator();
|
| +
|
| + // Returns true if the animator is currently animating.
|
| + bool IsAnimating() const;
|
| +
|
| + // Moves/sizes the host view to the specified bounds. |direction| is a
|
| + // combination of the above flags indicating what aspects of the bounds should
|
| + // be animated.
|
| + void AnimateToBounds(const gfx::Rect& bounds, int direction);
|
| + void AnimateToBounds(int x, int y, int width, int height, int direction) {
|
| + AnimateToBounds(gfx::Rect(x, y, std::max(0, width), std::max(0, height)),
|
| + direction);
|
| + }
|
| +
|
| + // Overridden from AnimationDelegate:
|
| + virtual void AnimationEnded(const Animation* animation);
|
| + virtual void AnimationProgressed(const Animation* animation);
|
| + virtual void AnimationCanceled(const Animation* animation);
|
| +
|
| + private:
|
| + void InitAnimation();
|
| +
|
| + // Get the current X/Y position of the host view, clamped to the right edge of
|
| + // the previous view in the visual layout, if applicable (See
|
| + // AnimatorDelegate for more info).
|
| + int GetClampedX() const;
|
| + int GetClampedY() const;
|
| +
|
| + // The view that this animator is attached to.
|
| + View* host_;
|
| +
|
| + // Start and end bounds for the animation.
|
| + gfx::Rect start_bounds_;
|
| + gfx::Rect target_bounds_;
|
| +
|
| + // The animation used by this animator.
|
| + scoped_ptr<SlideAnimation> animation_;
|
| +
|
| + // A delegate object that provides information about surrounding views.
|
| + // Will be NULL during this class' destructor.
|
| + AnimatorDelegate* delegate_;
|
| +
|
| + // Some combination of BoundsChangeFlags indicating the type of bounds change
|
| + // the host view is subject to.
|
| + int direction_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Animator);
|
| +};
|
| +
|
| +} // namespace views
|
| +
|
| +#endif // #ifndef VIEWS_ANIMATOR_H_
|
|
|
| Property changes on: views\animator.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|