| // Copyright (c) 2012 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. |
| |
| #ifndef ASH_WM_WINDOW_ANIMATIONS_H_ |
| #define ASH_WM_WINDOW_ANIMATIONS_H_ |
| |
| #include "ash/ash_export.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "ui/gfx/animation/tween.h" |
| #include "ui/gfx/transform.h" |
| #include "ui/wm/core/window_animations.h" |
| |
| namespace aura { |
| class Window; |
| } |
| namespace ui { |
| class Layer; |
| class LayerTreeOwner; |
| } |
| namespace views { |
| } |
| |
| // This is only for animations specific to Ash. For window animations shared |
| // with desktop Chrome, see ui/views/corewm/window_animations.h. |
| namespace ash { |
| |
| // An extension of the window animations provided by CoreWm. These should be |
| // Ash-specific only. |
| enum WindowVisibilityAnimationType { |
| // Window scale/rotates down to its launcher icon. |
| WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE = |
| ::wm::WINDOW_VISIBILITY_ANIMATION_MAX, |
| // Fade in/out using brightness and grayscale web filters. |
| WINDOW_VISIBILITY_ANIMATION_TYPE_BRIGHTNESS_GRAYSCALE |
| }; |
| |
| // Direction for ash-specific window animations used in workspaces and |
| // lock/unlock animations. |
| enum LayerScaleAnimationDirection { |
| LAYER_SCALE_ANIMATION_ABOVE, |
| LAYER_SCALE_ANIMATION_BELOW, |
| }; |
| |
| // Amount of time for the cross fade animation. |
| extern const int kCrossFadeDurationMS; |
| |
| // Implementation of cross fading. Window is the window being cross faded. It |
| // should be at the target bounds. |old_layer_owner| contains the previous layer |
| // from |window|. |tween_type| specifies the tween type of the cross fade |
| // animation. |
| ASH_EXPORT base::TimeDelta CrossFadeAnimation( |
| aura::Window* window, |
| scoped_ptr<ui::LayerTreeOwner> old_layer_owner, |
| gfx::Tween::Type tween_type); |
| |
| ASH_EXPORT bool AnimateOnChildWindowVisibilityChanged(aura::Window* window, |
| bool visible); |
| |
| // Creates vector of animation sequences that lasts for |duration| and changes |
| // brightness and grayscale to |target_value|. Caller takes ownership of |
| // returned LayerAnimationSequence objects. |
| ASH_EXPORT std::vector<ui::LayerAnimationSequence*> |
| CreateBrightnessGrayscaleAnimationSequence(float target_value, |
| base::TimeDelta duration); |
| |
| // Applies scale related to the specified AshWindowScaleType. |
| ASH_EXPORT void SetTransformForScaleAnimation( |
| ui::Layer* layer, |
| LayerScaleAnimationDirection type); |
| |
| // Returns the approximate bounds to which |window| will be animated when it |
| // is minimized. The bounds are approximate because the minimize animation |
| // involves rotation. |
| ASH_EXPORT gfx::Rect GetMinimizeAnimationTargetBoundsInScreen( |
| aura::Window* window); |
| |
| } // namespace ash |
| |
| #endif // ASH_WM_WINDOW_ANIMATIONS_H_ |