3#include <zen/zen_pch.h>
6 enum class MouseButton : uint8_t { None = 0, Left = 1, Middle = 2, Right = 3, X1 = 4, X2 = 5 };
7 enum class MouseButtonState : uint32_t {
16 constexpr MouseButtonState operator|(MouseButtonState a, MouseButtonState b) {
17 return static_cast<MouseButtonState
>(
static_cast<uint32_t
>(a) |
static_cast<uint32_t
>(b));
20 constexpr MouseButtonState operator&(MouseButtonState a, MouseButtonState b) {
21 return static_cast<MouseButtonState
>(
static_cast<uint32_t
>(a) &
static_cast<uint32_t
>(b));
24 constexpr MouseButtonState &operator|=(MouseButtonState &a, MouseButtonState b) {
29 constexpr MouseButtonState mapSDLMouseStates(SDL_MouseButtonFlags currentState) {
30 MouseButtonState states = MouseButtonState::None;
32 if (currentState & SDL_BUTTON_LMASK)
33 states |= MouseButtonState::Left;
34 if (currentState & SDL_BUTTON_MMASK)
35 states |= MouseButtonState::Middle;
36 if (currentState & SDL_BUTTON_RMASK)
37 states |= MouseButtonState::Right;
38 if (currentState & SDL_BUTTON_X1MASK)
39 states |= MouseButtonState::X1;
40 if (currentState & SDL_BUTTON_X2MASK)
41 states |= MouseButtonState::X2;