background_animator.h revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
1// Copyright (c) 2012 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 ASH_SHELF_BACKGROUND_ANIMATOR_H_
6#define ASH_SHELF_BACKGROUND_ANIMATOR_H_
7
8#include "ash/ash_export.h"
9#include "base/basictypes.h"
10#include "ui/gfx/animation/animation_delegate.h"
11#include "ui/gfx/animation/slide_animation.h"
12
13namespace ash {
14namespace internal {
15
16// Delegate is notified any time the background changes.
17class ASH_EXPORT BackgroundAnimatorDelegate {
18 public:
19  virtual void UpdateBackground(int alpha) = 0;
20
21 protected:
22  virtual ~BackgroundAnimatorDelegate() {}
23};
24
25// BackgroundAnimator is used by the shelf to animate the background (alpha).
26class ASH_EXPORT BackgroundAnimator : public gfx::AnimationDelegate {
27 public:
28  // How the background can be changed.
29  enum ChangeType {
30    CHANGE_ANIMATE,
31    CHANGE_IMMEDIATE
32  };
33
34  BackgroundAnimator(BackgroundAnimatorDelegate* delegate,
35                     int min_alpha,
36                     int max_alpha);
37  virtual ~BackgroundAnimator();
38
39  // Sets the transition time in ms.
40  void SetDuration(int time_in_ms);
41
42  // Sets whether a background is rendered. Initial value is false. If |type|
43  // is |CHANGE_IMMEDIATE| and an animation is not in progress this notifies
44  // the delegate immediately (synchronously from this method).
45  void SetPaintsBackground(bool value, ChangeType type);
46  bool paints_background() const { return paints_background_; }
47
48  // Current alpha.
49  int alpha() const { return alpha_; }
50
51  // gfx::AnimationDelegate overrides:
52  virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE;
53
54 private:
55  BackgroundAnimatorDelegate* delegate_;
56
57  const int min_alpha_;
58  const int max_alpha_;
59
60  gfx::SlideAnimation animation_;
61
62  // Whether the background is painted.
63  bool paints_background_;
64
65  // Current alpha value of the background.
66  int alpha_;
67
68  DISALLOW_COPY_AND_ASSIGN(BackgroundAnimator);
69};
70
71}  // namespace internal
72}  // namespace ash
73
74#endif  // ASH_SHELF_BACKGROUND_ANIMATOR_H_
75