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
10namespace gfx {
11class Insets;
12class Rect;
13class Size;
14class Transform;
15}
16
17namespace ash {
18
19// RootWindowTransformer controls how RootWindow should be placed and
20// transformed inside the host window.
21class 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