From 81ea8a7ab0111500704e80eb61004127707eb613 Mon Sep 17 00:00:00 2001 From: JupiterRider <60042618+JupiterRider@users.noreply.github.com> Date: Sun, 4 Jun 2023 12:15:07 +0200 Subject: [PATCH] Add go functions for rres-raylib.h --- rres/rres-raylib.go | 56 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/rres/rres-raylib.go b/rres/rres-raylib.go index ee6e028..6c0d76f 100644 --- a/rres/rres-raylib.go +++ b/rres/rres-raylib.go @@ -27,6 +27,47 @@ func LoadDataFromResource(chunk ResourceChunk) []byte { return v } +// LoadTextFromResource - Load text data from rres resource chunk +func LoadTextFromResource(chunk ResourceChunk) string { + cchunk := *(*C.rresResourceChunk)(unsafe.Pointer(&chunk)) + ret := C.LoadTextFromResource(cchunk) + defer C.free(unsafe.Pointer(ret)) + v := C.GoString(ret) + return v +} + +// LoadImageFromResource - Load Image data from rres resource chunk +func LoadImageFromResource(chunk ResourceChunk) rl.Image { + cchunk := *(*C.rresResourceChunk)(unsafe.Pointer(&chunk)) + ret := C.LoadImageFromResource(cchunk) + v := *(*rl.Image)(unsafe.Pointer(&ret)) + return v +} + +// LoadWaveFromResource - Load Wave data from rres resource chunk +func LoadWaveFromResource(chunk ResourceChunk) rl.Wave { + cchunk := *(*C.rresResourceChunk)(unsafe.Pointer(&chunk)) + ret := C.LoadWaveFromResource(cchunk) + v := *(*rl.Wave)(unsafe.Pointer(&ret)) + return v +} + +// LoadFontFromResource - Load Font data from rres resource multiple chunks +func LoadFontFromResource(multi ResourceMulti) rl.Font { + cmulti := *(*C.rresResourceMulti)(unsafe.Pointer(&multi)) + ret := C.LoadFontFromResource(cmulti) + v := *(*rl.Font)(unsafe.Pointer(&ret)) + return v +} + +// LoadMeshFromResource - Load Mesh data from rres resource multiple chunks +func LoadMeshFromResource(multi ResourceMulti) rl.Mesh { + cmulti := *(*C.rresResourceMulti)(unsafe.Pointer(&multi)) + ret := C.LoadMeshFromResource(cmulti) + v := *(*rl.Mesh)(unsafe.Pointer(&ret)) + return v +} + // UnpackResourceChunk - Unpack resource chunk data (decompres/decrypt data) // // NOTE: Function return 0 on success or other value on failure @@ -37,9 +78,14 @@ func UnpackResourceChunk(chunk *ResourceChunk) ErrorType { return v } -func LoadImageFromResource(chunk ResourceChunk) rl.Image { - cchunk := *(*C.rresResourceChunk)(unsafe.Pointer(&chunk)) - ret := C.LoadImageFromResource(cchunk) - v := *(*rl.Image)(unsafe.Pointer(&ret)) - return v +// SetBaseDirectory - Set base directory for externally linked data +// +// NOTE: When resource chunk contains an external link (FourCC: LINK, Type: RRES_DATA_LINK), +// a base directory is required to be prepended to link path +// +// If not provided, the application path is prepended to link by default +func SetBaseDirectory(baseDir string) { + cbaseDir := C.CString(baseDir) + defer C.free(unsafe.Pointer(cbaseDir)) + C.SetBaseDirectory(cbaseDir) }