node-sdl2
Version:
Bindings for SDL2 in Node
352 lines (348 loc) • 9.39 kB
JavaScript
var FFI = require('ffi')
var ArrayType = require('ref-array')
var Struct = require('ref-struct')
var Union = require('ref-union');
var ref = require('ref')
var SDL_stdinc_lib = require('./SDL_stdinc')
var SDL_keyboard_lib = require('./SDL_keyboard')
var SDL_joystick_lib = require('./SDL_joystick')
var SDL_touch_lib = require('./SDL_touch')
var SDL_gesture_lib = require('./SDL_gesture')
var SDL_EventType = exports.SDL_EventType = {
SDL_FIRSTEVENT: 0,
SDL_QUIT: 256,
SDL_APP_TERMINATING: 257,
SDL_APP_LOWMEMORY: 258,
SDL_APP_WILLENTERBACKGROUND: 259,
SDL_APP_DIDENTERBACKGROUND: 260,
SDL_APP_WILLENTERFOREGROUND: 261,
SDL_APP_DIDENTERFOREGROUND: 262,
SDL_WINDOWEVENT: 512,
SDL_SYSWMEVENT: 513,
SDL_KEYDOWN: 768,
SDL_KEYUP: 769,
SDL_TEXTEDITING: 770,
SDL_TEXTINPUT: 771,
SDL_KEYMAPCHANGED: 772,
SDL_MOUSEMOTION: 1024,
SDL_MOUSEBUTTONDOWN: 1025,
SDL_MOUSEBUTTONUP: 1026,
SDL_MOUSEWHEEL: 1027,
SDL_JOYAXISMOTION: 1536,
SDL_JOYBALLMOTION: 1537,
SDL_JOYHATMOTION: 1538,
SDL_JOYBUTTONDOWN: 1539,
SDL_JOYBUTTONUP: 1540,
SDL_JOYDEVICEADDED: 1541,
SDL_JOYDEVICEREMOVED: 1542,
SDL_CONTROLLERAXISMOTION: 1616,
SDL_CONTROLLERBUTTONDOWN: 1617,
SDL_CONTROLLERBUTTONUP: 1618,
SDL_CONTROLLERDEVICEADDED: 1619,
SDL_CONTROLLERDEVICEREMOVED: 1620,
SDL_CONTROLLERDEVICEREMAPPED: 1621,
SDL_FINGERDOWN: 1792,
SDL_FINGERUP: 1793,
SDL_FINGERMOTION: 1794,
SDL_DOLLARGESTURE: 2048,
SDL_DOLLARRECORD: 2049,
SDL_MULTIGESTURE: 2050,
SDL_CLIPBOARDUPDATE: 2304,
SDL_DROPFILE: 4096,
SDL_AUDIODEVICEADDED: 4352,
SDL_AUDIODEVICEREMOVED: 4353,
SDL_RENDER_TARGETS_RESET: 8192,
SDL_RENDER_DEVICE_RESET: 8193,
SDL_USEREVENT: 32768,
SDL_LASTEVENT: 65535,
}
var SDL_eventaction = exports.SDL_eventaction = {
SDL_ADDEVENT: 0,
SDL_PEEKEVENT: 1,
SDL_GETEVENT: 2,
}
var SDL_bool = exports.SDL_bool = {
SDL_FALSE: 0,
SDL_TRUE: 1,
}
var voit = exports.voit = ref.types.void
var uint32 = exports.uint32 = ref.types.uint32
var Uint32 = SDL_stdinc_lib.Uint32
var SDL_CommonEvent = exports.SDL_CommonEvent = Struct({
type: Uint32,
timestamp: Uint32,
})
var Uint8 = SDL_stdinc_lib.Uint8
var Sint32 = SDL_stdinc_lib.Sint32
var SDL_WindowEvent = exports.SDL_WindowEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
event: Uint8,
padding1: Uint8,
padding2: Uint8,
padding3: Uint8,
data1: Sint32,
data2: Sint32,
})
var SDL_Keysym = SDL_keyboard_lib.SDL_Keysym
var SDL_KeyboardEvent = exports.SDL_KeyboardEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
state: Uint8,
repeat: Uint8,
padding2: Uint8,
padding3: Uint8,
keysym: SDL_Keysym,
})
var char = exports.char = ref.types.char
var c__S_SDL_TextEditingEvent_FI_text_arr = ArrayType(char, 32)
var SDL_TextEditingEvent = exports.SDL_TextEditingEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
text: c__S_SDL_TextEditingEvent_FI_text_arr,
start: Sint32,
length: Sint32,
})
var c__S_SDL_TextInputEvent_FI_text_arr = ArrayType(char, 32)
var SDL_TextInputEvent = exports.SDL_TextInputEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
text: c__S_SDL_TextInputEvent_FI_text_arr,
})
var SDL_MouseMotionEvent = exports.SDL_MouseMotionEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
which: Uint32,
state: Uint32,
x: Sint32,
y: Sint32,
xrel: Sint32,
yrel: Sint32,
})
var SDL_MouseButtonEvent = exports.SDL_MouseButtonEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
which: Uint32,
button: Uint8,
state: Uint8,
clicks: Uint8,
padding1: Uint8,
x: Sint32,
y: Sint32,
})
var SDL_MouseWheelEvent = exports.SDL_MouseWheelEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
which: Uint32,
x: Sint32,
y: Sint32,
direction: Uint32,
})
var SDL_JoystickID = SDL_joystick_lib.SDL_JoystickID
var Sint16 = SDL_stdinc_lib.Sint16
var Uint16 = SDL_stdinc_lib.Uint16
var SDL_JoyAxisEvent = exports.SDL_JoyAxisEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
axis: Uint8,
padding1: Uint8,
padding2: Uint8,
padding3: Uint8,
value: Sint16,
padding4: Uint16,
})
var SDL_JoyBallEvent = exports.SDL_JoyBallEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
ball: Uint8,
padding1: Uint8,
padding2: Uint8,
padding3: Uint8,
xrel: Sint16,
yrel: Sint16,
})
var SDL_JoyHatEvent = exports.SDL_JoyHatEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
hat: Uint8,
value: Uint8,
padding1: Uint8,
padding2: Uint8,
})
var SDL_JoyButtonEvent = exports.SDL_JoyButtonEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
button: Uint8,
state: Uint8,
padding1: Uint8,
padding2: Uint8,
})
var SDL_JoyDeviceEvent = exports.SDL_JoyDeviceEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: Sint32,
})
var SDL_ControllerAxisEvent = exports.SDL_ControllerAxisEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
axis: Uint8,
padding1: Uint8,
padding2: Uint8,
padding3: Uint8,
value: Sint16,
padding4: Uint16,
})
var SDL_ControllerButtonEvent = exports.SDL_ControllerButtonEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: SDL_JoystickID,
button: Uint8,
state: Uint8,
padding1: Uint8,
padding2: Uint8,
})
var SDL_ControllerDeviceEvent = exports.SDL_ControllerDeviceEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: Sint32,
})
var SDL_AudioDeviceEvent = exports.SDL_AudioDeviceEvent = Struct({
type: Uint32,
timestamp: Uint32,
which: Uint32,
iscapture: Uint8,
padding1: Uint8,
padding2: Uint8,
padding3: Uint8,
})
var SDL_TouchID = SDL_touch_lib.SDL_TouchID
var SDL_FingerID = SDL_touch_lib.SDL_FingerID
var float = exports.float = ref.types.float
var SDL_TouchFingerEvent = exports.SDL_TouchFingerEvent = Struct({
type: Uint32,
timestamp: Uint32,
touchId: SDL_TouchID,
fingerId: SDL_FingerID,
x: float,
y: float,
dx: float,
dy: float,
pressure: float,
})
var SDL_MultiGestureEvent = exports.SDL_MultiGestureEvent = Struct({
type: Uint32,
timestamp: Uint32,
touchId: SDL_TouchID,
dTheta: float,
dDist: float,
x: float,
y: float,
numFingers: Uint16,
padding: Uint16,
})
var SDL_GestureID = SDL_gesture_lib.SDL_GestureID
var SDL_DollarGestureEvent = exports.SDL_DollarGestureEvent = Struct({
type: Uint32,
timestamp: Uint32,
touchId: SDL_TouchID,
gestureId: SDL_GestureID,
numFingers: Uint32,
error: float,
x: float,
y: float,
})
var string = exports.string = ref.types.CString
var SDL_DropEvent = exports.SDL_DropEvent = Struct({
type: Uint32,
timestamp: Uint32,
file: string,
})
var SDL_QuitEvent = exports.SDL_QuitEvent = Struct({
type: Uint32,
timestamp: Uint32,
})
var SDL_OSEvent = exports.SDL_OSEvent = Struct({
type: Uint32,
timestamp: Uint32,
})
var voit_ptr = exports.voit_ptr = ref.refType(voit)
var SDL_UserEvent = exports.SDL_UserEvent = Struct({
type: Uint32,
timestamp: Uint32,
windowID: Uint32,
code: Sint32,
data1: voit_ptr,
data2: voit_ptr,
})
var SDL_SysWMmsg = exports.SDL_SysWMmsg = voit
var SDL_SysWMmsg_ptr = exports.SDL_SysWMmsg_ptr = ref.refType(SDL_SysWMmsg)
var SDL_SysWMEvent = exports.SDL_SysWMEvent = Struct({
type: Uint32,
timestamp: Uint32,
msg: SDL_SysWMmsg_ptr,
})
var c__U_SDL_Event_FI_padding_arr = ArrayType(Uint8, 56)
var SDL_Event = exports.SDL_Event = Union({
type: Uint32,
common: SDL_CommonEvent,
window: SDL_WindowEvent,
key: SDL_KeyboardEvent,
edit: SDL_TextEditingEvent,
text: SDL_TextInputEvent,
motion: SDL_MouseMotionEvent,
button: SDL_MouseButtonEvent,
wheel: SDL_MouseWheelEvent,
jaxis: SDL_JoyAxisEvent,
jball: SDL_JoyBallEvent,
jhat: SDL_JoyHatEvent,
jbutton: SDL_JoyButtonEvent,
jdevice: SDL_JoyDeviceEvent,
caxis: SDL_ControllerAxisEvent,
cbutton: SDL_ControllerButtonEvent,
cdevice: SDL_ControllerDeviceEvent,
adevice: SDL_AudioDeviceEvent,
quit: SDL_QuitEvent,
user: SDL_UserEvent,
syswm: SDL_SysWMEvent,
tfinger: SDL_TouchFingerEvent,
mgesture: SDL_MultiGestureEvent,
dgesture: SDL_DollarGestureEvent,
drop: SDL_DropEvent,
padding: c__U_SDL_Event_FI_padding_arr,
})
var int32 = exports.int32 = ref.types.int32
var SDL_Event_ptr = exports.SDL_Event_ptr = ref.refType(SDL_Event)
var SDL_EventFilter = exports.SDL_EventFilter = FFI.Function( int32, [ voit_ptr, SDL_Event_ptr, ] )
var SDL_EventFilter_ptr = exports.SDL_EventFilter_ptr = ref.refType(SDL_EventFilter)
var voit_ptr_ptr = exports.voit_ptr_ptr = ref.refType(voit_ptr)
FFI.Library(process.platform == 'win32' ? 'SDL2' : 'libSDL2', {
SDL_PumpEvents: [ voit, [ ] ],
SDL_PeepEvents: [ int32, [ SDL_Event_ptr, int32, uint32, Uint32, Uint32, ] ],
SDL_HasEvent: [ uint32, [ Uint32, ] ],
SDL_HasEvents: [ uint32, [ Uint32, Uint32, ] ],
SDL_FlushEvent: [ voit, [ Uint32, ] ],
SDL_FlushEvents: [ voit, [ Uint32, Uint32, ] ],
SDL_PollEvent: [ int32, [ SDL_Event_ptr, ] ],
SDL_WaitEvent: [ int32, [ SDL_Event_ptr, ] ],
SDL_WaitEventTimeout: [ int32, [ SDL_Event_ptr, int32, ] ],
SDL_PushEvent: [ int32, [ SDL_Event_ptr, ] ],
SDL_SetEventFilter: [ voit, [ SDL_EventFilter, voit_ptr, ] ],
SDL_GetEventFilter: [ uint32, [ SDL_EventFilter_ptr, voit_ptr_ptr, ] ],
SDL_AddEventWatch: [ voit, [ SDL_EventFilter, voit_ptr, ] ],
SDL_DelEventWatch: [ voit, [ SDL_EventFilter, voit_ptr, ] ],
SDL_FilterEvents: [ voit, [ SDL_EventFilter, voit_ptr, ] ],
SDL_EventState: [ Uint8, [ Uint32, int32, ] ],
SDL_RegisterEvents: [ Uint32, [ int32, ] ],
}, exports)