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_TRANSFORMER_HELPER_H_
      6 #define ASH_HOST_TRANSFORMER_HELPER_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 
     10 namespace gfx {
     11 class Insets;
     12 class Size;
     13 class Transform;
     14 }
     15 
     16 namespace ash {
     17 class AshWindowTreeHost;
     18 class RootWindowTransformer;
     19 
     20 // A helper class to handle ash specific feature that requires
     21 // transforming a root window (such as rotation, UI zooming).
     22 class 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