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