1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/sdl/events.v
2019-12-14 03:31:07 +03:00

285 lines
10 KiB
V

module sdl
pub union C.SDL_Event {
pub:
@type u32
display C.SDL_DisplayEvent
window C.SDL_WindowEvent
key C.SDL_KeyboardEvent
edit C.SDL_TextEditingEvent
text C.SDL_TextInputEvent
motion C.SDL_MouseMotionEvent
button C.SDL_MouseButtonEvent
wheel C.SDL_MouseWheelEvent
jaxis C.SDL_JoyAxisEvent
jball C.SDL_JoyBallEvent
jhat C.SDL_JoyHatEvent
jbutton C.SDL_JoyButtonEvent
jdevice C.SDL_JoyDeviceEvent
caxis C.SDL_ControllerAxisEvent
cbutton C.SDL_ControllerButtonEvent
cdevice C.SDL_ControllerDeviceEvent
adevice C.SDL_AudioDeviceEvent
sensor C.SDL_SensorEvent
quit C.SDL_QuitEvent
user C.SDL_UserEvent
tfinger C.SDL_TouchFingerEvent
mgesture C.SDL_MultiGestureEvent
drop C.SDL_DropEvent
_pad56 [56]byte
}
// individual event declarations
pub struct C.SDL_DisplayEvent {
@type u32 /**< ::SDL_DISPLAYEVENT */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
display u32 /**< The associated display index */
event byte /**< ::SDL_DisplayEventID */
padding1 byte
padding2 byte
padding3 byte
data1 int /**< event dependent data */
}
pub struct C.SDL_WindowEvent {
pub:
@type u32 /**< ::SDL_WINDOWEVENT */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The associated window */
event byte /**< ::SDL_WindowEventID */
padding1 byte
padding2 byte
padding3 byte
data1 int
data2 int
}
pub struct C.SDL_KeyboardEvent {
pub:
@type u32 /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with keyboard focus, if any */
state byte /**< ::SDL_PRESSED or ::SDL_RELEASED */
repeat byte /**< Non-zero if this is a key repeat */
padding2 byte
padding3 byte
keysym Keysym
}
pub struct C.SDL_TextEditingEvent {
pub:
@type u32 /**< ::SDL_TEXTEDITING */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with keyboard focus, if any */
text [32]byte /**< The editing text */
start int /**< The start cursor of selected editing text */
length int /**< The length of selected editing text */
}
pub struct C.SDL_TextInputEvent {
pub:
@type u32 /**< ::SDL_TEXTINPUT */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with keyboard focus, if any */
text [32]byte /**< The input text */
}
pub struct C.SDL_MouseMotionEvent {
pub:
@type u32 /**< ::SDL_MOUSEMOTION */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with mouse focus, if any */
which u32 /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
state u32 /**< The current button state */
x int /**< X coordinate, relative to window */
y int /**< Y coordinate, relative to window */
xrel int /**< The relative motion in the X direction */
yrel int /**< The relative motion in the Y direction */
}
pub struct C.SDL_MouseButtonEvent {
pub:
@type u32 /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with mouse focus, if any */
which u32 /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
button byte /**< The mouse button index */
state byte /**< ::SDL_PRESSED or ::SDL_RELEASED */
clicks byte /**< 1 for single-click, 2 for double-click, etc. */
padding1 byte
x int /**< X coordinate, relative to window */
y int /**< Y coordinate, relative to window */
}
pub struct C.SDL_MouseWheelEvent {
pub:
@type u32 /**< ::SDL_MOUSEWHEEL */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The window with mouse focus, if any */
which u32 /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
x int /**< The amount scrolled horizontally, positive to the right and negative to the left */
y int /**< The amount scrolled vertically, positive away from the user and negative toward the user */
direction u32 /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */
}
pub struct C.SDL_JoyAxisEvent {
pub:
@type u32 /**< ::SDL_JOYAXISMOTION */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick instance id */
axis byte /**< The joystick axis index */
padding1 byte
padding2 byte
padding3 byte
value i16 /**< The axis value (range: -32768 to 32767) */
padding4 u16
}
pub struct C.SDL_JoyBallEvent {
pub:
@type u32 /**< ::SDL_JOYBALLMOTION */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick instance id */
ball byte /**< The joystick trackball index */
padding1 byte
padding2 byte
padding3 byte
xrel i16 /**< The relative motion in the X direction */
yrel i16 /**< The relative motion in the Y direction */
}
pub struct C.SDL_JoyHatEvent {
pub:
@type u32 /**< SDL_JOYHATMOTION */
timestamp u32
which int /**< The joystick device index */
hat byte /**< The joystick hat index */
value byte /**< The hat position value:
* SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP
* SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT
* SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN
* Note that zero means the POV is centered.
*/
padding1 byte
padding2 byte
}
pub struct C.SDL_JoyButtonEvent {
pub:
@type u32 /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */
timestamp u32
which int /**< The joystick device index */
button byte /**< The joystick button index */
state byte /**< SDL_PRESSED or SDL_RELEASED */
padding1 byte
padding2 byte
}
pub struct C.SDL_JoyDeviceEvent {
pub:
@type u32 /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick device index for the ADDED event, instance id for the REMOVED event */
}
pub struct C.SDL_ControllerAxisEvent {
pub:
@type u32 /**< ::SDL_CONTROLLERAXISMOTION */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick instance id */
axis byte /**< The controller axis (SDL_GameControllerAxis) */
padding1 byte
padding2 byte
padding3 byte
value i16 /**< The axis value (range: -32768 to 32767) */
padding4 u16
}
pub struct C.SDL_ControllerButtonEvent {
pub:
@type u32 /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick instance id */
button byte /**< The controller button (SDL_GameControllerButton) */
state byte /**< ::SDL_PRESSED or ::SDL_RELEASED */
padding1 byte
padding2 byte
}
pub struct C.SDL_ControllerDeviceEvent {
pub:
@type u32 /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
}
pub struct C.SDL_AudioDeviceEvent {
pub:
@type u32 /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which u32 /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */
iscapture byte /**< zero if an output device, non-zero if a capture device. */
padding1 byte
padding2 byte
padding3 byte
}
pub struct C.SDL_TouchFingerEvent {
pub:
@type u32 /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
touchId i64 /**< The touch device id */
fingerId i64
x f32 /**< Normalized in the range 0...1 */
y f32 /**< Normalized in the range 0...1 */
dx f32 /**< Normalized in the range -1...1 */
dy f32 /**< Normalized in the range -1...1 */
pressure f32 /**< Normalized in the range 0...1 */
}
pub struct C.SDL_MultiGestureEvent {
pub:
@type u32 /**< ::SDL_MULTIGESTURE */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
touchId i64 /**< The touch device id */
dTheta f32
dDist f32
x f32
y f32
numFingers u16
padding u16
}
pub struct C.SDL_DropEvent {
pub:
@type u32 /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
file byteptr /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
windowID u32 /**< The window that was dropped on, if any */
}
pub struct C.SDL_SensorEvent {
pub:
@type u32 /**< ::SDL_SENSORUPDATE */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
which int /**< The instance ID of the sensor */
data [6]f32 /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */
}
pub struct C.SDL_QuitEvent {
pub:
@type u32 /**< SDL_QUIT */
timestamp u32
}
pub struct C.SDL_UserEvent {
pub:
@type u32 /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
timestamp u32 /**< In milliseconds, populated using SDL_GetTicks() */
windowID u32 /**< The associated window if any */
code int /**< User defined event code */
data1 voidptr /**< User defined data pointer */
data2 voidptr /**< User defined data pointer */
}