Add go functions for rres-raylib.h

This commit is contained in:
JupiterRider 2023-06-04 12:15:07 +02:00
parent 349288d189
commit 81ea8a7ab0

View file

@ -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)
}