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

Unified Diff: chrome/browser/android/vr_shell/vr_gesture.h

Issue 2350253004: Controller support for VrShell (Closed)
Patch Set: removed unused files Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/vr_shell/vr_gesture.h
diff --git a/chrome/browser/android/vr_shell/vr_gesture.h b/chrome/browser/android/vr_shell/vr_gesture.h
new file mode 100644
index 0000000000000000000000000000000000000000..f616ad216e72f827f6cb6061f08493aa25eb5f64
--- /dev/null
+++ b/chrome/browser/android/vr_shell/vr_gesture.h
@@ -0,0 +1,145 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_
+#define CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_
+
+#include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/gvr_types.h"
+
+typedef enum {
+ GESTURE_DIRECTION_UP,
+ GESTURE_DIRECTION_DOWN,
+ GESTURE_DIRECTION_LEFT,
+ GESTURE_DIRECTION_RIGHT
+} gesture_direction;
+
+typedef struct {
+ float dx, dy, dz;
+ float x, y;
+ float ordinal_dx, ordinal_dy, ordinal_dz;
+ int type;
+} GestureAngularMove;
+
+typedef struct {
+ float dx, dy;
+ float ordinal_dx, ordinal_dy;
+ // If set, stop_fling means that this scroll should stop flinging, thus
+ // if an interpreter suppresses it for any reason (e.g., rounds the size
+ // down to 0, thus making it a noop), it will replace it with a Fling
+ // TAP_DOWN gesture
+ int state;
+ unsigned stop_fling : 1;
+ float initial_touch_pos_x;
+ float initial_touch_pos_y;
+} GestureScroll;
+
+typedef struct {
+ // fling velocity (valid when fling_state is GESTURES_FLING_START):
+ float vx, vy;
+ float ordinal_vx, ordinal_vy;
+ unsigned fling_state : 1; // GESTURES_FLING_START or GESTURES_FLING_TAP_DOWN
+} GestureFling;
+
+typedef struct {
+ // zoom size; dz=1 means no zoom, dz < 1 means zoom-out, dz > 1 means zoom-in
+ float dz;
+} GestureZoom;
+
+typedef struct {
+ // If a bit is set in both down and up, client should process down first
+ int x;
+ int y;
+ unsigned down; // bit field, use GESTURES_BUTTON_*
+ unsigned up; // bit field, use GESTURES_BUTTON_*
+} GestureButtonsChange;
+
+enum GestureType {
+ kGestureTypeNull,
+ kGestureTypeAngularMove,
+ kGestureTypeScroll,
+ kGestureTypeButtonsChange,
+ kGestureTypeFling,
+ kGestureTypeZoom,
+};
+
+struct VrGesture {
+ VrGesture() : type(kGestureTypeNull) {}
+ VrGesture(const GestureAngularMove&,
+ int64_t start,
+ int64_t end,
+ gvr_quatf quat)
mthiesse 2016/09/22 16:20:11 gvr:: types throughout
asimjour 2016/09/22 22:55:16 Done.
+ : start_time(start),
+ end_time(end),
+ type(kGestureTypeAngularMove),
+ quat(quat) {}
+ VrGesture(const GestureScroll&,
+ int64_t start,
+ int64_t end,
+ float dx,
+ float dy,
+ int state,
+ gvr_quatf quat)
+ : start_time(start), end_time(end), type(kGestureTypeScroll), quat(quat) {
+ details.scroll.ordinal_dx = details.scroll.dx = dx;
+ details.scroll.ordinal_dy = details.scroll.dy = dy;
+ details.scroll.state = state;
+ details.scroll.stop_fling = 0;
+ }
+ VrGesture(const GestureButtonsChange&,
+ int64_t start,
+ int64_t end,
+ unsigned down,
+ unsigned up,
+ gvr_quatf quat)
+ : start_time(start),
+ end_time(end),
+ type(kGestureTypeButtonsChange),
+ quat(quat) {
+ details.buttons.down = down;
+ details.buttons.up = up;
+ details.buttons.x = 0;
+ details.buttons.y = 0;
+ }
+ VrGesture(const GestureFling&,
+ int64_t start,
+ int64_t end,
+ float vx,
+ float vy,
+ unsigned state,
+ gvr_quatf quat)
+ : start_time(start), end_time(end), type(kGestureTypeFling), quat(quat) {
+ details.fling.ordinal_vx = details.fling.vx = vx;
+ details.fling.ordinal_vy = details.fling.vy = vy;
+ details.fling.fling_state = state;
+ }
+ VrGesture(const GestureZoom&,
+ int64_t start,
+ int64_t end,
+ float dz,
+ gvr_quatf quat)
+ : start_time(start), end_time(end), type(kGestureTypeZoom), quat(quat) {
+ details.zoom.dz = dz;
+ }
+
+ int64_t start_time, end_time;
+ enum GestureType type;
+ union {
+ GestureScroll scroll;
+ GestureButtonsChange buttons;
+ GestureFling fling;
+ GestureZoom zoom;
+ GestureAngularMove move;
+ } details;
+ gvr_quatf quat;
+ gvr_vec2f velocity;
+ gvr_vec2f displacement;
+ gesture_direction direction;
+};
+
+const GestureScroll kGestureScroll = {0, 0, 0, 0, 0, 0};
+const GestureButtonsChange kGestureButtonsChange = {0, 0, 0, 0};
+const GestureAngularMove kGestureAngularMove = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+const GestureZoom kGestureZoom = {0};
+
+#endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_GESTURE_H_

Powered by Google App Engine
This is Rietveld 408576698