65 lines
932 B
C
65 lines
932 B
C
|
#pragma once
|
||
|
|
||
|
#include <variant>
|
||
|
|
||
|
#include "core/point.h"
|
||
|
|
||
|
namespace kku
|
||
|
{
|
||
|
|
||
|
struct SystemEvent
|
||
|
{
|
||
|
enum class Type
|
||
|
{
|
||
|
None = 0,
|
||
|
|
||
|
Resize = 1,
|
||
|
|
||
|
KeyPress = 2,
|
||
|
KeyRelease = 3,
|
||
|
|
||
|
MouseWheelScroll = 4,
|
||
|
MouseMove = 5,
|
||
|
MousePress = 6,
|
||
|
MouseRelease = 7
|
||
|
};
|
||
|
|
||
|
struct Size
|
||
|
{
|
||
|
std::size_t width = 0;
|
||
|
std::size_t height = 0;
|
||
|
};
|
||
|
|
||
|
struct Key
|
||
|
{
|
||
|
char view = char(0);
|
||
|
bool alt = false;
|
||
|
bool control = false;
|
||
|
bool shift = false;
|
||
|
};
|
||
|
|
||
|
struct Mouse
|
||
|
{
|
||
|
Point position;
|
||
|
|
||
|
bool scrolled_up = false;
|
||
|
|
||
|
enum class Button
|
||
|
{
|
||
|
None = 0,
|
||
|
Wheel = 1,
|
||
|
Left = 2,
|
||
|
Right = 3
|
||
|
};
|
||
|
|
||
|
Button button = Button::Left;
|
||
|
};
|
||
|
|
||
|
struct None
|
||
|
{};
|
||
|
|
||
|
Type type = Type::None;
|
||
|
std::variant<Size, Key, Mouse, None> data;
|
||
|
};
|
||
|
|
||
|
}
|