Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1497)

Unified Diff: remoting/host/chromeos/pixel_rotator.h

Issue 756643006: Remote assistance on Chrome OS Part IX - Input injection on Ozone (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Ozone_input_injection
Patch Set: Address wez's feedback Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/host/chromeos/pixel_rotator.h
diff --git a/remoting/host/chromeos/pixel_rotator.h b/remoting/host/chromeos/pixel_rotator.h
new file mode 100644
index 0000000000000000000000000000000000000000..cd1c07717cb32452e060873920195778d0fdd63b
--- /dev/null
+++ b/remoting/host/chromeos/pixel_rotator.h
@@ -0,0 +1,57 @@
+// 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_PIXEL_ROTATOR_H_
+#define REMOTING_HOST_CHROMEOS_PIXEL_ROTATOR_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 system transformation between the root
Wez 2014/12/06 01:55:17 coordinate transformations
kelvinp 2014/12/08 18:41:44 Done.
+// window coordinates and the native screen coordinates, according to the
+// current display rotation settings.
+//
+// The root window coordinate of a pixel is its relative location to the top
Wez 2014/12/06 01:55:17 Root window coordinates are expressed relative to
kelvinp 2014/12/08 18:41:44 Done.
+// left corner of the root window whereas the native screen coordinate is the
+// physical location of the pixel that is rendered on the display. Both
Wez 2014/12/06 01:55:17 What does "physical location" mean? Presumably you
kelvinp 2014/12/08 18:41:44 Done.
+// coordinates systems are always in device pixels.
+
+// The root window coordinate of a pixel is different from its native screen
+// coordinate when the display is rotated. For example, when the display is
+// rotated by 90 deg, the pixel located (x, y) in the window is rendered at
+// (height - y, x) on the display.
Wez 2014/12/06 01:55:17 This comment just seems a more specific example of
kelvinp 2014/12/08 18:41:44 Yes, it is always better to illustrate with an exa
+class PixelRotator : public aura::WindowObserver {
Wez 2014/12/06 01:55:17 This doesn't touch pixels, and it may translate as
+ public:
+ PixelRotator();
Wez 2014/12/06 01:55:17 Presumably the root window is bound when the ctor
kelvinp 2014/12/08 18:41:44 Yes
+ ~PixelRotator();
Wez 2014/12/06 01:55:17 override
kelvinp 2014/12/08 18:41:44 Done.
+
+ // aura::WindowObserver interface.
+ void OnWindowTransformed(aura::Window* window) override;
Wez 2014/12/06 01:55:17 Is this part of the PixelRotator interface? If not
kelvinp 2014/12/08 18:41:44 Done.
+
+ // Converts from the root window coordinate system to the native screen
+ // coordinate system.
+ gfx::PointF ToScreenPixel(const gfx::PointF& window_location);
+
+ // Converts from the native screen coordinate system to the root window
+ // coordinate system.
+ gfx::PointF FromScreenPixel(const gfx::PointF& screen_location);
+
+ private:
+ aura::Window* root_window_;
+ gfx::Transform transform_;
Wez 2014/12/06 01:55:17 suggest root_to_screen or root_to_native
kelvinp 2014/12/08 18:41:44 Done.
+ gfx::Transform inverse_;
Wez 2014/12/06 01:55:17 similarly here
kelvinp 2014/12/08 18:41:44 Done.
+
+ DISALLOW_COPY_AND_ASSIGN(PixelRotator);
+};
+
+} // namespace remoting
+
+#endif // REMOTING_HOST_CHROMEOS_PIXEL_ROTATOR_H_

Powered by Google App Engine
This is Rietveld 408576698