node-sdl2-engine
Bindings for SDL2 in Node
Note
This was originally developed by Zetsin from his https://github.com/zetsin/node-sdl2 repo. I needed more funtionality and I needed to change some things. All of the original code is his work and all credit should go to him. Thanks and enjoy!!... if it's useful to you =).
Additional Note
This project is just now being started. It is not ready for use in a production environment. I hope to have it complete soon. Thanks!
Installation
Install with npm:
npm install node-sdl2-engine
Usage
Api Reference )
1. Use with wrapped class (const NS = const App = NSappconst Window = NSwindow let win = winwin let { ...}
SDL 2.0 API by Category )
2. Use as primitive SDL2 API (const NS = const SDL2_video = NSconst SDL2_render = NS...
Tutorials
- Test everything in node-sdl2-engine, 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
Objecttittle
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
Integerh
Integer
win.on('close', (event) => {}
event
ObjectpreventDefault()
win.on('show', () => {})
win.on('hide', () => {})
win.on('move', (x, y) => {})
x
Integery
Integer
win.on('resize', (w, h) => {})
w
Integerh
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
Objectscancode
Integerscanname
Stringkeycode
Integerkeyname
Stringrepeat
Boolean
win.on('keyup', (key) => {})
key
Objectscancode
Integerscanname
Stringkeycode
Integerkeyname
Stringrepeat
Boolean
win.on('editing', ({str, start, length}) => {})
str
Stringstart
Integerlength
Integer
win.on('textinput', (str) => {})
str
String
win.on('mousemove', (pos) => {})
pos
Objectx
Integery
Integerxrel
Integeryrel
Integer
win.on('mousedown', (mou) => {})
mou
Objectx
Integery
Integerclicks
Integerbutton
String
win.on('mouseup', (mou) => {})
mou
Objectx
Integery
Integerclicks
Integerbutton
String
win.on('mousewheel', (mou) => {})
mou
Objectx
Integery
Integerclicks
Integerbutton
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]
Objectwin
Objectx
Integery
Integer
global
Objectx
Integery
Integer
relative
Objectx
Integery
Integer
power
Moniter the power infomation of hardware
- Methods
power.info
[Getter]
Objectlife
Integerpercentage
Integerstate
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
Stringpixelsize
Integerindex
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
Stringrgba
Integer|Object|Array - rgb | { rgb, a } | { r, g, b, a } | [rgb, a]
ft.shade(text, rgba, rgbaBG)
text
Stringrgba
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
Stringrgba
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()