kodi
JoystickUtils.h
1 /*
2  * Copyright (C) 2014-2024 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "JoystickTypes.h"
12 
13 #include <string>
14 #include <vector>
15 
18 
19 namespace KODI
20 {
21 namespace JOYSTICK
22 {
23 
24 inline HAT_DIRECTION& operator|=(HAT_DIRECTION& lhs, HAT_DIRECTION rhs)
25 {
26  return lhs = static_cast<HAT_DIRECTION>(static_cast<int>(lhs) | static_cast<int>(rhs));
27 }
28 
29 inline HAT_STATE& operator|=(HAT_STATE& lhs, HAT_STATE rhs)
30 {
31  return lhs = static_cast<HAT_STATE>(static_cast<int>(lhs) | static_cast<int>(rhs));
32 }
33 
34 inline bool operator&(HAT_STATE lhs, HAT_DIRECTION rhs)
35 {
36  return (static_cast<int>(lhs) & static_cast<int>(rhs)) ? true : false;
37 }
38 
39 inline SEMIAXIS_DIRECTION operator*(SEMIAXIS_DIRECTION lhs, int rhs)
40 {
41  return static_cast<SEMIAXIS_DIRECTION>(static_cast<int>(lhs) * rhs);
42 }
43 
44 inline float operator*(float lhs, SEMIAXIS_DIRECTION rhs)
45 {
46  return lhs * static_cast<int>(rhs);
47 }
48 
50 {
51 public:
59  static std::string MakeKeyName(const FeatureName& feature);
60 
69  static std::string MakeKeyName(const FeatureName& feature, ANALOG_STICK_DIRECTION dir);
70 
79  static std::string MakeKeyName(const FeatureName& feature, WHEEL_DIRECTION dir);
80 
89  static std::string MakeKeyName(const FeatureName& feature, THROTTLE_DIRECTION dir);
90 
94  static const std::vector<ANALOG_STICK_DIRECTION>& GetAnalogStickDirections();
95 
99  static const std::vector<WHEEL_DIRECTION>& GetWheelDirections();
100 
104  static const std::vector<THROTTLE_DIRECTION>& GetThrottleDirections();
105 };
106 
107 } // namespace JOYSTICK
108 } // namespace KODI
109 
static std::string MakeKeyName(const FeatureName &feature)
Create a key name used to index an action in the keymap.
Definition: JoystickUtils.cpp:17
static const std::vector< ANALOG_STICK_DIRECTION > & GetAnalogStickDirections()
Return a vector of the four cardinal directions.
Definition: JoystickUtils.cpp:70
static const std::vector< THROTTLE_DIRECTION > & GetThrottleDirections()
Return a vector of the two throttle directions.
Definition: JoystickUtils.cpp:94
Definition: AudioDecoder.h:18
Definition: JoystickUtils.h:49
static const std::vector< WHEEL_DIRECTION > & GetWheelDirections()
Return a vector of the two wheel directions.
Definition: JoystickUtils.cpp:83