OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ | 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ |
6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ | 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ |
7 | 7 |
8 #include "third_party/WebKit/public/web/WebInputEvent.h" | 8 #include "third_party/WebKit/public/web/WebInputEvent.h" |
9 #include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/g
vr_types.h" | 9 #include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/g
vr_types.h" |
10 | 10 |
11 using blink::WebInputEvent; | 11 using blink::WebInputEvent; |
12 | 12 |
13 namespace vr_shell { | 13 namespace vr_shell { |
14 | 14 |
15 typedef enum { | |
16 GESTURE_DIRECTION_UP, | |
17 GESTURE_DIRECTION_DOWN, | |
18 GESTURE_DIRECTION_LEFT, | |
19 GESTURE_DIRECTION_RIGHT | |
20 } gesture_direction; | |
21 | |
22 typedef struct { | 15 typedef struct { |
23 gvr_vec3f delta; | 16 gvr_vec3f delta; |
24 int type; | 17 int type; |
25 } GestureAngularMove; | 18 } GestureAngularMove; |
26 | 19 |
27 typedef struct { | 20 typedef struct { |
28 gvr_vec2f delta; | 21 gvr_vec2f delta; |
29 | 22 |
30 // If set, stop_fling means that this scroll should stop flinging, thus | 23 // If set, stop_fling means that this scroll should stop flinging, thus |
31 // if an interpreter suppresses it for any reason (e.g., rounds the size | 24 // if an interpreter suppresses it for any reason (e.g., rounds the size |
32 // down to 0, thus making it a noop), it will replace it with a Fling | 25 // down to 0, thus making it a noop), it will replace it with a Fling |
33 // TAP_DOWN gesture | 26 // TAP_DOWN gesture |
34 unsigned stop_fling : 1; | 27 unsigned stop_fling : 1; |
35 gvr_vec2f initial_touch_pos; | 28 gvr_vec2f initial_touch_pos; |
36 } GestureScroll; | 29 } GestureScroll; |
37 | 30 |
38 typedef struct { | 31 typedef struct { |
39 // If a bit is set in both down and up, client should process down first | 32 // If a bit is set in both down and up, client should process down first |
40 gvr_vec2f pos; | 33 gvr_vec2f pos; |
41 unsigned down; // bit field, use GESTURES_BUTTON_* | 34 unsigned down; // bit field, use GESTURES_BUTTON_* |
42 unsigned up; // bit field, use GESTURES_BUTTON_* | 35 unsigned up; // bit field, use GESTURES_BUTTON_* |
43 } GestureButtonsChange; | 36 } GestureButtonsChange; |
44 | 37 |
45 struct VrGesture { | 38 struct VrGesture { |
46 VrGesture() : type(WebInputEvent::Undefined) {} | 39 VrGesture() : start_time(0), end_time(0), |
47 VrGesture(const GestureAngularMove&, | 40 type(WebInputEvent::Undefined) {} |
48 int64_t start, | |
49 int64_t end, | |
50 gvr::Quatf quat) | |
51 : start_time(start), | |
52 end_time(end), | |
53 type(WebInputEvent::MouseMove), | |
54 quat(quat) {} | |
55 VrGesture(const GestureScroll&, | |
56 int64_t start, | |
57 int64_t end, | |
58 float dx, | |
59 float dy, | |
60 WebInputEvent::Type state, | |
61 gvr::Quatf quat) | |
62 : start_time(start), end_time(end), type(state), quat(quat) { | |
63 details.scroll.delta.x = dx; | |
64 details.scroll.delta.y = dy; | |
65 details.scroll.stop_fling = 0; | |
66 } | |
67 VrGesture(const GestureButtonsChange&, | |
68 int64_t start, | |
69 int64_t end, | |
70 unsigned down, | |
71 unsigned up, | |
72 gvr::Quatf quat) | |
73 : start_time(start), | |
74 end_time(end), | |
75 type(WebInputEvent::GestureTap), | |
76 quat(quat) { | |
77 details.buttons.down = down; | |
78 details.buttons.up = up; | |
79 details.buttons.pos.x = 0; | |
80 details.buttons.pos.y = 0; | |
81 } | |
82 | |
83 int64_t start_time, end_time; | 41 int64_t start_time, end_time; |
84 enum WebInputEvent::Type type; | 42 enum WebInputEvent::Type type; |
85 union { | 43 union { |
86 GestureScroll scroll; | 44 GestureScroll scroll; |
87 GestureButtonsChange buttons; | 45 GestureButtonsChange buttons; |
88 GestureAngularMove move; | 46 GestureAngularMove move; |
89 } details; | 47 } details; |
90 gvr::Quatf quat; | |
91 gvr::Vec2f velocity; | 48 gvr::Vec2f velocity; |
92 gvr::Vec2f displacement; | 49 gvr::Vec2f displacement; |
93 gesture_direction direction; | |
94 }; | 50 }; |
95 | 51 |
96 } // namespace vr_shell | 52 } // namespace vr_shell |
97 | 53 |
98 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ | 54 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_ |
OLD | NEW |