raylib-go/raylib/platform_web.go
2017-12-10 19:30:42 +01:00

144 lines
2.3 KiB
Go

// +build js
package raylib
import (
"unsafe"
"github.com/gopherjs/gopherjs/js"
)
// InitWindow - Initialize Window and OpenGL Graphics
func InitWindow(width int32, height int32, t interface{}) {
js.Global.Get("Module").Call("_InitWindow", width, height, t.(string))
}
// SetCallbackFunc - Sets callback function
func SetCallbackFunc(func(unsafe.Pointer)) {
}
// SetMainLoop - Sets main loop function
func SetMainLoop(fn func(), fps int, infinite bool) {
js.Global.Get("Module").Call("_emscripten_set_main_loop", fn, fps, infinite)
}
// ShowCursor - Shows cursor
func ShowCursor() {
}
// HideCursor - Hides cursor
func HideCursor() {
}
// IsCursorHidden - Returns true if cursor is not visible
func IsCursorHidden() bool {
return false
}
// EnableCursor - Enables cursor
func EnableCursor() {
}
// DisableCursor - Disables cursor
func DisableCursor() {
}
// IsFileDropped - Check if a file have been dropped into window
func IsFileDropped() bool {
return false
}
// GetDroppedFiles - Retrieve dropped files into window
func GetDroppedFiles(count *int32) (f []string) {
return
}
// ClearDroppedFiles - Clear dropped files paths buffer
func ClearDroppedFiles() {
}
// OpenAsset - Open asset
func OpenAsset(name string) (a Asset, err error) {
defer func() {
e := recover()
if e == nil {
return
}
if e, ok := e.(*js.Error); ok {
err = e
} else {
panic(e)
}
}()
ptr := js.Global.Get("FS").Call("open", name, "r")
a = &asset{ptr, 0}
return
}
type asset struct {
ptr *js.Object
offset int64
}
func (a *asset) Read(p []byte) (n int, err error) {
defer func() {
e := recover()
if e == nil {
return
}
if e, ok := e.(*js.Error); ok {
err = e
} else {
panic(e)
}
}()
js.Global.Get("FS").Call("read", a.ptr, p, 0, cap(p), a.offset)
n = len(p)
return
}
func (a *asset) Seek(offset int64, whence int) (off int64, err error) {
defer func() {
e := recover()
if e == nil {
return
}
if e, ok := e.(*js.Error); ok {
err = e
} else {
panic(e)
}
}()
off = js.Global.Get("FS").Call("llseek", a.ptr, int(offset), int(whence)).Int64()
a.offset = off
return
}
func (a *asset) Close() (err error) {
defer func() {
e := recover()
if e == nil {
return
}
if e, ok := e.(*js.Error); ok {
err = e
} else {
panic(e)
}
}()
js.Global.Get("FS").Call("close", a.ptr)
return nil
}