background_animator.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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 8namespace ash { 9namespace internal { 10 11namespace { 12 13// Duration of the background animation. 14const int kBackgroundDurationMS = 1000; 15 16} 17 18BackgroundAnimator::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 30BackgroundAnimator::~BackgroundAnimator() { 31} 32 33void BackgroundAnimator::SetDuration(int time_in_ms) { 34 animation_.SetSlideDuration(time_in_ms); 35} 36 37void 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 52void 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