Files
Renderive/web_server/app/common/Gallery_Input.h
T
2026-08-14 19:03:39 +08:00

72 lines
1.5 KiB
C++

#pragma once
#include <cstdint>
#include <variant>
namespace renderive::web {
enum class Gallery_View_Input_Type : std::uint8_t {
Show,
Hide,
Leave
};
struct Gallery_View_Input {
Gallery_View_Input_Type type{};
};
enum class Gallery_Pointer_Input_Type : std::uint8_t {
Move,
Press,
Release
};
enum class Gallery_Mouse_Button : std::uint8_t {
None,
Left,
Right,
Middle
};
struct Gallery_Pointer_Input {
Gallery_Pointer_Input_Type type{};
double x{};
double y{};
double global_x{};
double global_y{};
Gallery_Mouse_Button button{};
std::uint8_t buttons{};
std::uint8_t modifiers{};
};
struct Gallery_Wheel_Input {
double x{};
double y{};
double global_x{};
double global_y{};
Gallery_Mouse_Button button{};
std::uint8_t buttons{};
std::uint8_t modifiers{};
double angle_delta_x{};
double angle_delta_y{};
double pixel_delta_x{};
double pixel_delta_y{};
};
enum class Gallery_Key_Input_Type : std::uint8_t {
Press,
Release
};
enum class Gallery_Key : std::uint16_t {
Unknown,
Escape,
Enter,
Space,
Delete,
Backspace,
Left,
Right,
Up,
Down
};
struct Gallery_Key_Input {
Gallery_Key_Input_Type type{};
Gallery_Key key{};
std::uint32_t native_key{};
std::uint8_t modifiers{};
bool auto_repeat{};
};
using Gallery_Input_Event = std::variant<Gallery_View_Input, Gallery_Pointer_Input, Gallery_Wheel_Input, Gallery_Key_Input>;
}