node-sdl2
Bindings for SDL2 in Node
Installation
Install with npm:
npm install node-sdl2
Usage
Api Reference )
1. Use with wrapped class (const NS = require('node-sdl2')
const App = NS.app
const Window = NS.window
let win = new Window
win.on('close', () => {
App.quit()
})
win.on('change', () => {
draw()
})
let draw = () => {
...
}
SDL 2.0 API by Category )
2. Use as primitive SDL2 API (const NS = require('node-sdl2')
const SDL2_video = NS.require('SDL2_video')
const SDL2_render = NS.require('SDl2_render')
...
Tutorials
- Test everything in node-sdl2, you will get Screenshot shown below.
Screenshot
API References
app
Control your application's event lifecycle.
-
Methods
app.quit()
app.hide()
app.show()
app.exit()
-
Events
app.on('window-all-closed', () = {})
-
app.on('before-quit', (event) = {})
-
event
ObjectpreventDefalut()
-
-
app.on('will-quit', (event) = {})
-
event
ObjectpreventDefault()
-
-
app.on('drop', (file) = {})
-
file
String
-
window
Create and control
window(s)
.
-
Methods
-
let win = new window(opts)
-
opts
Object-
tittle
String -''
-
w
Integer -0x1FFF0000
-
h
Integer -0x1FFF0000
-
x
Integer -0x1FFF0000
-
y
Integer -0x1FFF0000
-
background
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a] -0xFF0000
-
center
Boolean -false
-
show
Boolean -true
-
closable
Boolean -true
-
resizable
Boolean -true
-
minimized
Boolean -false
-
maximized
Boolean -false
-
borderless
Boolean -false
-
fullscreen
Boolean -false
-
kiosk
Boolean -false
-
hdpi
Boolean -true
-
mouseCapture
Boolean -false
-
grab
Boolean -false
-
-
win.close()
win.destroy()
win.restore()
win.center()
-
win.setModal(win)
-
win
[Circular]
-
-
win.render
-
[Getter]
Object
-
-
win.size
-
[Getter]
Array-like Object -{ w: 100, h: 200, "1": 100, "2": 200 }
-
[Setter]
Object|Array -{ w: 100, h: 200 }
|[ 100, 200 ]
-
-
win.bounds
-
[Getter/Setter]
[Array-like Object / Object|Array] - { x, y, w, h }
-
-
win.minimumSize
-
[Getter/Setter]
[Array-like Object / Object|Array] - { w, h }
-
-
win.maximumSize
-
[Getter/Setter]
[Array-like Object / Object|Array] - { w, h }
-
-
win.bordersSize
-
[Getter]
[Array-like Object / Object|Array] - { top, right, bottom, left }
-
-
win.id
-
[Getter]
Integer
-
-
win.focus
-
[Getter/Setter]
Boolean
-
-
win.grab
-
[Getter/Setter]
Boolean
-
-
win.show
-
[Getter/Setter]
Boolean
-
-
win.maximize
-
[Getter/Setter]
Boolean
-
-
win.minimize
-
[Getter/Setter]
Boolean
-
-
win.fullScreen
-
[Getter/Setter]
Boolean
-
-
win.resizable
-
[Getter]
Boolean
-
-
win.closable
-
[Getter/Setter]
Boolean
-
-
win.position
-
[Getter/Setter]
Boolean
-
-
win.title
-
[Getter/Setter]
String
-
-
win.background
-
[Getter/Setter]
Integer
-
-
win.bordered
-
[Setter]
Boolean
-
-
win.screenKeyboard
-
[Getter]
Boolean
-
-
static
window.all
-
[Getter]
win
-
-
static
window.focused
-
[Getter]
win
-
-
static
window.mouseFocused
-
[Getter]
win
-
-
static
window.keyboardFocused
-
[Getter]
win
-
-
static
window.grabbed
-
[Getter]
win
-
-
static
window.mouseFocused
-
[Getter]
win
-
-
static
window.screenSaver
-
[Getter]
win
-
-
static
window.fromID
-
[Getter]
win
-
-
static
window.showMessageBox(opts, cb)
-
-
Events
-
win.on('change', (w, h) => {})
-
w
Integer -
h
Integer
-
-
win.on('close', (event) => {}
-
event
ObjectpreventDefault()
-
win.on('show', () => {})
win.on('hide', () => {})
-
win.on('move', (x, y) => {})
-
x
Integer -
y
Integer
-
-
win.on('resize', (w, h) => {})
-
w
Integer -
h
Integer
-
win.on('minimize', () => {})
win.on('maximize', () => {})
win.on('restore', () => {})
win.on('enter', () => {})
win.on('leave', () => {})
win.on('focus', () => {})
win.on('blur', () => {})
-
win.on('keydown', (key) => {})
-
key
Object-
scancode
Integer -
scanname
String -
keycode
Integer -
keyname
String -
repeat
Boolean
-
-
-
win.on('keyup', (key) => {})
-
key
Object-
scancode
Integer -
scanname
String -
keycode
Integer -
keyname
String -
repeat
Boolean
-
-
-
win.on('editing', ({str, start, length}) => {})
-
str
String -
start
Integer -
length
Integer
-
-
win.on('textinput', (str) => {})
-
str
String
-
-
win.on('mousemove', (pos) => {})
-
pos
Object-
x
Integer -
y
Integer -
xrel
Integer -
yrel
Integer
-
-
-
win.on('mousedown', (mou) => {})
-
mou
Object-
x
Integer -
y
Integer -
clicks
Integer -
button
String
-
-
-
win.on('mouseup', (mou) => {})
-
mou
Object-
x
Integer -
y
Integer -
clicks
Integer -
button
String
-
-
-
win.on('mousewheel', (mou) => {})
-
mou
Object-
x
Integer -
y
Integer -
clicks
Integer -
button
String
-
-
-
clipboard
Get and set the clipboard text.
-
Methods
-
clipboard.text
-
[Getter/Setter]
String
-
-
clipboard.hasText
-
[Getter]
Boolean
-
-
-
Events
- Event 'update'
keyboard
Control the keyboard.
- Methods
keyboard.startTextInput()
keyboard.stopTextInput()
-
keyboard.setTextInput(rect)
-
rect
Object|Array - { x, y, w, h }
-
-
keyboard.hasTextInput
-
[Getter]
Boolean
-
-
keyboard.hasScreenKeyboard
-
[Getter]
Boolean
-
-
keyboard.state
-
[Getter]
Object
-
-
keyboard.mod
-
[Getter]
Object
-
mouse
Control the mouse and cursor.
- Methods
mouse.setCursor(id)
mouse.setCursor(image, hot_x, hot_y)
mouse.setCursor(data, mask, w, h, hot_x, hot_y)
-
mouse.capture
-
[Setter]
Boolean
-
-
mouse.relative
-
[Getter/Setter]
Boolean
-
-
mouse.show
-
[Getter/Setter]
Boolean
-
-
mouse.state
-
[Getter]
Object-
win
Object-
x
Integer -
y
Integer
-
-
global
Object-
x
Integer -
y
Integer
-
-
relative
Object-
x
Integer -
y
Integer
-
-
-
power
Moniter the power infomation of hardware
- Methods
-
power.info
-
[Getter]
Object-
life
Integer -
percentage
Integer -
state
String
-
-
-
font
Allow you drawing text into window's face. please
npm install sdl2-ttf
before use.
- Methods
-
let ft = new font(file, pixelsize, index)
-
file
String -
pixelsize
Integer -
index
Integer
-
-
ft.style
-
[Geter/Setter]
String
-
-
ft.outline
-
[Geter/Setter]
Integer
-
-
ft.hinting
-
[Geter/Setter]
Integer
-
-
ft.kerning
-
[Geter/Setter]
Integer
-
-
ft.height
-
[Geter]
Integer
-
-
ft.ascent
-
[Geter]
Integer
-
-
ft.descent
-
[Geter]
Integer
-
-
ft.lineSkip
-
[Geter]
Integer
-
-
ft.solid(text, rgba)
-
text
String -
rgba
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a]
-
-
ft.shade(text, rgba, rgbaBG)
-
text
String -
rgba
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a] -
rgbaBG
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a]
-
-
ft.blend(text, rgba)
-
text
String -
rgba
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a]
-
ft.close()
-
ft.test(char)
-
char
String
-
-
ft.metrics(char)
-
char
String
-
-
ft.getSize(char)
-
char
String
-
-
static
font.init()
-
static
font.wasInit()
-
static
font.quit()
-
image
Load image from file. please
npm install sdl2-image
before use.
-
Methods
-
let img = new image(file)
-
file
String
-
img.free()
img.texture(render)
-
static
Image.init()
-
static
Image.quit()
-