12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_WM_PUBLIC_ANIMATION_HOST_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_WM_PUBLIC_ANIMATION_HOST_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/aura_export.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace gfx { 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Vector2d; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace aura { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Window; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace client { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Interface for top level window host of animation. Communicates additional 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// bounds required for animation as well as animation completion for deferring 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// window closes on hide. 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AURA_EXPORT AnimationHost { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Ensure the host window is at least this large so that transitions have 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // sufficient space. 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // The |top_left_delta| parameter contains the offset to be subtracted from 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // the window bounds for the top left corner. 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // The |bottom_right_delta| parameter contains the offset to be added to the 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // window bounds for the bottom right. 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void SetHostTransitionOffsets( 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const gfx::Vector2d& top_left_delta, 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const gfx::Vector2d& bottom_right_delta) = 0; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called after the window has faded out on a hide. 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnWindowHidingAnimationCompleted() = 0; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~AnimationHost() {} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AURA_EXPORT void SetAnimationHost(Window* window, 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AnimationHost* animation_host); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AURA_EXPORT AnimationHost* GetAnimationHost(Window* window); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace client 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace aura 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // UI_WM_PUBLIC_ANIMATION_HOST_H_ 49