1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file. 4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 5a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#ifndef ASH_HOST_TRANSFORMER_HELPER_H_ 6a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#define ASH_HOST_TRANSFORMER_HELPER_H_ 7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/memory/scoped_ptr.h" 9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace gfx { 11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass Insets; 12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass Size; 13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass Transform; 14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace ash { 17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass AshWindowTreeHost; 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass RootWindowTransformer; 19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// A helper class to handle ash specific feature that requires 21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// transforming a root window (such as rotation, UI zooming). 22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass TransformerHelper { 23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch public: 24a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch explicit TransformerHelper(AshWindowTreeHost* ash_host); 25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ~TransformerHelper(); 26a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Returns the the insets that specifies the effective root window 28a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // area within the host window. 29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::Insets GetHostInsets() const; 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Sets a simple transform with no host insets. 32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void SetTransform(const gfx::Transform& transform); 33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 34a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Sets a RootWindowTransformer which takes the insets into account. 35a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void SetRootWindowTransformer(scoped_ptr<RootWindowTransformer> transformer); 36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Returns the transforms applied to the root window. 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::Transform GetTransform() const; 39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::Transform GetInverseTransform() const; 40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Updates the root window size based on the host size and 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // current transform. 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch void UpdateWindowSize(const gfx::Size& host_size); 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch private: 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch AshWindowTreeHost* ash_host_; 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<RootWindowTransformer> transformer_; 48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DISALLOW_COPY_AND_ASSIGN(TransformerHelper); 50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}; 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} // namespace ash 53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif // ASH_HOST_TRANSFORMER_HELPER_H_ 55