| Index: ash/common/shelf/shelf_background_animator.h
|
| diff --git a/ash/common/shelf/shelf_background_animator.h b/ash/common/shelf/shelf_background_animator.h
|
| index a74adf9c25543a70844db7b25396fd0a505c148e..72747494b7e431e7272891e9e8121aec9b23323e 100644
|
| --- a/ash/common/shelf/shelf_background_animator.h
|
| +++ b/ash/common/shelf/shelf_background_animator.h
|
| @@ -10,9 +10,11 @@
|
|
|
| #include "ash/ash_export.h"
|
| #include "ash/common/shelf/wm_shelf_observer.h"
|
| +#include "ash/common/wallpaper/wallpaper_controller_observer.h"
|
| #include "ash/public/cpp/shelf_types.h"
|
| #include "base/macros.h"
|
| #include "base/observer_list.h"
|
| +#include "third_party/skia/include/core/SkColor.h"
|
| #include "ui/gfx/animation/animation_delegate.h"
|
|
|
| namespace gfx {
|
| @@ -24,6 +26,7 @@ namespace ash {
|
| enum class AnimationChangeType;
|
| class ShelfBackgroundAnimatorObserver;
|
| class ShelfBackgroundAnimatorTestApi;
|
| +class WallpaperController;
|
| class WmShelf;
|
|
|
| // Central controller for the Shelf and Dock opacity animations.
|
| @@ -38,12 +41,18 @@ class WmShelf;
|
| // 2. Overlay for the SHELF_BACKGROUND_OVERLAP and SHELF_BACKGROUND_MAXIMIZED
|
| // states.
|
| class ASH_EXPORT ShelfBackgroundAnimator : public WmShelfObserver,
|
| - public gfx::AnimationDelegate {
|
| + public gfx::AnimationDelegate,
|
| + public WallpaperControllerObserver {
|
| public:
|
| + // The maximum alpha value that can be used.
|
| + static const int kMaxAlpha = SK_AlphaOPAQUE;
|
| +
|
| // Initializes this with the given |background_type|. This will observe the
|
| - // |wm_shelf| for background type changes if |wm_shelf| is not null.
|
| + // |wm_shelf| for background type changes and the |wallpaper_controller| for
|
| + // wallpaper changes if not null.
|
| ShelfBackgroundAnimator(ShelfBackgroundType background_type,
|
| - WmShelf* wm_shelf);
|
| + WmShelf* wm_shelf,
|
| + WallpaperController* wallpaper_controller);
|
| ~ShelfBackgroundAnimator() override;
|
|
|
| ShelfBackgroundType target_background_type() const {
|
| @@ -58,7 +67,7 @@ class ASH_EXPORT ShelfBackgroundAnimator : public WmShelfObserver,
|
| void NotifyObserver(ShelfBackgroundAnimatorObserver* observer);
|
|
|
| // Conditionally animates the background to the specified |background_type|
|
| - // and notifies observers of the new background parameters (e.g. alpha).
|
| + // and notifies observers of the new background parameters (e.g. color).
|
| // If |change_type| is BACKGROUND_CHANGE_IMMEDIATE then the
|
| // observers will only receive one notification with the final background
|
| // state, otherwise the observers will be notified multiple times in order to
|
| @@ -80,6 +89,10 @@ class ASH_EXPORT ShelfBackgroundAnimator : public WmShelfObserver,
|
| void OnBackgroundTypeChanged(ShelfBackgroundType background_type,
|
| AnimationChangeType change_type) override;
|
|
|
| + // WallpaperControllerObserver:
|
| + void OnWallpaperDataChanged() override;
|
| + void OnWallpaperColorsChanged() override;
|
| +
|
| private:
|
| friend class ShelfBackgroundAnimatorTestApi;
|
|
|
| @@ -90,30 +103,27 @@ class ASH_EXPORT ShelfBackgroundAnimator : public WmShelfObserver,
|
| AnimationValues();
|
| ~AnimationValues();
|
|
|
| - int current_alpha() const { return current_alpha_; }
|
| + SkColor current_color() const { return current_color_; }
|
| + SkColor target_color() const { return target_color_; }
|
|
|
| - // Updates the current values based on |t| value between 0 and 1.
|
| + // Updates the |current_color_| based on |t| value between 0 and 1.
|
| void UpdateCurrentValues(double t);
|
|
|
| - // Set the target values and assign the current values to the initial
|
| - // values.
|
| - void SetTargetValues(int target_alpha);
|
| + // Set the target color and assign the current color to the initial color.
|
| + void SetTargetValues(SkColor target_color);
|
|
|
| // Returns true if the initial values of |this| equal the target values of
|
| // |other|.
|
| bool InitialValuesEqualTargetValuesOf(const AnimationValues& other) const;
|
|
|
| private:
|
| - int initial_alpha_ = 0;
|
| - int current_alpha_ = 0;
|
| - int target_alpha_ = 0;
|
| + SkColor initial_color_ = SK_ColorTRANSPARENT;
|
| + SkColor current_color_ = SK_ColorTRANSPARENT;
|
| + SkColor target_color_ = SK_ColorTRANSPARENT;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(AnimationValues);
|
| };
|
|
|
| - // The maximum alpha value that can be used.
|
| - static const int kMaxAlpha = 255;
|
| -
|
| // Helper function used by PaintBackground() to animate the background.
|
| void AnimateBackground(ShelfBackgroundType background_type,
|
| AnimationChangeType change_type);
|
| @@ -149,6 +159,9 @@ class ASH_EXPORT ShelfBackgroundAnimator : public WmShelfObserver,
|
| // The shelf to observe for changes to the shelf background type, can be null.
|
| WmShelf* wm_shelf_;
|
|
|
| + // The wallpaper controller to observe for changes and to extract colors from.
|
| + WallpaperController* wallpaper_controller_;
|
| +
|
| // The background type that this is animating towards or has reached.
|
| ShelfBackgroundType target_background_type_ = SHELF_BACKGROUND_DEFAULT;
|
|
|
|
|