Index: public/platform/WebVR.h |
diff --git a/public/platform/WebVR.h b/public/platform/WebVR.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fbff92028c1ef3709e0cb1327d66f277ec308511 |
--- /dev/null |
+++ b/public/platform/WebVR.h |
@@ -0,0 +1,112 @@ |
+// Copyright 2015 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 WebVR_h |
+#define WebVR_h |
+ |
+#include "WebCommon.h" |
+ |
+#if BLINK_IMPLEMENTATION |
+#include "wtf/Assertions.h" |
+#endif |
+ |
+namespace blink { |
+ |
+struct WebVRVector3 { |
+ float x, y, z; |
+}; |
+ |
+struct WebVRVector4 { |
+ float x, y, z, w; |
+}; |
+ |
+// A field of view, given by 4 degrees describing the view from a center point. |
+struct WebVRFieldOfView { |
+ float upDegrees; |
+ float downDegrees; |
+ float leftDegrees; |
+ float rightDegrees; |
+}; |
+ |
+// Bit flags to indicate which fields of an WebHMDSensorState are valid. |
+enum WebVRSensorStateFlags { |
+ WebVRSensorStateOrientation = 1 << 1, |
+ WebVRSensorStatePosition = 1 << 2, |
+ WebVRSensorStateAngularVelocity = 1 << 3, |
+ WebVRSensorStateLinearVelocity = 1 << 4, |
+ WebVRSensorStateAngularAcceleration = 1 << 5, |
+ WebVRSensorStateLinearAcceleration = 1 << 6, |
+ WebVRSensorStateComplete = (1 << 7) - 1 // All previous states combined. |
+}; |
+ |
+// A bitfield of WebVRSensorStateFlags. |
+typedef int WebVRSensorStateMask; |
+ |
+// A sensor's position, orientation, velocity, and acceleration state at the |
+// given timestamp. |
+struct WebHMDSensorState { |
+ double timestamp; |
+ unsigned frameIndex; |
+ WebVRSensorStateMask flags; |
+ WebVRVector4 orientation; |
+ WebVRVector3 position; |
+ WebVRVector3 angularVelocity; |
+ WebVRVector3 linearVelocity; |
+ WebVRVector3 angularAcceleration; |
+ WebVRVector3 linearAcceleration; |
+}; |
+ |
+// Information about the optical properties for an eye in an HMD. |
+struct WebVREyeParameters { |
+ WebVRFieldOfView minimumFieldOfView; |
+ WebVRFieldOfView maximumFieldOfView; |
+ WebVRFieldOfView recommendedFieldOfView; |
+ WebVRVector3 eyeTranslation; |
+}; |
+ |
+// Information pertaining to Head Mounted Displays. |
+struct WebVRHMDInfo { |
+ WebVREyeParameters leftEye; |
+ WebVREyeParameters rightEye; |
+}; |
+ |
+// Bit flags to indicate what type of data a WebVRDevice describes. |
+enum WebVRDeviceTypeFlags { |
+ WebVRDeviceTypePosition = 1 << 1, |
+ WebVRDeviceTypeHMD = 1 << 2 |
+}; |
+ |
+// A bitfield of WebVRDeviceTypeFlags. |
+typedef int WebVRDeviceTypeMask; |
+ |
+// Describes a single VR hardware unit. May describe multiple capabilities, |
+// such as position sensors or head mounted display metrics. |
+class WebVRDevice { |
+public: |
+ static const size_t deviceIdLengthCap = 128; |
+ static const size_t deviceNameLengthCap = 128; |
+ |
+ WebVRDevice() |
+ : flags(0) |
+ { |
+ deviceId[0] = 0; |
+ deviceName[0] = 0; |
+ } |
+ |
+ // Index for this hardware unit. |
+ unsigned index; |
+ // Device identifier (based on manufacturer, model, etc.). |
+ WebUChar deviceId[deviceIdLengthCap]; |
+ // Friendly device name. |
+ WebUChar deviceName[deviceNameLengthCap]; |
+ // Identifies the capabilities of this hardware unit. |
+ WebVRDeviceTypeMask flags; |
+ |
+ // Will only contain valid data if (flags & HasHMDDevice). |
+ WebVRHMDInfo hmdInfo; |
+}; |
+ |
+} |
+ |
+#endif // WebVR_h |