| Index: ash/common/shelf/shelf_background_animator.cc
|
| diff --git a/ash/common/shelf/shelf_background_animator.cc b/ash/common/shelf/shelf_background_animator.cc
|
| deleted file mode 100644
|
| index ad0311e1fdc54591b70fe0015db9d04936416969..0000000000000000000000000000000000000000
|
| --- a/ash/common/shelf/shelf_background_animator.cc
|
| +++ /dev/null
|
| @@ -1,245 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ash/common/shelf/shelf_background_animator.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "ash/animation/animation_change_type.h"
|
| -#include "ash/common/shelf/shelf_background_animator_observer.h"
|
| -#include "ash/common/shelf/shelf_constants.h"
|
| -#include "ash/common/shelf/wm_shelf.h"
|
| -#include "ash/common/wallpaper/wallpaper_controller.h"
|
| -#include "ui/gfx/animation/slide_animation.h"
|
| -#include "ui/gfx/color_utils.h"
|
| -
|
| -namespace ash {
|
| -
|
| -ShelfBackgroundAnimator::AnimationValues::AnimationValues() {}
|
| -
|
| -ShelfBackgroundAnimator::AnimationValues::~AnimationValues() {}
|
| -
|
| -void ShelfBackgroundAnimator::AnimationValues::UpdateCurrentValues(double t) {
|
| - current_color_ =
|
| - gfx::Tween::ColorValueBetween(t, initial_color_, target_color_);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimationValues::SetTargetValues(
|
| - SkColor target_color) {
|
| - initial_color_ = current_color_;
|
| - target_color_ = target_color;
|
| -}
|
| -
|
| -bool ShelfBackgroundAnimator::AnimationValues::InitialValuesEqualTargetValuesOf(
|
| - const AnimationValues& other) const {
|
| - return initial_color_ == other.target_color_;
|
| -}
|
| -
|
| -ShelfBackgroundAnimator::ShelfBackgroundAnimator(
|
| - ShelfBackgroundType background_type,
|
| - WmShelf* wm_shelf,
|
| - WallpaperController* wallpaper_controller)
|
| - : wm_shelf_(wm_shelf), wallpaper_controller_(wallpaper_controller) {
|
| - if (wallpaper_controller_)
|
| - wallpaper_controller_->AddObserver(this);
|
| - if (wm_shelf_)
|
| - wm_shelf_->AddObserver(this);
|
| -
|
| - // Initialize animators so that adding observers get notified with consistent
|
| - // values.
|
| - AnimateBackground(background_type, AnimationChangeType::IMMEDIATE);
|
| -}
|
| -
|
| -ShelfBackgroundAnimator::~ShelfBackgroundAnimator() {
|
| - if (wallpaper_controller_)
|
| - wallpaper_controller_->RemoveObserver(this);
|
| - if (wm_shelf_)
|
| - wm_shelf_->RemoveObserver(this);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AddObserver(
|
| - ShelfBackgroundAnimatorObserver* observer) {
|
| - observers_.AddObserver(observer);
|
| - NotifyObserver(observer);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::RemoveObserver(
|
| - ShelfBackgroundAnimatorObserver* observer) {
|
| - observers_.RemoveObserver(observer);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::NotifyObserver(
|
| - ShelfBackgroundAnimatorObserver* observer) {
|
| - observer->UpdateShelfBackground(shelf_background_values_.current_color());
|
| - observer->UpdateShelfItemBackground(item_background_values_.current_color());
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::PaintBackground(
|
| - ShelfBackgroundType background_type,
|
| - AnimationChangeType change_type) {
|
| - if (target_background_type_ == background_type &&
|
| - change_type == AnimationChangeType::ANIMATE) {
|
| - return;
|
| - }
|
| -
|
| - AnimateBackground(background_type, change_type);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimationProgressed(
|
| - const gfx::Animation* animation) {
|
| - DCHECK_EQ(animation, animator_.get());
|
| - SetAnimationValues(animation->GetCurrentValue());
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimationEnded(const gfx::Animation* animation) {
|
| - DCHECK_EQ(animation, animator_.get());
|
| - SetAnimationValues(animation->GetCurrentValue());
|
| - animator_.reset();
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimationCanceled(
|
| - const gfx::Animation* animation) {
|
| - DCHECK_EQ(animation, animator_.get());
|
| - SetAnimationValues(animator_->IsShowing() ? 1.0 : 0.0);
|
| - // Animations are only cancelled when they are being pre-empted so we don't
|
| - // destroy the |animator_| because it may be re-used immediately.
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::OnWallpaperDataChanged() {}
|
| -
|
| -void ShelfBackgroundAnimator::OnWallpaperColorsChanged() {
|
| - AnimateBackground(target_background_type_, AnimationChangeType::ANIMATE);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::OnBackgroundTypeChanged(
|
| - ShelfBackgroundType background_type,
|
| - AnimationChangeType change_type) {
|
| - PaintBackground(background_type, change_type);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::NotifyObservers() {
|
| - for (auto& observer : observers_)
|
| - NotifyObserver(&observer);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::AnimateBackground(
|
| - ShelfBackgroundType background_type,
|
| - AnimationChangeType change_type) {
|
| - StopAnimator();
|
| -
|
| - if (change_type == AnimationChangeType::IMMEDIATE) {
|
| - animator_.reset();
|
| - SetTargetValues(background_type);
|
| - SetAnimationValues(1.0);
|
| - } else if (CanReuseAnimator(background_type)) {
|
| - // |animator_| should not be null here as CanReuseAnimator() returns false
|
| - // when it is null.
|
| - if (animator_->IsShowing())
|
| - animator_->Hide();
|
| - else
|
| - animator_->Show();
|
| - } else {
|
| - CreateAnimator(background_type);
|
| - SetTargetValues(background_type);
|
| - animator_->Show();
|
| - }
|
| -
|
| - if (target_background_type_ != background_type) {
|
| - previous_background_type_ = target_background_type_;
|
| - target_background_type_ = background_type;
|
| - }
|
| -}
|
| -
|
| -bool ShelfBackgroundAnimator::CanReuseAnimator(
|
| - ShelfBackgroundType background_type) const {
|
| - if (!animator_)
|
| - return false;
|
| -
|
| - AnimationValues target_shelf_background_values;
|
| - AnimationValues target_item_background_values;
|
| - GetTargetValues(background_type, &target_shelf_background_values,
|
| - &target_item_background_values);
|
| -
|
| - return previous_background_type_ == background_type &&
|
| - shelf_background_values_.InitialValuesEqualTargetValuesOf(
|
| - target_shelf_background_values) &&
|
| - item_background_values_.InitialValuesEqualTargetValuesOf(
|
| - target_item_background_values);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::CreateAnimator(
|
| - ShelfBackgroundType background_type) {
|
| - int duration_ms = 0;
|
| -
|
| - switch (background_type) {
|
| - case SHELF_BACKGROUND_DEFAULT:
|
| - duration_ms = 500;
|
| - break;
|
| - case SHELF_BACKGROUND_OVERLAP:
|
| - duration_ms = 500;
|
| - break;
|
| - case SHELF_BACKGROUND_MAXIMIZED:
|
| - duration_ms = 250;
|
| - break;
|
| - }
|
| -
|
| - animator_.reset(new gfx::SlideAnimation(this));
|
| - animator_->SetSlideDuration(duration_ms);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::StopAnimator() {
|
| - if (animator_)
|
| - animator_->Stop();
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::SetTargetValues(
|
| - ShelfBackgroundType background_type) {
|
| - GetTargetValues(background_type, &shelf_background_values_,
|
| - &item_background_values_);
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::GetTargetValues(
|
| - ShelfBackgroundType background_type,
|
| - AnimationValues* shelf_background_values,
|
| - AnimationValues* item_background_values) const {
|
| - int target_shelf_background_alpha = 0;
|
| - int target_shelf_item_background_alpha = 0;
|
| -
|
| - switch (background_type) {
|
| - case SHELF_BACKGROUND_DEFAULT:
|
| - target_shelf_background_alpha = 0;
|
| - target_shelf_item_background_alpha = kShelfTranslucentAlpha;
|
| - break;
|
| - case SHELF_BACKGROUND_OVERLAP:
|
| - target_shelf_background_alpha = kShelfTranslucentAlpha;
|
| - target_shelf_item_background_alpha = 0;
|
| - break;
|
| - case SHELF_BACKGROUND_MAXIMIZED:
|
| - target_shelf_background_alpha = kMaxAlpha;
|
| - target_shelf_item_background_alpha = 0;
|
| - break;
|
| - }
|
| -
|
| - SkColor target_color = wallpaper_controller_
|
| - ? wallpaper_controller_->prominent_color()
|
| - : kShelfDefaultBaseColor;
|
| -
|
| - if (target_color == SK_ColorTRANSPARENT)
|
| - target_color = kShelfDefaultBaseColor;
|
| -
|
| - shelf_background_values->SetTargetValues(
|
| - SkColorSetA(target_color, target_shelf_background_alpha));
|
| - item_background_values->SetTargetValues(
|
| - SkColorSetA(target_color, target_shelf_item_background_alpha));
|
| -}
|
| -
|
| -void ShelfBackgroundAnimator::SetAnimationValues(double t) {
|
| - DCHECK_GE(t, 0.0);
|
| - DCHECK_LE(t, 1.0);
|
| - shelf_background_values_.UpdateCurrentValues(t);
|
| - item_background_values_.UpdateCurrentValues(t);
|
| - NotifyObservers();
|
| -}
|
| -
|
| -} // namespace ash
|
|
|