Files
panopainter/engine/event.h

84 lines
1.2 KiB
C++

#pragma once
enum class kKey : uint8_t
{
Unknown,
AndroidVolumeUp,
AndroidVolumeDown,
AndroidHome,
AndroidBack,
KeySpacebar,
KeyE,
};
enum class kEventResult : uint8_t
{
Consumed,
Available,
};
enum class kEventCategory : uint8_t
{
MouseEvent,
KeyEvent,
ButtonEvent,
GestureEvent,
};
enum class kEventType : uint8_t
{
MouseDownL,
MouseDownR,
MouseMove,
MouseUpL,
MouseUpR,
MouseEnter,
MouseLeave,
MouseScroll,
MouseCancel,
GestureStart,
GestureMove,
GestureEnd,
KeyDown,
KeyUp,
KeyChar,
ButtonDown,
ButtonUp,
};
class Event
{
public:
kEventCategory m_cat;
kEventType m_type;
};
class MouseEvent : public Event
{
public:
MouseEvent() { m_cat = kEventCategory::MouseEvent; }
glm::vec2 m_pos;
float m_pressure;
float m_scroll_delta;
};
class KeyEvent : public Event
{
public:
KeyEvent() { m_cat = kEventCategory::KeyEvent; }
kKey m_key;
char m_char;
};
class GestureEvent : public Event
{
public:
GestureEvent() { m_cat = kEventCategory::GestureEvent; }
float m_distance;
float m_distance_delta;
float m_angle;
float m_angle_delta;
glm::vec2 m_pos;
glm::vec2 m_pos_delta;
};