1// Copyright 2014 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_HOST_TRANSFORMER_HELPER_H_ 6#define ASH_HOST_TRANSFORMER_HELPER_H_ 7 8#include "base/memory/scoped_ptr.h" 9 10namespace gfx { 11class Insets; 12class Size; 13class Transform; 14} 15 16namespace ash { 17class AshWindowTreeHost; 18class RootWindowTransformer; 19 20// A helper class to handle ash specific feature that requires 21// transforming a root window (such as rotation, UI zooming). 22class TransformerHelper { 23 public: 24 explicit TransformerHelper(AshWindowTreeHost* ash_host); 25 ~TransformerHelper(); 26 27 // Returns the the insets that specifies the effective root window 28 // area within the host window. 29 gfx::Insets GetHostInsets() const; 30 31 // Sets a simple transform with no host insets. 32 void SetTransform(const gfx::Transform& transform); 33 34 // Sets a RootWindowTransformer which takes the insets into account. 35 void SetRootWindowTransformer(scoped_ptr<RootWindowTransformer> transformer); 36 37 // Returns the transforms applied to the root window. 38 gfx::Transform GetTransform() const; 39 gfx::Transform GetInverseTransform() const; 40 41 // Updates the root window size based on the host size and 42 // current transform. 43 void UpdateWindowSize(const gfx::Size& host_size); 44 45 private: 46 AshWindowTreeHost* ash_host_; 47 scoped_ptr<RootWindowTransformer> transformer_; 48 49 DISALLOW_COPY_AND_ASSIGN(TransformerHelper); 50}; 51 52} // namespace ash 53 54#endif // ASH_HOST_TRANSFORMER_HELPER_H_ 55