• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "ash/shelf/background_animator.h"
6 
7 
8 namespace ash {
9 namespace internal {
10 
11 namespace {
12 
13 // Duration of the background animation.
14 const int kBackgroundDurationMS = 1000;
15 
16 }
17 
BackgroundAnimator(BackgroundAnimatorDelegate * delegate,int min_alpha,int max_alpha)18 BackgroundAnimator::BackgroundAnimator(BackgroundAnimatorDelegate* delegate,
19                                        int min_alpha,
20                                        int max_alpha)
21     : delegate_(delegate),
22       min_alpha_(min_alpha),
23       max_alpha_(max_alpha),
24       animation_(this),
25       paints_background_(false),
26       alpha_(min_alpha) {
27   animation_.SetSlideDuration(kBackgroundDurationMS);
28 }
29 
~BackgroundAnimator()30 BackgroundAnimator::~BackgroundAnimator() {
31 }
32 
SetDuration(int time_in_ms)33 void BackgroundAnimator::SetDuration(int time_in_ms) {
34   animation_.SetSlideDuration(time_in_ms);
35 }
36 
SetPaintsBackground(bool value,BackgroundAnimatorChangeType type)37 void BackgroundAnimator::SetPaintsBackground(
38     bool value, BackgroundAnimatorChangeType type) {
39   if (paints_background_ == value)
40     return;
41   paints_background_ = value;
42   if (type == BACKGROUND_CHANGE_IMMEDIATE && !animation_.is_animating()) {
43     animation_.Reset(value ? 1.0f : 0.0f);
44     AnimationProgressed(&animation_);
45     return;
46   }
47   if (paints_background_)
48     animation_.Show();
49   else
50     animation_.Hide();
51 }
52 
AnimationProgressed(const gfx::Animation * animation)53 void BackgroundAnimator::AnimationProgressed(const gfx::Animation* animation) {
54   int alpha = animation->CurrentValueBetween(min_alpha_, max_alpha_);
55   if (alpha_ == alpha)
56     return;
57   alpha_ = alpha;
58   delegate_->UpdateBackground(alpha_);
59 }
60 
61 }  // namespace internal
62 }  // namespace ash
63