Index: remoting/host/chromeos/point_transformer.h |
diff --git a/remoting/host/chromeos/point_transformer.h b/remoting/host/chromeos/point_transformer.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a3a143273d8f29398a98dadd7816bce6c369c1ba |
--- /dev/null |
+++ b/remoting/host/chromeos/point_transformer.h |
@@ -0,0 +1,54 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef REMOTING_HOST_CHROMEOS_POINT_TRANSFORMER_H_ |
+#define REMOTING_HOST_CHROMEOS_POINT_TRANSFORMER_H_ |
+ |
+#include "ui/aura/window_observer.h" |
+#include "ui/gfx/geometry/point_f.h" |
+#include "ui/gfx/transform.h" |
+ |
+namespace aura { |
+class Window; |
+} // namespace aura |
+ |
+namespace remoting { |
+ |
+// A class that performs coordinates transformations between the root window |
Wez
2014/12/09 01:36:44
coordinate
kelvinp
2014/12/09 20:24:18
Done.
|
+// coordinates and the native screen coordinates, according to the current |
+// display rotation settings. |
+// |
+// Root window coordinates are expressed relative to the top left corner of the |
+// root window whereas native screen coordinates are expressed relative to the |
+// top left corner of the frame buffer, which may not match the root window |
+// either in origin nor orientation. Both coordinates systems are always in |
Wez
2014/12/09 01:36:44
coordinate
kelvinp
2014/12/09 20:24:18
Done.
|
+// device pixels. |
+// |
+// For example, when the display is rotated by 90 deg, the pixel at root window |
+// coordinates (x, y) will have native screen coordinates (height - y, x). |
+class PointTransformer : public aura::WindowObserver { |
+ public: |
+ PointTransformer(); |
+ ~PointTransformer() override; |
+ |
+ // Converts from root window coordinates to native screen coordinates. |
+ gfx::PointF ToScreenCoordinates(const gfx::PointF& window_location); |
+ |
+ // Converts from native screen coordinates to root window coordinates. |
+ gfx::PointF FromScreenCoordinates(const gfx::PointF& screen_location); |
+ |
+ private: |
+ // aura::WindowObserver interface. |
+ void OnWindowTransformed(aura::Window* window) override; |
+ |
+ aura::Window* root_window_; |
+ gfx::Transform root_to_screen_; |
+ gfx::Transform screen_to_root_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PointTransformer); |
+}; |
+ |
+} // namespace remoting |
+ |
+#endif // REMOTING_HOST_CHROMEOS_POINT_TRANSFORMER_H_ |