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_ROOT_WINDOW_TRANSFORMER_H_ 6 #define ASH_HOST_ROOT_WINDOW_TRANSFORMER_H_ 7 8 #include "ash/ash_export.h" 9 10 namespace gfx { 11 class Insets; 12 class Rect; 13 class Size; 14 class Transform; 15 } 16 17 namespace ash { 18 19 // RootWindowTransformer controls how RootWindow should be placed and 20 // transformed inside the host window. 21 class ASH_EXPORT RootWindowTransformer { 22 public: 23 virtual ~RootWindowTransformer() {} 24 25 // Returns the transform the root window in DIP. 26 virtual gfx::Transform GetTransform() const = 0; 27 28 // Returns the inverse of the transform above. This method is to 29 // provie an accurate inverse of the transform because the result of 30 // |gfx::Transform::GetInverse| may contains computational error. 31 virtual gfx::Transform GetInverseTransform() const = 0; 32 33 // Returns the root window's bounds for given host window size in DIP. 34 // This is necessary to handle the case where the root window's size 35 // is bigger than the host window. (Screen magnifier for example). 36 virtual gfx::Rect GetRootWindowBounds(const gfx::Size& host_size) const = 0; 37 38 // Returns the insets that specifies the effective area of 39 // the host window. 40 virtual gfx::Insets GetHostInsets() const = 0; 41 }; 42 43 } // namespace ash 44 45 #endif // ASH_HOST_ROOT_WINDOW_TRANSFORMER_H_ 46