Home | History | Annotate | Download | only in shelf
      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 
     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 
     30 BackgroundAnimator::~BackgroundAnimator() {
     31 }
     32 
     33 void BackgroundAnimator::SetDuration(int time_in_ms) {
     34   animation_.SetSlideDuration(time_in_ms);
     35 }
     36 
     37 void BackgroundAnimator::SetPaintsBackground(bool value, ChangeType type) {
     38   if (paints_background_ == value)
     39     return;
     40   paints_background_ = value;
     41   if (type == CHANGE_IMMEDIATE && !animation_.is_animating()) {
     42     animation_.Reset(value ? 1.0f : 0.0f);
     43     AnimationProgressed(&animation_);
     44     return;
     45   }
     46   if (paints_background_)
     47     animation_.Show();
     48   else
     49     animation_.Hide();
     50 }
     51 
     52 void BackgroundAnimator::AnimationProgressed(const ui::Animation* animation) {
     53   int alpha = animation->CurrentValueBetween(min_alpha_, max_alpha_);
     54   if (alpha_ == alpha)
     55     return;
     56   alpha_ = alpha;
     57   delegate_->UpdateBackground(alpha_);
     58 }
     59 
     60 }  // namespace internal
     61 }  // namespace ash
     62