| 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 // Updates the |surface_| from which the cursor is captured. |
| 81 void UpdatePointerSurface(Surface* surface); |
| 82 |
| 76 // Asynchronously update the cursor by capturing a snapshot of |surface_|. | 83 // Asynchronously update the cursor by capturing a snapshot of |surface_|. |
| 77 void CaptureCursor(const gfx::Point& hotspot); | 84 void CaptureCursor(const gfx::Point& hotspot); |
| 78 | 85 |
| 79 // Called when cursor snapshot has been captured. | 86 // Called when cursor snapshot has been captured. |
| 80 void OnCursorCaptured(const gfx::Point& hotspot, | 87 void OnCursorCaptured(const gfx::Point& hotspot, |
| 81 std::unique_ptr<cc::CopyOutputResult> result); | 88 std::unique_ptr<cc::CopyOutputResult> result); |
| 82 | 89 |
| 83 // Update |cursor_| to |cursor_bitmap_| transformed for the current display. | 90 // Update |cursor_| to |cursor_bitmap_| transformed for the current display. |
| 84 void UpdateCursor(); | 91 void UpdateCursor(); |
| 85 | 92 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 112 | 119 |
| 113 // Weak pointer factory used for cursor capture callbacks. | 120 // Weak pointer factory used for cursor capture callbacks. |
| 114 base::WeakPtrFactory<Pointer> cursor_capture_weak_ptr_factory_; | 121 base::WeakPtrFactory<Pointer> cursor_capture_weak_ptr_factory_; |
| 115 | 122 |
| 116 DISALLOW_COPY_AND_ASSIGN(Pointer); | 123 DISALLOW_COPY_AND_ASSIGN(Pointer); |
| 117 }; | 124 }; |
| 118 | 125 |
| 119 } // namespace exo | 126 } // namespace exo |
| 120 | 127 |
| 121 #endif // COMPONENTS_EXO_POINTER_H_ | 128 #endif // COMPONENTS_EXO_POINTER_H_ |
| OLD | NEW |