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#ifndef ASH_WM_WINDOW_ANIMATIONS_H_ 6#define ASH_WM_WINDOW_ANIMATIONS_H_ 7 8#include "ash/ash_export.h" 9#include "base/memory/scoped_ptr.h" 10#include "ui/gfx/animation/tween.h" 11#include "ui/gfx/transform.h" 12#include "ui/wm/core/window_animations.h" 13 14namespace aura { 15class Window; 16} 17namespace ui { 18class Layer; 19class LayerTreeOwner; 20} 21namespace views { 22} 23 24// This is only for animations specific to Ash. For window animations shared 25// with desktop Chrome, see ui/views/corewm/window_animations.h. 26namespace ash { 27 28// An extension of the window animations provided by CoreWm. These should be 29// Ash-specific only. 30enum WindowVisibilityAnimationType { 31 // Window scale/rotates down to its launcher icon. 32 WINDOW_VISIBILITY_ANIMATION_TYPE_MINIMIZE = 33 ::wm::WINDOW_VISIBILITY_ANIMATION_MAX, 34 // Fade in/out using brightness and grayscale web filters. 35 WINDOW_VISIBILITY_ANIMATION_TYPE_BRIGHTNESS_GRAYSCALE 36}; 37 38// Direction for ash-specific window animations used in workspaces and 39// lock/unlock animations. 40enum LayerScaleAnimationDirection { 41 LAYER_SCALE_ANIMATION_ABOVE, 42 LAYER_SCALE_ANIMATION_BELOW, 43}; 44 45// Amount of time for the cross fade animation. 46extern const int kCrossFadeDurationMS; 47 48// Implementation of cross fading. Window is the window being cross faded. It 49// should be at the target bounds. |old_layer_owner| contains the previous layer 50// from |window|. |tween_type| specifies the tween type of the cross fade 51// animation. 52ASH_EXPORT base::TimeDelta CrossFadeAnimation( 53 aura::Window* window, 54 scoped_ptr<ui::LayerTreeOwner> old_layer_owner, 55 gfx::Tween::Type tween_type); 56 57ASH_EXPORT bool AnimateOnChildWindowVisibilityChanged(aura::Window* window, 58 bool visible); 59 60// Creates vector of animation sequences that lasts for |duration| and changes 61// brightness and grayscale to |target_value|. Caller takes ownership of 62// returned LayerAnimationSequence objects. 63ASH_EXPORT std::vector<ui::LayerAnimationSequence*> 64CreateBrightnessGrayscaleAnimationSequence(float target_value, 65 base::TimeDelta duration); 66 67// Applies scale related to the specified AshWindowScaleType. 68ASH_EXPORT void SetTransformForScaleAnimation( 69 ui::Layer* layer, 70 LayerScaleAnimationDirection type); 71 72// Returns the approximate bounds to which |window| will be animated when it 73// is minimized. The bounds are approximate because the minimize animation 74// involves rotation. 75ASH_EXPORT gfx::Rect GetMinimizeAnimationTargetBoundsInScreen( 76 aura::Window* window); 77 78} // namespace ash 79 80#endif // ASH_WM_WINDOW_ANIMATIONS_H_ 81