OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_EXO_POINTER_H_ | 5 #ifndef COMPONENTS_EXO_POINTER_H_ |
6 #define COMPONENTS_EXO_POINTER_H_ | 6 #define COMPONENTS_EXO_POINTER_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 20 matching lines...) Expand all Loading... | |
31 } | 31 } |
32 | 32 |
33 namespace exo { | 33 namespace exo { |
34 class PointerDelegate; | 34 class PointerDelegate; |
35 class Surface; | 35 class Surface; |
36 | 36 |
37 // This class implements a client pointer that represents one or more input | 37 // This class implements a client pointer that represents one or more input |
38 // devices, such as mice, which control the pointer location and pointer focus. | 38 // devices, such as mice, which control the pointer location and pointer focus. |
39 class Pointer : public ui::EventHandler, | 39 class Pointer : public ui::EventHandler, |
40 public WMHelper::CursorObserver, | 40 public WMHelper::CursorObserver, |
41 public WMHelper::DisplayConfigurationObserver, | |
41 public SurfaceDelegate, | 42 public SurfaceDelegate, |
42 public SurfaceObserver { | 43 public SurfaceObserver { |
43 public: | 44 public: |
44 explicit Pointer(PointerDelegate* delegate); | 45 explicit Pointer(PointerDelegate* delegate); |
45 ~Pointer() override; | 46 ~Pointer() override; |
46 | 47 |
47 // Set the pointer surface, i.e., the surface that contains the pointer image | 48 // Set the pointer surface, i.e., the surface that contains the pointer image |
48 // (cursor). The |hotspot| argument defines the position of the pointer | 49 // (cursor). The |hotspot| argument defines the position of the pointer |
49 // surface relative to the pointer location. Its top-left corner is always at | 50 // surface relative to the pointer location. Its top-left corner is always at |
50 // (x, y) - (hotspot.x, hotspot.y), where (x, y) are the coordinates of the | 51 // (x, y) - (hotspot.x, hotspot.y), where (x, y) are the coordinates of the |
51 // pointer location, in surface local coordinates. | 52 // pointer location, in surface local coordinates. |
52 void SetCursor(Surface* surface, const gfx::Point& hotspot); | 53 void SetCursor(Surface* surface, const gfx::Point& hotspot); |
53 | 54 |
54 // Returns the current cursor for the pointer. | 55 // Returns the current cursor for the pointer. |
55 gfx::NativeCursor GetCursor(); | 56 gfx::NativeCursor GetCursor(); |
56 | 57 |
57 // Overridden from ui::EventHandler: | 58 // Overridden from ui::EventHandler: |
58 void OnMouseEvent(ui::MouseEvent* event) override; | 59 void OnMouseEvent(ui::MouseEvent* event) override; |
59 void OnScrollEvent(ui::ScrollEvent* event) override; | 60 void OnScrollEvent(ui::ScrollEvent* event) override; |
60 | 61 |
61 // Overridden from WMHelper::CursorObserver: | 62 // Overridden from WMHelper::CursorObserver: |
62 void OnCursorSetChanged(ui::CursorSetType cursor_set) override; | 63 void OnCursorSetChanged(ui::CursorSetType cursor_set) override; |
63 void OnCursorDisplayChanged(const display::Display& display) override; | 64 void OnCursorDisplayChanged(const display::Display& display) override; |
64 | 65 |
66 // Overridden from WMHelper::DisplayConfigurationObserver: | |
67 void OnDisplayConfigurationChanged() override; | |
68 | |
65 // Overridden from SurfaceDelegate: | 69 // Overridden from SurfaceDelegate: |
66 void OnSurfaceCommit() override; | 70 void OnSurfaceCommit() override; |
67 bool IsSurfaceSynchronized() const override; | 71 bool IsSurfaceSynchronized() const override; |
68 | 72 |
69 // Overridden from SurfaceObserver: | 73 // Overridden from SurfaceObserver: |
70 void OnSurfaceDestroying(Surface* surface) override; | 74 void OnSurfaceDestroying(Surface* surface) override; |
71 | 75 |
72 private: | 76 private: |
73 // Returns the effective target for |event|. | 77 // Returns the effective target for |event|. |
74 Surface* GetEffectiveTargetForEvent(ui::Event* event) const; | 78 Surface* GetEffectiveTargetForEvent(ui::Event* event) const; |
75 | 79 |
80 void UpdatePointerSurface(Surface* surface); | |
reveman
2017/06/13 00:06:45
nit: short comment here for consistency
Dominik Laskowski
2017/06/13 17:53:11
Done.
| |
81 | |
76 // Asynchronously update the cursor by capturing a snapshot of |surface_|. | 82 // Asynchronously update the cursor by capturing a snapshot of |surface_|. |
77 void CaptureCursor(const gfx::Point& hotspot); | 83 void CaptureCursor(const gfx::Point& hotspot); |
78 | 84 |
79 // Called when cursor snapshot has been captured. | 85 // Called when cursor snapshot has been captured. |
80 void OnCursorCaptured(const gfx::Point& hotspot, | 86 void OnCursorCaptured(const gfx::Point& hotspot, |
81 std::unique_ptr<cc::CopyOutputResult> result); | 87 std::unique_ptr<cc::CopyOutputResult> result); |
82 | 88 |
83 // Update |cursor_| to |cursor_bitmap_| transformed for the current display. | 89 // Update |cursor_| to |cursor_bitmap_| transformed for the current display. |
84 void UpdateCursor(); | 90 void UpdateCursor(); |
85 | 91 |
(...skipping 26 matching lines...) Expand all Loading... | |
112 | 118 |
113 // Weak pointer factory used for cursor capture callbacks. | 119 // Weak pointer factory used for cursor capture callbacks. |
114 base::WeakPtrFactory<Pointer> cursor_capture_weak_ptr_factory_; | 120 base::WeakPtrFactory<Pointer> cursor_capture_weak_ptr_factory_; |
115 | 121 |
116 DISALLOW_COPY_AND_ASSIGN(Pointer); | 122 DISALLOW_COPY_AND_ASSIGN(Pointer); |
117 }; | 123 }; |
118 | 124 |
119 } // namespace exo | 125 } // namespace exo |
120 | 126 |
121 #endif // COMPONENTS_EXO_POINTER_H_ | 127 #endif // COMPONENTS_EXO_POINTER_H_ |
OLD | NEW |