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

Unified Diff: device/gamepad/public/cpp/gamepad.h

Issue 2808093006: [Device Service] Move Gamepad Blink headers to be part of the Gamepad client library (Closed)
Patch Set: clean up code Created 3 years, 8 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: device/gamepad/public/cpp/gamepad.h
diff --git a/device/gamepad/public/cpp/gamepad.h b/device/gamepad/public/cpp/gamepad.h
new file mode 100644
index 0000000000000000000000000000000000000000..e14d272e8e868adf8cb67a6229b6c80dfeafee6a
--- /dev/null
+++ b/device/gamepad/public/cpp/gamepad.h
@@ -0,0 +1,119 @@
+// Copyright 2017 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 DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_
+#define DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_
+
+#include <stddef.h>
+
+namespace device {
+
+#pragma pack(push, 4)
+
+class GamepadButton {
+ public:
+ GamepadButton() : pressed(false), touched(false), value(0.) {}
+ GamepadButton(bool pressed, bool touched, double value)
+ : pressed(pressed), touched(touched), value(value) {}
+ bool pressed;
+ bool touched;
+ double value;
+};
+
+class GamepadVector {
+ public:
+ GamepadVector() : not_null(false) {}
+
+ bool not_null;
+ float x, y, z;
+};
+
+class GamepadQuaternion {
+ public:
+ GamepadQuaternion() : not_null(false) {}
+
+ bool not_null;
+ float x, y, z, w;
+};
+
+class GamepadPose {
+ public:
+ GamepadPose() : not_null(false) {}
+
+ bool not_null;
+
+ bool has_orientation;
+ bool has_position;
+
+ GamepadQuaternion orientation;
+ GamepadVector position;
+ GamepadVector angular_velocity;
+ GamepadVector linear_velocity;
+ GamepadVector angular_acceleration;
+ GamepadVector linear_acceleration;
+};
+
+enum GamepadHand {
dcheng 2017/04/12 23:33:27 Consider making this scoped, since it looks like a
juncai 2017/04/13 23:55:52 Done.
+ kGamepadHandNone = 0,
+ kGamepadHandLeft = 1,
+ kGamepadHandRight = 2
+};
+
+// UTF-16 character type
+#if defined(WIN32)
+typedef wchar_t UChar;
dcheng 2017/04/12 23:33:27 Oh... I see. Nit: prefer using over typedef
juncai 2017/04/13 23:55:52 Done.
+#else
+typedef unsigned short UChar;
+#endif
+
+// This structure is intentionally POD and fixed size so that it can be shared
+// memory between hardware polling threads and the rest of the browser. See
+// also gamepads.h.
+class Gamepad {
+ public:
+ static const size_t kIdLengthCap = 128;
+ static const size_t kMappingLengthCap = 16;
+ static const size_t kAxesLengthCap = 16;
+ static const size_t kButtonsLengthCap = 32;
+
+ Gamepad();
+ Gamepad(const Gamepad& other);
+
+ // Is there a gamepad connected at this index?
+ bool connected;
+
+ // Device identifier (based on manufacturer, model, etc.).
+ UChar id[kIdLengthCap];
+
+ // Monotonically increasing value referring to when the data were last
+ // updated.
+ unsigned long long timestamp;
+
+ // Number of valid entries in the axes array.
+ unsigned axes_length;
+
+ // Normalized values representing axes, in the range [-1..1].
+ double axes[kAxesLengthCap];
+
+ // Number of valid entries in the buttons array.
+ unsigned buttons_length;
+
+ // Button states
+ GamepadButton buttons[kButtonsLengthCap];
+
+ // Mapping type (for example "standard")
+ UChar mapping[kMappingLengthCap];
+
+ GamepadPose pose;
+
+ GamepadHand hand;
+
+ unsigned display_id;
+};
+
+#pragma pack(pop)
+
+} // namespace device
+
+#endif // DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_

Powered by Google App Engine
This is Rietveld 408576698