xbmc
DriverPrimitive.h
1 /*
2  * Copyright (C) 2014-2018 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 #include "input/keyboard/KeyboardTypes.h"
13 #include "input/mouse/MouseTypes.h"
14 
15 #include <stdint.h>
16 
17 namespace KODI
18 {
19 namespace JOYSTICK
20 {
70 {
71 public:
75  CDriverPrimitive(void);
76 
80  CDriverPrimitive(PRIMITIVE_TYPE type, unsigned int index);
81 
86  CDriverPrimitive(unsigned int hatIndex, HAT_DIRECTION direction);
87 
92  CDriverPrimitive(unsigned int axisIndex,
93  int center,
94  SEMIAXIS_DIRECTION direction,
95  unsigned int range);
96 
100  CDriverPrimitive(KEYBOARD::KeySymbol keycode);
101 
105  CDriverPrimitive(MOUSE::BUTTON_ID index);
106 
110  CDriverPrimitive(RELATIVE_POINTER_DIRECTION direction);
111 
112  bool operator==(const CDriverPrimitive& rhs) const;
113  bool operator<(const CDriverPrimitive& rhs) const;
114 
115  bool operator!=(const CDriverPrimitive& rhs) const { return !operator==(rhs); }
116  bool operator>(const CDriverPrimitive& rhs) const { return !(operator<(rhs) || operator==(rhs)); }
117  bool operator<=(const CDriverPrimitive& rhs) const { return operator<(rhs) || operator==(rhs); }
118  bool operator>=(const CDriverPrimitive& rhs) const { return !operator<(rhs); }
119 
123  PRIMITIVE_TYPE Type(void) const { return m_type; }
124 
134  unsigned int Index(void) const { return m_driverIndex; }
135 
139  HAT_DIRECTION HatDirection(void) const { return m_hatDirection; }
140 
144  int Center() const { return m_center; }
145 
149  SEMIAXIS_DIRECTION SemiAxisDirection(void) const { return m_semiAxisDirection; }
150 
154  unsigned int Range() const { return m_range; }
155 
159  KEYBOARD::KeySymbol Keycode() const { return m_keycode; }
160 
164  MOUSE::BUTTON_ID MouseButton() const { return static_cast<MOUSE::BUTTON_ID>(m_driverIndex); }
165 
169  RELATIVE_POINTER_DIRECTION PointerDirection() const { return m_pointerDirection; }
170 
180  bool IsValid(void) const;
181 
182 private:
183  PRIMITIVE_TYPE m_type = PRIMITIVE_TYPE::UNKNOWN;
184  unsigned int m_driverIndex = 0;
185  HAT_DIRECTION m_hatDirection = HAT_DIRECTION::NONE;
186  int m_center = 0;
187  SEMIAXIS_DIRECTION m_semiAxisDirection = SEMIAXIS_DIRECTION::ZERO;
188  unsigned int m_range = 1;
189  KEYBOARD::KeySymbol m_keycode = XBMCK_UNKNOWN;
190  RELATIVE_POINTER_DIRECTION m_pointerDirection = RELATIVE_POINTER_DIRECTION::NONE;
191 };
192 } // namespace JOYSTICK
193 } // namespace KODI
CDriverPrimitive(void)
Construct an invalid driver primitive.
SEMIAXIS_DIRECTION SemiAxisDirection(void) const
The semiaxis direction (valid for semiaxes)
Definition: DriverPrimitive.h:149
RELATIVE_POINTER_DIRECTION PointerDirection() const
The relative pointer direction (valid for relative pointers)
Definition: DriverPrimitive.h:169
PRIMITIVE_TYPE
Type of driver primitive.
Definition: JoystickTypes.h:150
int Center() const
The location of the zero point of the semiaxis.
Definition: DriverPrimitive.h:144
MOUSE::BUTTON_ID MouseButton() const
The mouse button ID (valid for mouse buttons)
Definition: DriverPrimitive.h:164
Controller configuration window.
Definition: AudioDecoder.h:18
HAT_DIRECTION HatDirection(void) const
The direction arrow (valid for hat directions)
Definition: DriverPrimitive.h:139
unsigned int Range() const
The distance between the center and the farthest valid value (valid for semiaxes) ...
Definition: DriverPrimitive.h:154
Basic driver element associated with input events.
Definition: DriverPrimitive.h:69
SEMIAXIS_DIRECTION
Directions in which a semiaxis can point.
Definition: JoystickTypes.h:110
bool IsValid(void) const
Test if an driver primitive is valid.
Definition: DriverPrimitive.cpp:143
PRIMITIVE_TYPE Type(void) const
The type of driver primitive.
Definition: DriverPrimitive.h:123
unsigned int Index(void) const
The index used by the joystick driver.
Definition: DriverPrimitive.h:134
KEYBOARD::KeySymbol Keycode() const
The keyboard symbol (valid for keys)
Definition: DriverPrimitive.h:159