OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013 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_TOUCH_EVENT_CONVERTER_OZONE_H_ | |
6 #define UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_OZONE_H_ | |
7 | |
8 #include <bitset> | |
9 | |
10 #include "base/compiler_specific.h" | |
11 #include "ui/events/event_constants.h" | |
12 #include "ui/events/events_export.h" | |
13 #include "ui/events/ozone/event_converter_ozone.h" | |
14 | |
15 namespace ui { | |
16 | |
17 class TouchEvent; | |
18 | |
19 class EVENTS_EXPORT TouchEventConverterOzone : public EventConverterOzone { | |
20 public: | |
21 enum { | |
22 MAX_FINGERS = 11 | |
23 }; | |
24 TouchEventConverterOzone(int fd, int id); | |
25 virtual ~TouchEventConverterOzone(); | |
26 | |
27 private: | |
28 friend class MockTouchEventConverterOzone; | |
29 | |
30 // Unsafe part of initialization. | |
31 void Init(); | |
32 | |
33 // Overidden from base::MessagePumpLibevent::Watcher. | |
34 virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE; | |
35 virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE; | |
36 | |
37 // Pressure values. | |
38 int pressure_min_; | |
39 int pressure_max_; // Used to normalize pressure values. | |
40 | |
41 // Touch scaling. | |
42 float x_scale_; | |
43 float y_scale_; | |
44 | |
45 // Maximum coordinate-values allowed for the events. | |
46 int x_max_; | |
47 int y_max_; | |
48 | |
49 // Touch point currently being updated from the /dev/input/event* stream. | |
50 int current_slot_; | |
51 | |
52 // File descriptor for the /dev/input/event* instance. | |
53 int fd_; | |
54 | |
55 // Number corresponding to * in the source evdev device: /dev/input/event* | |
56 int id_; | |
57 | |
58 // Bit field tracking which in-progress touch points have been modified | |
59 // without a syn event. | |
60 std::bitset<MAX_FINGERS> altered_slots_; | |
61 | |
62 struct InProgressEvents { | |
63 int x_; | |
64 int y_; | |
65 int id_; // Device reported "unique" touch point id; -1 means not active | |
66 int finger_; // "Finger" id starting from 0; -1 means not active | |
67 | |
68 EventType type_; | |
69 int major_; | |
70 float pressure_; | |
71 }; | |
72 | |
73 // In-progress touch points. | |
74 InProgressEvents events_[MAX_FINGERS]; | |
75 | |
76 DISALLOW_COPY_AND_ASSIGN(TouchEventConverterOzone); | |
77 }; | |
78 | |
79 } // namespace ui | |
80 | |
81 #endif // UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_OZONE_H_ | |
82 | |
OLD | NEW |