Home | History | Annotate | Download | only in host
      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