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

Side by Side Diff: ui/events/ozone/evdev/libgestures_glue/gesture_interpreter_libevdev_cros.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months 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 unified diff | Download patch
OLDNEW
(Empty)
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 UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_CROS _H_
6 #define UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_CROS _H_
7
8 #include <gestures/gestures.h>
9 #include <libevdev/libevdev.h>
10
11 #include "base/callback.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "ui/events/ozone/evdev/cursor_delegate_evdev.h"
14 #include "ui/events/ozone/evdev/event_device_util.h"
15 #include "ui/events/ozone/evdev/event_dispatch_callback.h"
16 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
17 #include "ui/events/ozone/evdev/libgestures_glue/event_reader_libevdev_cros.h"
18
19 namespace ui {
20
21 class EventDeviceInfo;
22 class EventModifiersEvdev;
23 class CursorDelegateEvdev;
24 class KeyboardEvdev;
25 class GestureDeviceProperties;
26 class GesturePropertyProvider;
27
28 // Convert libevdev-cros events to ui::Events using libgestures.
29 //
30 // This builds a GestureInterpreter for an input device (touchpad or
31 // mouse).
32 //
33 // Raw input events must be preprocessed into a form suitable for
34 // libgestures. The kernel protocol only emits changes to the device state,
35 // so changes must be accumulated until a sync event. The full device state
36 // at sync is then processed by libgestures.
37 //
38 // Once we have the state at sync, we convert it to a HardwareState object
39 // and forward it to libgestures. If any gestures are produced, they are
40 // converted to ui::Events and dispatched.
41 class EVENTS_OZONE_EVDEV_EXPORT GestureInterpreterLibevdevCros
42 : public EventReaderLibevdevCros::Delegate {
43 public:
44 GestureInterpreterLibevdevCros(int id,
45 EventModifiersEvdev* modifiers,
46 CursorDelegateEvdev* cursor,
47 KeyboardEvdev* keyboard,
48 GesturePropertyProvider* property_provider,
49 const EventDispatchCallback& callback);
50 virtual ~GestureInterpreterLibevdevCros();
51
52 // Overriden from ui::EventReaderLibevdevCros::Delegate
53 virtual void OnLibEvdevCrosOpen(Evdev* evdev,
54 EventStateRec* evstate) override;
55 virtual void OnLibEvdevCrosEvent(Evdev* evdev,
56 EventStateRec* evstate,
57 const timeval& time) override;
58
59 // Handler for gesture events generated from libgestures.
60 void OnGestureReady(const Gesture* gesture);
61
62 // Accessors.
63 int id() { return id_; }
64 GesturePropertyProvider* property_provider() { return property_provider_; }
65 Evdev* evdev() { return evdev_; }
66
67 private:
68 void OnGestureMove(const Gesture* gesture, const GestureMove* move);
69 void OnGestureScroll(const Gesture* gesture, const GestureScroll* move);
70 void OnGestureButtonsChange(const Gesture* gesture,
71 const GestureButtonsChange* move);
72 void OnGestureContactInitiated(const Gesture* gesture);
73 void OnGestureFling(const Gesture* gesture, const GestureFling* fling);
74 void OnGestureSwipe(const Gesture* gesture, const GestureSwipe* swipe);
75 void OnGestureSwipeLift(const Gesture* gesture,
76 const GestureSwipeLift* swipelift);
77 void OnGesturePinch(const Gesture* gesture, const GesturePinch* pinch);
78 void OnGestureMetrics(const Gesture* gesture, const GestureMetrics* metrics);
79
80 void Dispatch(scoped_ptr<Event> event);
81 void DispatchMouseButton(unsigned int modifier, bool down);
82 void DispatchChangedKeys(Evdev* evdev, const timeval& time);
83
84 // The unique device id.
85 int id_;
86
87 // Shared modifier state.
88 EventModifiersEvdev* modifiers_;
89
90 // Shared cursor state.
91 CursorDelegateEvdev* cursor_;
92
93 // Shared keyboard state.
94 KeyboardEvdev* keyboard_;
95
96 // Shared gesture property provider.
97 GesturePropertyProvider* property_provider_;
98
99 // Callback for dispatching events.
100 EventDispatchCallback dispatch_callback_;
101
102 // Gestures interpretation state.
103 gestures::GestureInterpreter* interpreter_;
104
105 // Last key state from libevdev.
106 unsigned long prev_key_state_[EVDEV_BITS_TO_LONGS(KEY_CNT)];
107
108 // Device pointer.
109 Evdev* evdev_;
110
111 // Gesture lib device properties.
112 scoped_ptr<GestureDeviceProperties> device_properties_;
113
114 DISALLOW_COPY_AND_ASSIGN(GestureInterpreterLibevdevCros);
115 };
116
117 } // namspace ui
118
119 #endif // UI_EVENTS_OZONE_EVDEV_LIBGESTURES_GLUE_GESTURE_INTERPRETER_LIBEVDEV_C ROS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698