sdl3.c3l/sdl3_events.c3i

605 lines
17 KiB
Plaintext

module sdl3::sdl;
alias EventType = uint;
const EventType EVENT_FIRST @builtin = 0;
const EventType EVENT_QUIT @builtin = 0x100;
const EventType EVENT_TERMINATING @builtin = 0x101;
const EventType EVENT_LOW_MEMORY @builtin = 0x102;
const EventType EVENT_WILL_ENTER_BACKGROUND @builtin = 0x103;
const EventType EVENT_DID_ENTER_BACKGROUND @builtin = 0x104;
const EventType EVENT_WILL_ENTER_FOREGROUND @builtin = 0x105;
const EventType EVENT_DID_ENTER_FOREGROUND @builtin = 0x106;
const EventType EVENT_LOCALE_CHANGED @builtin = 0x107;
const EventType EVENT_SYSTEM_THEME_CHANGED @builtin = 0x108;
const EventType EVENT_DISPLAY_ORIENTATION @builtin = 0x151;
const EventType EVENT_DISPLAY_ADDED @builtin = 0x152;
const EventType EVENT_DISPLAY_REMOVED @builtin = 0x153;
const EventType EVENT_DISPLAY_MOVED @builtin = 0x154;
const EventType EVENT_DISPLAY_DESKTOP_MODE_CHANGED @builtin = 0x155;
const EventType EVENT_DISPLAY_CURRENT_MODE_CHANGED @builtin = 0x156;
const EventType EVENT_DISPLAY_CONTENT_SCALE_CHANGED @builtin = 0x157;
const EventType EVENT_DISPLAY_FIRST @builtin = EVENT_DISPLAY_ORIENTATION;
const EventType EVENT_DISPLAY_LAST @builtin = EVENT_DISPLAY_CONTENT_SCALE_CHANGED;
const EventType EVENT_WINDOW_SHOWN @builtin = 0x202;
const EventType EVENT_WINDOW_HIDDEN @builtin = 0x203;
const EventType EVENT_WINDOW_EXPOSED @builtin = 0x204;
const EventType EVENT_WINDOW_MOVED @builtin = 0x205;
const EventType EVENT_WINDOW_RESIZED @builtin = 0x206;
const EventType EVENT_WINDOW_PIXEL_SIZE_CHANGED @builtin = 0x207;
const EventType EVENT_WINDOW_METAL_VIEW_RESIZED @builtin = 0x208;
const EventType EVENT_WINDOW_MINIMIZED @builtin = 0x208;
const EventType EVENT_WINDOW_MAXIMIZED @builtin = 0x209;
const EventType EVENT_WINDOW_RESTORED @builtin = 0x20a;
const EventType EVENT_WINDOW_MOUSE_ENTER @builtin = 0x20b;
const EventType EVENT_WINDOW_MOUSE_LEAVE @builtin = 0x20c;
const EventType EVENT_WINDOW_FOCUS_GAINED @builtin = 0x20d;
const EventType EVENT_WINDOW_FOCUS_LOST @builtin = 0x20e;
const EventType EVENT_WINDOW_CLOSE_REQUESTED @builtin = 0x20f;
const EventType EVENT_WINDOW_HIT_TEST @builtin = 0x210;
const EventType EVENT_WINDOW_ICCPROF_CHANGED @builtin = 0x211;
const EventType EVENT_WINDOW_DISPLAY_CHANGED @builtin = 0x212;
const EventType EVENT_WINDOW_DISPLAY_SCALE_CHANGED @builtin = 0x213;
const EventType EVENT_WINDOW_SAFE_AREA_CHANGED @builtin = 0x214;
const EventType EVENT_WINDOW_OCCLUDED @builtin = 0x215;
const EventType EVENT_WINDOW_ENTER_FULLSCREEN @builtin = 0x216;
const EventType EVENT_WINDOW_LEAVE_FULLSCREEN @builtin = 0x217;
const EventType EVENT_WINDOW_DESTROYED @builtin = 0x218;
const EventType EVENT_WINDOW_HDR_STATE_CHANGED @builtin = 0x219;
const EventType EVENT_WINDOW_FIRST @builtin = EVENT_WINDOW_SHOWN;
const EventType EVENT_WINDOW_LAST @builtin = EVENT_WINDOW_HDR_STATE_CHANGED;
const EventType EVENT_KEY_DOWN @builtin = 0x300;
const EventType EVENT_KEY_UP @builtin = 0x301;
const EventType EVENT_TEXT_EDITING @builtin = 0x302;
const EventType EVENT_TEXT_INPUT @builtin = 0x303;
const EventType EVENT_KEYMAP_CHANGED @builtin = 0x304;
const EventType EVENT_KEYBOARD_ADDED @builtin = 0x305;
const EventType EVENT_KEYBOARD_REMOVED @builtin = 0x306;
const EventType EVENT_TEXT_EDITING_CANDIDATES @builtin = 0x307;
const EventType EVENT_MOUSE_MOTION @builtin = 0x400;
const EventType EVENT_MOUSE_BUTTON_DOWN @builtin = 0x401;
const EventType EVENT_MOUSE_BUTTON_UP @builtin = 0x402;
const EventType EVENT_MOUSE_WHEEL @builtin = 0x403;
const EventType EVENT_MOUSE_ADDED @builtin = 0x404;
const EventType EVENT_MOUSE_REMOVED @builtin = 0x405;
const EventType EVENT_JOYSTICK_AXIS_MOTION @builtin = 0x600;
const EventType EVENT_JOYSTICK_BALL_MOTION @builtin = 0x601;
const EventType EVENT_JOYSTICK_HAT_MOTION @builtin = 0x602;
const EventType EVENT_JOYSTICK_BUTTON_DOWN @builtin = 0x603;
const EventType EVENT_JOYSTICK_BUTTON_UP @builtin = 0x604;
const EventType EVENT_JOYSTICK_ADDED @builtin = 0x605;
const EventType EVENT_JOYSTICK_REMOVED @builtin = 0x606;
const EventType EVENT_JOYSTICK_BATTERY_UPDATED @builtin = 0x607;
const EventType EVENT_JOYSTICK_UPDATE_COMPLETE @builtin = 0x608;
const EventType EVENT_GAMEPAD_AXIS_MOTION @builtin = 0x650;
const EventType EVENT_GAMEPAD_BUTTON_DOWN @builtin = 0x651;
const EventType EVENT_GAMEPAD_BUTTON_UP @builtin = 0x652;
const EventType EVENT_GAMEPAD_ADDED @builtin = 0x653;
const EventType EVENT_GAMEPAD_REMOVED @builtin = 0x654;
const EventType EVENT_GAMEPAD_REMAPPED @builtin = 0x655;
const EventType EVENT_GAMEPAD_TOUCHPAD_DOWN @builtin = 0x656;
const EventType EVENT_GAMEPAD_TOUCHPAD_MOTION @builtin = 0x657;
const EventType EVENT_GAMEPAD_TOUCHPAD_UP @builtin = 0x658;
const EventType EVENT_GAMEPAD_SENSOR_UPDATE @builtin = 0x659;
const EventType EVENT_GAMEPAD_UPDATE_COMPLETE @builtin = 0x65a;
const EventType EVENT_GAMEPAD_STEAM_HANDLE_UPDATED @builtin = 0x65b;
const EventType EVENT_FINGER_DOWN @builtin = 0x700;
const EventType EVENT_FINGER_UP @builtin = 0x701;
const EventType EVENT_FINGER_MOTION @builtin = 0x702;
const EventType EVENT_FINGER_CANCELED @builtin = 0x703;
const EventType EVENT_CLIPBOARD_UPDATE @builtin = 0x900;
const EventType EVENT_DROP_FILE @builtin = 0x1000;
const EventType EVENT_DROP_TEXT @builtin = 0x1001;
const EventType EVENT_DROP_BEGIN @builtin = 0x1002;
const EventType EVENT_DROP_COMPLETE @builtin = 0x1003;
const EventType EVENT_DROP_POSITION @builtin = 0x1004;
const EventType EVENT_AUDIO_DEVICE_ADDED @builtin = 0x1100;
const EventType EVENT_AUDIO_DEVICE_REMOVED @builtin = 0x1101;
const EventType EVENT_AUDIO_DEVICE_FORMAT_CHANGED @builtin = 0x1102;
const EventType EVENT_SENSOR_UPDATE @builtin = 0x1200;
const EventType EVENT_PEN_PROXIMITY_IN @builtin = 0x1300;
const EventType EVENT_PEN_PROXIMITY_OUT @builtin = 0x1301;
const EventType EVENT_PEN_DOWN @builtin = 0x1302;
const EventType EVENT_PEN_UP @builtin = 0x1303;
const EventType EVENT_PEN_BUTTON_DOWN @builtin = 0x1304;
const EventType EVENT_PEN_BUTTON_UP @builtin = 0x1305;
const EventType EVENT_PEN_MOTION @builtin = 0x1306;
const EventType EVENT_PEN_AXIS @builtin = 0x1307;
const EventType EVENT_CAMERA_DEVICE_ADDED @builtin = 0x1400;
const EventType EVENT_CAMERA_DEVICE_REMOVED @builtin = 0x1401;
const EventType EVENT_CAMERA_DEVICE_APPROVED @builtin = 0x1402;
const EventType EVENT_CAMERA_DEVICE_DENIED @builtin = 0x1403;
const EventType EVENT_RENDER_TARGETS_RESET @builtin = 0x2000;
const EventType EVENT_RENDER_DEVICE_RESET @builtin = 0x2001;
const EventType EVENT_RENDER_DEVICE_LOST @builtin = 0x2002;
const EventType EVENT_PRIVATE0 @builtin = 0x4000;
const EventType EVENT_PRIVATE1 @builtin = 0x4001;
const EventType EVENT_PRIVATE2 @builtin = 0x4002;
const EventType EVENT_PRIVATE3 @builtin = 0x4003;
const EventType EVENT_POLL_SENTINEL @builtin = 0x7F00;
const EventType EVENT_USER @builtin = 0x8000;
const EventType EVENT_LAST @builtin = 0xFFFF;
const EventType EVENT_ENUM_PADDING @builtin = 0x7FFFFFFF;
struct CommonEvent {
uint type;
uint reserved;
ulong timestamp;
}
struct DisplayEvent {
EventType type;
uint reserved;
ulong timestamp;
DisplayID displayID;
int data1;
int data2;
}
struct WindowEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
int data1;
int data2;
}
struct KeyboardDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
KeyboardID which;
}
struct KeyboardEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
KeyboardID which;
Scancode scancode;
Keycode key;
Keymod mod;
ushort raw;
bool down;
bool repeat;
}
struct TextEditingEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
ZString text;
int start;
int length;
}
struct TextEditingCandidatesEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
ZString* candidates;
int num_candidates;
int selected_candidate;
bool horizontal;
char padding1;
char padding2;
char padding3;
}
struct TextInputEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
ZString text;
}
struct MouseDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
MouseID which;
}
struct MouseMotionEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
MouseID which;
MouseButtonFlags state;
float x;
float y;
float xrel;
float yrel;
}
struct MouseButtonEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
MouseID which;
char button;
bool down;
char clicks;
char padding;
float x;
float y;
}
struct MouseWheelEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
MouseID which;
float x;
float y;
MouseWheelDirection direction;
float mouse_x;
float mouse_y;
int integer_x;
int integer_y;
}
struct JoyAxisEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char axis;
char padding1;
char padding2;
char padding3;
short value;
ushort padding4;
}
struct JoyBallEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char ball;
char padding1;
char padding2;
char padding3;
short xrel;
short yrel;
}
struct JoyHatEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char hat;
char value;
char padding1;
char padding2;
}
struct JoyButtonEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char button;
bool down;
char padding1;
char padding2;
}
struct JoyDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
}
struct JoyBatteryEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
PowerState state;
int percent;
}
struct GamepadAxisEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char axis;
char padding1;
char padding2;
char padding3;
short value;
ushort padding4;
}
struct GamepadButtonEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
char button;
bool down;
char padding1;
char padding2;
}
struct GamepadDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
}
struct GamepadTouchpadEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
int touchpad;
int finger;
float x;
float y;
float pressure;
}
struct GamepadSensorEvent {
EventType type;
uint reserved;
ulong timestamp;
JoystickID which;
int sensor;
float[3] data;
ulong sensor_timestamp;
}
struct AudioDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
AudioDeviceID which;
bool recording;
char padding1;
char padding2;
char padding3;
}
struct CameraDeviceEvent {
EventType type;
uint reserved;
ulong timestamp;
CameraID which;
}
struct RenderEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
}
struct TouchFingerEvent {
EventType type;
uint reserved;
ulong timestamp;
TouchID touchID;
FingerID fingerID;
float x;
float y;
float dx;
float dy;
float pressure;
WindowID windowID;
}
struct PenProximityEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
PenID which;
}
struct PenMotionEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
PenID which;
PenInputFlags pen_state;
float x;
float y;
}
struct PenTouchEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
PenID which;
PenInputFlags pen_state;
float x;
float y;
bool eraser;
bool down;
}
struct PenButtonEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
PenID which;
PenInputFlags pen_state;
float x;
float y;
char button;
bool down;
}
struct PenAxisEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
PenID which;
PenInputFlags pen_state;
float x;
float y;
PenAxis axis;
float value;
}
struct DropEvent {
EventType type;
uint reserved;
ulong timestamp;
WindowID windowID;
float x;
float y;
ZString source;
ZString data;
}
struct ClipboardEvent {
EventType type;
uint reserved;
ulong timestamp;
bool owner;
int num_mime_types;
ZString* mime_types;
}
struct SensorEvent {
EventType type;
uint reserved;
ulong timestamp;
SensorID which;
float[6] data;
ulong sensor_timestamp;
}
struct QuitEvent {
EventType type;
uint reserved;
ulong timestamp;
}
struct UserEvent {
uint type;
uint reserved;
ulong timestamp;
WindowID windowID;
int code;
void* data1;
void* data2;
}
union Event {
uint type;
CommonEvent common;
DisplayEvent display;
WindowEvent window;
KeyboardDeviceEvent kdevice;
KeyboardEvent key;
TextEditingEvent edit;
TextEditingCandidatesEvent edit_candidates;
TextInputEvent text;
MouseDeviceEvent mdevice;
MouseMotionEvent motion;
MouseButtonEvent button;
MouseWheelEvent wheel;
JoyDeviceEvent jdevice;
JoyAxisEvent jaxis;
JoyBallEvent jball;
JoyHatEvent jhat;
JoyButtonEvent jbutton;
JoyBatteryEvent jbattery;
GamepadDeviceEvent gdevice;
GamepadAxisEvent gaxis;
GamepadButtonEvent gbutton;
GamepadTouchpadEvent gtouchpad;
GamepadSensorEvent gsensor;
AudioDeviceEvent adevice;
CameraDeviceEvent cdevice;
SensorEvent sensor;
QuitEvent quit;
UserEvent user;
TouchFingerEvent tfinger;
PenProximityEvent pproximity;
PenTouchEvent ptouch;
PenMotionEvent pmotion;
PenButtonEvent pbutton;
PenAxisEvent paxis;
RenderEvent render;
DropEvent drop;
ClipboardEvent clipboard;
char[128] padding;
}
extern fn void pump_events() @extern("SDL_PumpEvents");
enum EventAction : inline CInt {
ADDEVENT,
PEEKEVENT,
GETEVENT
}
extern fn int peep_events(Event* events, int numevents, EventAction action, uint minType, uint maxType) @extern("SDL_PeepEvents");
extern fn bool has_event(uint type) @extern("SDL_HasEvent");
extern fn bool has_events(uint minType, uint maxType) @extern("SDL_HasEvents");
extern fn void flush_event(uint type) @extern("SDL_FlushEvent");
extern fn void flush_events(uint minType, uint maxType) @extern("SDL_FlushEvents");
extern fn bool poll_event(Event* event) @extern("SDL_PollEvent");
extern fn bool wait_event(Event* event) @extern("SDL_WaitEvent");
extern fn bool wait_event_timeout(Event* event, int timeoutMS) @extern("SDL_WaitEventTimeout");
extern fn bool push_event(Event* event) @extern("SDL_PushEvent");
alias EventFilter = fn bool(void* userdata, Event* event);
extern fn void set_event_filter(EventFilter filter, void* userdata) @extern("SDL_SetEventFilter");
extern fn bool get_event_filter(EventFilter *filter, void** userdata) @extern("SDL_GetEventFilter");
extern fn bool add_event_watch(EventFilter filter, void* userdata) @extern("SDL_AddEventWatch");
extern fn void remove_event_watch(EventFilter filter, void* userdata) @extern("SDL_RemoveEventWatch");
extern fn void filter_events(EventFilter filter, void* userdata) @extern("SDL_FilterEvents");
extern fn void set_event_enabled(uint type, bool enabled) @extern("SDL_SetEventEnabled");
extern fn bool event_enabled(uint type) @extern("SDL_EventEnabled");
extern fn uint register_events(int numevents) @extern("SDL_RegisterEvents");
extern fn Window* get_window_from_event(Event* event) @extern("SDL_GetWindowFromEvent");