diff --git a/examples/go.mod b/examples/go.mod
index 9b9293c..d731bb6 100644
--- a/examples/go.mod
+++ b/examples/go.mod
@@ -1,9 +1,20 @@
module github.com/BrownNPC/Raylib-Go-Wasm/examples
-go 1.24.1
+go 1.26.1
-replace github.com/gen2brain/raylib-go/raylib => ../raylib
+require (
+ github.com/gen2brain/raylib-go/raygui v0.0.0-00010101000000-000000000000
+ github.com/gen2brain/raylib-go/raylib v0.55.1
+)
-require github.com/gen2brain/raylib-go/raylib v0.0.0-00010101000000-000000000000
+replace (
+ github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime => ../wasm-runtime
-require github.com/BrownNPC/wasm-ffi-go v1.1.0 // indirect
+ github.com/gen2brain/raylib-go/raygui => ../raygui
+ github.com/gen2brain/raylib-go/raylib => ../raylib
+)
+
+require (
+ github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime v0.0.0-20260421110350-7c24b2d5e6d3 // indirect
+ github.com/BrownNPC/wasm-ffi-go v1.2.0 // indirect
+)
diff --git a/examples/go.sum b/examples/go.sum
index 808648e..b242b0a 100644
--- a/examples/go.sum
+++ b/examples/go.sum
@@ -1,2 +1,2 @@
-github.com/BrownNPC/wasm-ffi-go v1.1.0 h1:oashfuQflpB+qx/xI71Gvim3YN/0iIny5TMIpzEFz0Y=
-github.com/BrownNPC/wasm-ffi-go v1.1.0/go.mod h1:D5+RBMb672fgw6vPz4HOWYxpyrmPrIao8VqlXihOFFg=
+github.com/BrownNPC/wasm-ffi-go v1.2.0 h1:Lknst90sTLTkE870OKNP/Vw36TohQIJ4ln8W1IG9Zl0=
+github.com/BrownNPC/wasm-ffi-go v1.2.0/go.mod h1:D5+RBMb672fgw6vPz4HOWYxpyrmPrIao8VqlXihOFFg=
diff --git a/examples/raygui/main.go b/examples/raygui/main.go
new file mode 100644
index 0000000..37e9446
--- /dev/null
+++ b/examples/raygui/main.go
@@ -0,0 +1,284 @@
+//go:build js
+
+package main
+
+import (
+ "fmt"
+
+ gui "github.com/gen2brain/raylib-go/raygui"
+ rl "github.com/gen2brain/raylib-go/raylib"
+)
+
+/*******************************************************************************************
+*
+* raygui - controls test suite
+*
+* TEST CONTROLS:
+* - gui.DropdownBox()
+* - gui.CheckBox()
+* - gui.Spinner()
+* - gui.ValueBox()
+* - gui.TextBox()
+* - gui.Button()
+* - gui.ComboBox()
+* - gui.ListView()
+* - gui.ToggleGroup()
+* - gui.ColorPicker()
+* - gui.Slider()
+* - gui.SliderBar()
+* - gui.ProgressBar()
+* - gui.ColorBarAlpha()
+* - gui.ScrollPanel()
+*
+*
+* DEPENDENCIES:
+* raylib 4.0 - Windowing/input management and drawing.
+* raygui 3.2 - Immediate-mode GUI controls.
+*
+* COMPILATION (Windows - MinGW):
+* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99
+*
+* LICENSE: zlib/libpng
+*
+* Copyright (c) 2016-2022 Ramon Santamaria (@raysan5)
+*
+**********************************************************************************************/
+
+//#define RAYGUI_CUSTOM_ICONS // It requires providing gui_icons.h in the same directory
+//#include "gui_icons.h" // External icons data provided, it can be generated with rGuiIcons tool
+
+// ------------------------------------------------------------------------------------
+// Program main entry point
+// ------------------------------------------------------------------------------------
+func main() {
+ // Initialization
+ //---------------------------------------------------------------------------------------
+ const (
+ screenWidth = 690
+ screenHeight = 560
+ )
+
+ rl.InitWindow(screenWidth, screenHeight, "raygui - controls test suite")
+ rl.SetExitKey(0)
+
+ // GUI controls initialization
+ //----------------------------------------------------------------------------------
+ var (
+ dropdownBox000Active int32 = 0
+ dropDown000EditMode bool = false
+
+ dropdownBox001Active int32 = 0
+ dropDown001EditMode bool = false
+
+ spinner001Value int32 = 0
+ spinnerEditMode bool = false
+
+ valueBox002Value int32 = 0
+ valueBoxEditMode bool = false
+
+ textBoxText = "Text box"
+ textBoxEditMode bool = false
+
+ // listViewScrollIndex int32 = 0
+ // listViewActive int32 = -1
+
+ // listViewExScrollIndex int32 = 0
+ // listViewExActive int32 = 2
+ // listViewExFocus int32 = -1
+ // listViewExList = []string{"This", "is", "a", "list view", "with", "disable", "elements", "amazing!"}
+
+ colorPickerValue = rl.Red
+
+ sliderValue float32 = 50
+ sliderBarValue float32 = 60
+ progressValue float32 = 0.4
+
+ forceSquaredChecked bool = false
+
+ alphaValue float32 = 0.5
+
+ comboBoxActive int32 = 1
+
+ toggleGroupActive int32 = 0
+
+ viewScroll = rl.Vector2{0, 0}
+
+ //----------------------------------------------------------------------------------
+
+ // Custom GUI font loading
+ //Font font = LoadFontEx("fonts/rainyhearts16.ttf", 12, 0, 0);
+ //GuiSetFont(font);
+
+ exitWindow bool = false
+ showMessageBox bool = false
+
+ textInput string
+ showTextInputBox bool = false
+
+ // TODO textInputFileName string
+ )
+
+ rl.SetTargetFPS(60)
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ update := func() { // Detect window close button or ESC key
+ _ = exitWindow
+ // Update
+ //----------------------------------------------------------------------------------
+
+ if rl.IsKeyPressed(rl.KeyEscape) {
+ showMessageBox = !showMessageBox
+ }
+
+ if rl.IsKeyDown(rl.KeyLeftControl) && rl.IsKeyPressed(rl.KeyS) {
+ showTextInputBox = true
+ }
+
+ // TODO if rl.IsFileDropped() {
+ // TODO var droppedFiles gui.FilePathList = rl.LoadDroppedFiles()
+ // TODO if (droppedFiles.count > 0) && rl.IsFileExtension(droppedFiles.paths[0], ".rgs") {
+ // TODO gui.LoadStyle(droppedFiles.paths[0])
+ // TODO }
+ // TODO rl.UnloadDroppedFiles(droppedFiles) // Clear internal buffers
+ // TODO }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ rl.BeginDrawing()
+
+ rl.ClearBackground(rl.GetColor(uint(gui.GetStyle(gui.DEFAULT, gui.BACKGROUND_COLOR))))
+
+ // raygui: controls drawing
+ //----------------------------------------------------------------------------------
+ if dropDown000EditMode || dropDown001EditMode {
+ gui.Lock()
+ } else if !dropDown000EditMode && !dropDown001EditMode {
+ gui.Unlock()
+ }
+ //GuiDisable();
+
+ // First GUI column
+ //GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT);
+ forceSquaredChecked = gui.CheckBox(rl.Rectangle{25, 108, 15, 15}, "FORCE CHECK!", forceSquaredChecked)
+
+ gui.SetStyle(gui.TEXTBOX, gui.TEXT_ALIGNMENT, gui.TEXT_ALIGN_CENTER)
+ //GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT);
+ gui.Spinner(rl.Rectangle{25, 135, 125, 30}, "", &spinner001Value, 0, 100, spinnerEditMode)
+
+ if gui.ValueBox(rl.Rectangle{25, 175, 125, 30}, "", &valueBox002Value, 0, 100, valueBoxEditMode) {
+ valueBoxEditMode = !valueBoxEditMode
+ }
+ gui.SetStyle(gui.TEXTBOX, gui.TEXT_ALIGNMENT, gui.TEXT_ALIGN_LEFT)
+ if gui.TextBox(rl.Rectangle{25, 215, 125, 30}, &textBoxText, 64, textBoxEditMode) {
+ textBoxEditMode = !textBoxEditMode
+ }
+
+ gui.SetStyle(gui.BUTTON, gui.TEXT_ALIGNMENT, gui.TEXT_ALIGN_CENTER)
+
+ if gui.Button(rl.Rectangle{25, 255, 125, 30}, gui.IconText(gui.ICON_FILE_SAVE, "Save File")) {
+ showTextInputBox = true
+ }
+
+ gui.GroupBox(rl.Rectangle{25, 310, 125, 150}, "STATES")
+ //GuiLock();
+ gui.SetState(gui.STATE_NORMAL)
+ if gui.Button(rl.Rectangle{30, 320, 115, 30}, "NORMAL") {
+ }
+ gui.SetState(gui.STATE_FOCUSED)
+ if gui.Button(rl.Rectangle{30, 355, 115, 30}, "FOCUSED") {
+ }
+ gui.SetState(gui.STATE_PRESSED)
+ if gui.Button(rl.Rectangle{30, 390, 115, 30}, "#15#PRESSED") {
+ }
+ gui.SetState(gui.STATE_DISABLED)
+ if gui.Button(rl.Rectangle{30, 425, 115, 30}, "DISABLED") {
+ }
+ gui.SetState(gui.STATE_NORMAL)
+ //GuiUnlock();
+
+ comboBoxActive = gui.ComboBox(rl.Rectangle{25, 470, 125, 30}, "ONE;TWO;THREE;FOUR", comboBoxActive)
+
+ // NOTE: gui.DropdownBox must draw after any other control that can be covered on unfolding
+ gui.SetStyle(gui.DROPDOWNBOX, gui.TEXT_ALIGNMENT, gui.TEXT_ALIGN_LEFT)
+ if gui.DropdownBox(rl.Rectangle{25, 65, 125, 30}, "#01#ONE;#02#TWO;#03#THREE;#04#FOUR", &dropdownBox001Active, dropDown001EditMode) {
+ dropDown001EditMode = !dropDown001EditMode
+ }
+
+ gui.SetStyle(gui.DROPDOWNBOX, gui.TEXT_ALIGNMENT, gui.TEXT_ALIGN_CENTER)
+ if gui.DropdownBox(rl.Rectangle{25, 25, 125, 30}, "ONE;TWO;THREE", &dropdownBox000Active, dropDown000EditMode) {
+ dropDown000EditMode = !dropDown000EditMode
+ }
+
+ // Second GUI column
+ // listViewActive = gui.ListView(rl.Rectangle{165, 25, 140, 140}, "Charmander;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey", &listViewScrollIndex, listViewActive)
+ // listViewExActive = gui.ListViewEx(rl.Rectangle{165, 180, 140, 200}, listViewExList, &listViewExFocus, &listViewExScrollIndex, listViewExActive)
+
+ toggleGroupActive = gui.ToggleGroup(rl.Rectangle{165, 400, 140, 25}, "#1#ONE\n#3#TWO\n#8#THREE\n#23#", toggleGroupActive)
+
+ // Third GUI column
+ gui.Panel(rl.NewRectangle(320, 25, 225, 140), "Panel Info")
+ colorPickerValue = gui.ColorPicker(rl.Rectangle{320, 185, 196, 192}, "", colorPickerValue)
+
+ sliderValue = gui.Slider(rl.Rectangle{355, 400, 165, 20}, "TEST",
+ fmt.Sprintf("%2.2f", sliderValue), sliderValue, -50, 100)
+ sliderBarValue = gui.SliderBar(rl.Rectangle{320, 430, 200, 20}, "",
+ fmt.Sprintf("%2.2f", sliderBarValue), sliderBarValue, 0, 100)
+ progressValue = gui.ProgressBar(rl.Rectangle{320, 460, 200, 20}, "", "", progressValue, 0, 1)
+
+ // NOTE: View rectangle could be used to perform some scissor test
+ var view rl.Rectangle
+ gui.ScrollPanel(rl.Rectangle{560, 25, 102, 354}, "", rl.Rectangle{560, 25, 300, 1200}, &viewScroll, &view)
+
+ var mouseCell rl.Vector2
+ gui.Grid(rl.Rectangle{560, 25 + 180 + 195, 100, 120}, "", 20, 3, &mouseCell)
+
+ alphaValue = gui.ColorBarAlpha(rl.Rectangle{320, 490, 200, 30}, "", alphaValue)
+
+ gui.StatusBar(rl.Rectangle{0, float32(rl.GetScreenHeight()) - 20, float32(rl.GetScreenWidth()), 20}, "This is a status bar")
+
+ if showMessageBox {
+ rl.DrawRectangle(0, 0, int32(rl.GetScreenWidth()), int32(rl.GetScreenHeight()), rl.Fade(rl.RayWhite, 0.8))
+ var result int32 = gui.MessageBox(rl.Rectangle{float32(rl.GetScreenWidth())/2 - 125, float32(rl.GetScreenHeight())/2 - 50, 250, 100}, gui.IconText(gui.ICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No")
+
+ if (result == 0) || (result == 2) {
+ showMessageBox = false
+ } else if result == 1 {
+ exitWindow = true
+ }
+ }
+
+ if showTextInputBox {
+ rl.DrawRectangle(0, 0, int32(rl.GetScreenWidth()), int32(rl.GetScreenHeight()), rl.Fade(rl.RayWhite, 0.8))
+ var secretViewActive bool
+ var result int32 = gui.TextInputBox(
+ rl.Rectangle{float32(rl.GetScreenWidth())/2 - 120, float32(rl.GetScreenHeight())/2 - 60, 240, 140},
+ "Save",
+ gui.IconText(gui.ICON_FILE_SAVE, "Save file as..."),
+ "Ok;Cancel",
+ &textInput, 255, &secretViewActive)
+
+ if result == 1 {
+ // TODO: Validate textInput value and save
+ // strcpy(textInputFileName, textInput)
+ // TODO textInputFileName = textInput
+ }
+ if (result == 0) || (result == 1) || (result == 2) {
+ showTextInputBox = false
+ //strcpy(textInput, "\0");
+ textInput = ""
+ }
+ }
+ //----------------------------------------------------------------------------------
+
+ rl.EndDrawing()
+ //----------------------------------------------------------------------------------
+ }
+ rl.SetMain(update)
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ rl.CloseWindow() // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+}
diff --git a/index/index.html b/index/index.html
index 6a1d51c..b601842 100644
--- a/index/index.html
+++ b/index/index.html
@@ -1,61 +1,27 @@
-
-
-
+
-
-
diff --git a/index/index.js b/index/index.js
index d19f170..38b9226 100644
--- a/index/index.js
+++ b/index/index.js
@@ -1,30 +1,46 @@
-const overlay = document.getElementById('loading-overlay');
-function hideOverlay() { overlay.style.display = 'none' }
-function showOverlay() { overlay.style.display = 'flex' }
-
-// show loading overlay
-showOverlay();
+// disable right click context menu
+document.getElementById("canvas").addEventListener(
+ "contextmenu",
+ (e) => e.preventDefault(),
+);
+// INITIALIZE RAYLIB
import Module from "./rl/raylib.js";
-
const wasmBinary = await fetch("./rl/raylib.wasm")
- .then(r => r.arrayBuffer());
-
-// disable right click context menu
-document.getElementById("canvas").addEventListener('contextmenu', e => e.preventDefault())
+ .then((r) => r.arrayBuffer());
-let mod = await Module({
- canvas: document.getElementById('canvas'),
+const raylib = await Module({
+ canvas: document.getElementById("canvas"),
wasmBinary: new Uint8Array(wasmBinary),
});
-window.mod = mod
+// INITIALIZE GO
const go = new Go();
-WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject)
- .then(result => {
- // hide loading overlay before running code
- hideOverlay();
- go.run(result.instance);
- })
- .catch(console.error);
+// inject raylib
+go.importObject.raylib = raylib;
+go.importObject.globalThis = globalThis;
+globalThis.raylib = raylib;
+// compatibility with old bindings (v1)
+globalThis.mod = raylib;
+
+import { Runtime } from "./runtime.js"; // helper funtions
+//init
+const runtime = new Runtime();
+// inject custom runtime methods
+Object.assign(go.importObject.gojs, {
+ CStringFromGoString: runtime.CStringFromGoString.bind(runtime),
+ CStringGetLength: runtime.CStringGetLength.bind(runtime),
+ CStringArrayGetLength: runtime.CStringArrayGetLength.bind(runtime),
+ CopyToC: runtime.CopyToC.bind(runtime),
+ CopyToGo: runtime.CopyToGo.bind(runtime),
+ Alert: runtime.Alert.bind(runtime),
+});
+
+WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then(
+ (result) => {
+ const instance = result.instance;
+ globalThis.goInstance = instance;
+ go.run(instance);
+ },
+);
diff --git a/index/runtime.js b/index/runtime.js
new file mode 100644
index 0000000..f5e27dc
--- /dev/null
+++ b/index/runtime.js
@@ -0,0 +1,156 @@
+// Helper functions called from Go via go:wasmimport
+
+class Runtime {
+ constructor() {
+ }
+ get mem() {
+ return new DataView(globalThis.goInstance.exports.mem.buffer);
+ }
+ getmem(addr, len) {
+ return new Uint8Array(globalThis.goInstance.exports.mem.buffer, addr, len);
+ }
+ get Sp() {
+ return globalThis.goInstance.exports.getsp() >>> 0;
+ }
+ // ---- Helpers from wasm_exec.js ----
+ setInt32 = (addr, v) => {
+ return this.mem.setUint32(addr + 0, v, true);
+ };
+ getInt32 = (addr) => {
+ return this.mem.getUint32(addr + 0, true);
+ };
+
+ setInt64 = (addr, v) => {
+ this.mem.setUint32(addr + 0, v, true);
+ this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);
+ };
+
+ getInt64 = (addr) => {
+ const low = this.mem.getUint32(addr + 0, true);
+ const high = this.mem.getInt32(addr + 4, true);
+ return low + high * 4294967296;
+ };
+
+ loadSlice = (addr) => {
+ const array = this.getInt64(addr + 0);
+ const len = this.getInt64(addr + 8);
+ return this.getmem(array, len);
+ };
+
+ // ---- Runtime helpers ----
+ getRaylibU8Array(cptr, len) {
+ return new Uint8Array( // js slice
+ globalThis.raylib.HEAPU8.buffer,
+ cptr,
+ len,
+ );
+ }
+ // func(cptr) cstr
+ // Scans for null terminator and returns the length
+ CStringGetLength = (sp) => {
+ sp >>>= 0;
+ const cStr = this.getInt32(sp + 8 * 1);
+ const view = raylib.HEAPU8.subarray(cStr);
+ let len = 0;
+ while (view[len] !== 0) {
+ len++;
+ }
+ this.setInt32(sp + 8 * 2, len);
+ };
+ // func(string) cptr
+ // returns pointer to C string in raylib memory
+ CStringFromGoString = (sp) => {
+ sp >>>= 0;
+ // get string addr and length
+ const saddr = this.getInt64(sp + 8 * 1); // go string address
+ const len = this.getInt64(sp + 8 * 2); // go string length
+
+ const goStrView = this.getmem(saddr, len); // js slice
+
+ // malloc cstr with room for null terminator
+ const cstr = globalThis.raylib._malloc(len + 1);
+ const cStrView = this.getRaylibU8Array(cstr, len + 1);
+
+ // copy Go string to C
+ cStrView.set(goStrView);
+ // // set last byte to null terminator
+ cStrView[len] = 0;
+ // return cstr
+ this.setInt32(sp + 8 * 3, cstr);
+ };
+ CStringArrayGetLength = (sp) => {
+ sp >>>= 0;
+
+ const basePtr = this.getInt32(sp + 8 * 1);
+ const heap32 = raylib.HEAP32;
+
+ let count = 0;
+ const idx = basePtr >> 2; // convert byte offset → i32 index
+ const heapLen = heap32.length;
+
+ while (idx + count < heapLen) {
+ const ptr = heap32[idx + count];
+ if (ptr === 0) break;
+ count++;
+ }
+
+ if (idx + count >= heapLen) {
+ throw new Error("CStringArrayGetLength: reached heap end without finding NULL terminator");
+ }
+
+ this.setInt32(sp + 8 * 2, count);
+ };
+ // func(src unsafe.Pointer, srcSize, dstCptr cptr)
+ // copies Go memory to C memory. Useful for copying slices and structs.
+ // Destination C array must have enough space.
+ // src must be a type. cannot be a slice. To pass a slice, use unsafe.SliceData
+ CopyToC = (sp) => {
+ sp >>>= 0;
+ const srcGoPtr = this.getInt64(sp + 8 * 1);
+ const srcSize = this.getInt32(sp + 8 * 2); // size of the dstGoPtr
+ // size and pointer are packed into a single 64bit int by Go's compiler
+ const dstCptr = this.getInt32(sp + 8 * 2 + 4);
+
+ const goBytes = this.getmem(srcGoPtr, srcSize);
+ this.getRaylibU8Array(dstCptr, srcSize).set(goBytes);
+ };
+ // func(dstGoPtr unsafe.Pointer, size int32, src cptr)
+ // copies C memory to a Go pointer. Useful for copying C structs into Go structs
+ //
+ // example usage:
+ // type Person struct{
+ // Age string
+ // }
+ //
+ // var cPtrToPersonInCHeap cptr = ...
+ //
+ // var p Person
+ // CopyToGo(unsafe.Pointer(&p),unsafe.SizeOf(p),cPtrToPersonInCHeap)
+ //
+ // p.Age == (whatever it was in C)
+ CopyToGo = (sp) => {
+ sp >>>= 0;
+ const dstGoPtr = this.getInt64(sp + 8 * 1);
+ const size = this.getInt32(sp + 8 * 2); // size of the dstGoPtr
+ // size and pointer are packed into a single 64bit int by Go's compiler
+ const srcCptr = this.getInt32(sp + 8 * 2 + 4);
+
+ const srcCBytes = this.getRaylibU8Array(srcCptr, size);
+ const dstGoBytes = this.getmem(dstGoPtr, size);
+ // copy C bytes to Go
+ dstGoBytes.set(srcCBytes);
+ };
+ // func alert(string)
+ Alert = (sp) => {
+ sp >>>= 0;
+ const saddr = this.getInt64(sp + 8 * 1);
+ const len = this.getInt64(sp + 8 * 2);
+ const strU8 = this.getmem(saddr, len);
+
+ const decoder = new TextDecoder("utf-8"); // 'utf-8' is the default encoding
+ const str = decoder.decode(strU8);
+ alert(str);
+ };
+}
+
+export { Runtime };
diff --git a/raygui/cstring.go b/raygui/cstring.go
new file mode 100644
index 0000000..03187f9
--- /dev/null
+++ b/raygui/cstring.go
@@ -0,0 +1,109 @@
+//go:build js
+
+package raygui
+
+import (
+ "github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime"
+)
+
+func makeStringArray(size int) wasm.Ptr {
+ var arr = make([]wasm.Ptr, size)
+ ptr, _ := wasm.CopySliceToC(arr)
+ return ptr
+}
+
+func setStringArray(arr wasm.Ptr, idx int, cstring wasm.Ptr) {
+ wasm.CopyToC(&cstring, arr+(wasm.Ptr(idx*wasm.PTR_SIZE)))
+}
+
+// TODO: do this in the runtime if possible.
+// CStringArray represents an array of pointers to NULL terminated C strings,
+// the array itself is terminated with a NULL
+type CStringArray struct {
+ Pointer wasm.Ptr
+ Length int
+}
+
+// NewCStringArray returns an instance of CStringArray
+func NewCStringArray() *CStringArray {
+ return &CStringArray{}
+}
+
+// NewCStringArray returns an instance of CStringArray
+func NewCStringArrayFromPointer(p wasm.Ptr) *CStringArray {
+ length := wasm.CStringArrayGetLength(p)
+ return &CStringArray{
+ Pointer: p,
+ Length: int(length),
+ }
+}
+
+// NewCStringArrayFromSlice makes an instance of CStringArray then copy the
+// input slice to it. The returned CStringArray takes ownership of the allocated
+// C memory and must be Free()d by the caller.
+func NewCStringArrayFromSlice(ss []string) *CStringArray {
+ var arr CStringArray
+ arr.Copy(ss)
+ return &arr
+}
+
+// TODO: do this in the runtime if possible.
+// ToSlice converts CStringArray to Go slice of strings
+func (arr *CStringArray) ToSlice() []string {
+ if arr.Length == 0 || arr.Pointer == 0 {
+ return []string{}
+ }
+
+ var ss []string
+ p := arr.Pointer
+ //NOTE: upstream raylib-go does this wrong.
+ for i := 0; i < arr.Length; i++ {
+ var cs wasm.Ptr
+ wasm.CopyToGo(p, wasm.PTR_SIZE, &cs)
+ if cs == 0 { // skip NULL - the last element
+ break
+ }
+ ss = append(ss, wasm.GoString(cs))
+ p += wasm.PTR_SIZE
+ }
+ return ss
+}
+
+// TODO: do this in the runtime if possible.
+// Copy converts Go slice of strings to C underlying struct of CStringArray
+func (arr *CStringArray) Copy(ss []string) {
+ // Free existing C memory if any
+ if arr.Pointer != 0 || arr.Length > 0 {
+ arr.Free()
+ }
+
+ arr.Length = len(ss) + 1 // one more element for NULL at the end
+ arr.Pointer = makeStringArray(arr.Length)
+
+ for i, s := range ss {
+ str := wasm.CString(s)
+ // copy the pointer into the array.
+ // A CStringArray is an array of pointers.
+ wasm.CopyToC(&str, arr.Pointer+wasm.Ptr(i*wasm.PTR_SIZE))
+ }
+}
+
+// TODO: do this in the runtime if possible.
+//
+// Free frees C underlying struct of CStringArray
+// MUST call this method after using CStringArray
+// Exception: If you use NewCStringArrayFromPointer() to create CStringArray object
+// and you use other way to free C underlying structure pointed by the pointer,
+// then don't need to call Free()
+func (arr *CStringArray) Free() {
+ for i := range wasm.Ptr(arr.Length) {
+ idx := (i * wasm.PTR_SIZE)
+ var cs wasm.Ptr
+ wasm.CopyToGo(arr.Pointer+idx, wasm.PTR_SIZE, &cs)
+ if cs == 0 { // skip NULL - the last element
+ break
+ }
+ wasm.Free(cs)
+ }
+ wasm.Free(arr.Pointer)
+}
diff --git a/raygui/go.mod b/raygui/go.mod
new file mode 100644
index 0000000..cb90c60
--- /dev/null
+++ b/raygui/go.mod
@@ -0,0 +1,14 @@
+module github.com/BrownNPC/Raylib-Go-Wasm/raygui
+
+require (
+ github.com/BrownNPC/Raylib-Go-Wasm/raylib v0.0.0-20260421110350-7c24b2d5e6d3
+ github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime v0.0.0-20260421110350-7c24b2d5e6d3
+)
+
+require github.com/BrownNPC/wasm-ffi-go v1.2.0 // indirect
+
+replace github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime => ../wasm-runtime
+
+replace github.com/BrownNPC/Raylib-Go-Wasm/raylib => ../raylib
+
+go 1.26.1
diff --git a/raygui/go.sum b/raygui/go.sum
new file mode 100644
index 0000000..b242b0a
--- /dev/null
+++ b/raygui/go.sum
@@ -0,0 +1,2 @@
+github.com/BrownNPC/wasm-ffi-go v1.2.0 h1:Lknst90sTLTkE870OKNP/Vw36TohQIJ4ln8W1IG9Zl0=
+github.com/BrownNPC/wasm-ffi-go v1.2.0/go.mod h1:D5+RBMb672fgw6vPz4HOWYxpyrmPrIao8VqlXihOFFg=
diff --git a/raygui/raygui.go b/raygui/raygui.go
new file mode 100644
index 0000000..2e5e9ac
--- /dev/null
+++ b/raygui/raygui.go
@@ -0,0 +1,1595 @@
+//go:build js
+
+package raygui
+
+import (
+ "image/color"
+
+ wasm "github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime"
+ rl "github.com/BrownNPC/Raylib-Go-Wasm/raylib"
+)
+
+type (
+ ControlID uint16
+ PropertyID uint16
+ PropertyValue uint32
+
+ IconID uint32
+)
+
+func (p PropertyID) IsExtended() bool {
+ return p >= 16
+}
+
+func (v PropertyValue) AsColor() rl.Color {
+ return rl.Color{uint8(v >> 24), uint8(v >> 16), uint8(v >> 8), uint8(v)}
+}
+
+func NewColorPropertyValue(color rl.Color) PropertyValue {
+ return PropertyValue(uint32(color.R)<<24 + uint32(color.G)<<16 + uint32(color.B)<<8 + uint32(color.A))
+}
+
+// Gui control state
+const (
+ STATE_NORMAL PropertyValue = iota
+ STATE_FOCUSED
+ STATE_PRESSED
+ STATE_DISABLED
+)
+
+// Gui control text alignment
+const (
+ TEXT_ALIGN_LEFT PropertyValue = iota
+ TEXT_ALIGN_CENTER
+ TEXT_ALIGN_RIGHT
+)
+
+// Gui control text alignment vertical
+// NOTE: Text vertical position inside the text bounds
+const (
+ TEXT_ALIGN_TOP PropertyValue = iota
+ TEXT_ALIGN_MIDDLE
+ TEXT_ALIGN_BOTTOM
+)
+
+// Gui control text wrap mode
+// NOTE: Useful for multiline text
+const (
+ TEXT_WRAP_NONE PropertyValue = iota
+ TEXT_WRAP_CHAR
+ TEXT_WRAP_WORD
+)
+
+const (
+ SCROLLBAR_LEFT_SIDE PropertyValue = iota
+ SCROLLBAR_RIGHT_SIDE
+)
+
+// Gui controls
+const (
+ // Default -> populates to all controls when set
+ DEFAULT ControlID = iota
+
+ // Basic controls
+ LABEL // Used also for: LABELBUTTON
+ BUTTON
+ TOGGLE // Used also for: TOGGLEGROUP
+ SLIDER // Used also for: SLIDERBAR, TOGGLESLIDER
+ PROGRESSBAR
+ CHECKBOX
+ COMBOBOX
+ DROPDOWNBOX
+ TEXTBOX // Used also for: TEXTBOXMULTI
+ VALUEBOX
+ CONTROL11
+ LISTVIEW
+ COLORPICKER
+ SCROLLBAR
+ STATUSBAR
+)
+
+// ----------------------------------------------------------------------------------
+// Module Types and Structures Definition
+// ----------------------------------------------------------------------------------
+// Gui control property style color element
+const (
+ BORDER PropertyID = iota
+ BASE
+ TEXT
+ OTHER
+)
+
+// Gui base properties for every control
+// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties)
+const (
+ BORDER_COLOR_NORMAL PropertyID = iota // Control border color in STATE_NORMAL
+ BASE_COLOR_NORMAL // Control base color in STATE_NORMAL
+ TEXT_COLOR_NORMAL // Control text color in STATE_NORMAL
+ BORDER_COLOR_FOCUSED // Control border color in STATE_FOCUSED
+ BASE_COLOR_FOCUSED // Control base color in STATE_FOCUSED
+ TEXT_COLOR_FOCUSED // Control text color in STATE_FOCUSED
+ BORDER_COLOR_PRESSED // Control border color in STATE_PRESSED
+ BASE_COLOR_PRESSED // Control base color in STATE_PRESSED
+ TEXT_COLOR_PRESSED // Control text color in STATE_PRESSED
+ BORDER_COLOR_DISABLED // Control border color in STATE_DISABLED
+ BASE_COLOR_DISABLED // Control base color in STATE_DISABLED
+ TEXT_COLOR_DISABLED // Control text color in STATE_DISABLED
+ BORDER_WIDTH // Control border size, 0 for no border
+ TEXT_PADDING // Control text padding, not considering border
+ TEXT_ALIGNMENT // Control text horizontal alignment inside control text bound (after border and padding)
+)
+
+// Gui extended properties depend on control
+// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties)
+// ----------------------------------------------------------------------------------
+// DEFAULT extended properties
+// NOTE: Those properties are common to all controls or global
+// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT?
+const (
+ TEXT_SIZE PropertyID = 16 + iota // Text size (glyphs max height)
+ TEXT_SPACING // Text spacing between glyphs
+ LINE_COLOR // Line control color
+ BACKGROUND_COLOR // Background color
+ TEXT_LINE_SPACING // Text spacing between lines
+ TEXT_ALIGNMENT_VERTICAL // Text vertical alignment inside text bounds (after border and padding)
+ TEXT_WRAP_MODE // Text wrap-mode inside text bounds
+)
+
+// Toggle/ToggleGroup
+const (
+ GROUP_PADDING PropertyID = 16 + iota // ToggleGroup separation between toggles
+)
+
+// Slider/SliderBar
+const (
+ SLIDER_WIDTH PropertyID = 16 + iota // Slider size of internal bar
+ SLIDER_PADDING // Slider/SliderBar internal bar padding
+)
+
+// ProgressBar
+const (
+ PROGRESS_PADDING PropertyID = 16 + iota // ProgressBar internal padding
+)
+
+// ScrollBar
+const (
+ ARROWS_SIZE PropertyID = 16 + iota // ScrollBar arrows size
+ ARROWS_VISIBLE // ScrollBar arrows visible
+ SCROLL_SLIDER_PADDING // ScrollBar slider internal padding
+ SCROLL_SLIDER_SIZE // ScrollBar slider size
+ SCROLL_PADDING // ScrollBar scroll padding from arrows
+ SCROLL_SPEED // ScrollBar scrolling speed
+)
+
+// CheckBox
+const (
+ CHECK_PADDING PropertyID = 16 + iota // CheckBox internal check padding
+)
+
+// ComboBox
+const (
+ COMBO_BUTTON_WIDTH PropertyID = 16 + iota // ComboBox right button width
+ COMBO_BUTTON_SPACING // ComboBox button separation
+)
+
+// DropdownBox
+const (
+ ARROW_PADDING PropertyID = 16 + iota // DropdownBox arrow separation from border and items
+ DROPDOWN_ITEMS_SPACING // DropdownBox items separation
+ DROPDOWN_ARROW_HIDDEN // DropdownBox arrow hidden
+ DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down)
+)
+
+// TextBox/TextBoxMulti/ValueBox/Spinner
+const (
+ TEXT_READONLY PropertyID = 16 + iota // TextBox in read-only mode: 0-text editable, 1-text no-editable
+)
+
+// ValueBox/Spinner
+const (
+ SPINNER_BUTTON_WIDTH PropertyID = 16 // Spinner left/right buttons width
+ SPINNER_BUTTON_SPACING // Spinner buttons separation
+)
+
+// ListView
+const (
+ LIST_ITEMS_HEIGHT PropertyID = 16 + iota // ListView items height
+ LIST_ITEMS_SPACING // ListView items separation
+ SCROLLBAR_WIDTH // ListView scrollbar size (usually width)
+ SCROLLBAR_SIDE // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE)
+ LIST_ITEMS_BORDER_NORMAL // ListView items border enabled in normal state
+ LIST_ITEMS_BORDER_WIDTH // ListView items border width
+)
+
+// ColorPicker
+const (
+ COLOR_SELECTOR_SIZE PropertyID = 16 + iota
+ HUEBAR_WIDTH // ColorPicker right hue bar width
+ HUEBAR_PADDING // ColorPicker right hue bar separation from panel
+ HUEBAR_SELECTOR_HEIGHT // ColorPicker right hue bar selector height
+ HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow
+)
+
+// Icons enumeration
+const (
+ ICON_NONE IconID = 0
+ ICON_FOLDER_FILE_OPEN IconID = 1
+ ICON_FILE_SAVE_CLASSIC IconID = 2
+ ICON_FOLDER_OPEN IconID = 3
+ ICON_FOLDER_SAVE IconID = 4
+ ICON_FILE_OPEN IconID = 5
+ ICON_FILE_SAVE IconID = 6
+ ICON_FILE_EXPORT IconID = 7
+ ICON_FILE_ADD IconID = 8
+ ICON_FILE_DELETE IconID = 9
+ ICON_FILETYPE_TEXT IconID = 10
+ ICON_FILETYPE_AUDIO IconID = 11
+ ICON_FILETYPE_IMAGE IconID = 12
+ ICON_FILETYPE_PLAY IconID = 13
+ ICON_FILETYPE_VIDEO IconID = 14
+ ICON_FILETYPE_INFO IconID = 15
+ ICON_FILE_COPY IconID = 16
+ ICON_FILE_CUT IconID = 17
+ ICON_FILE_PASTE IconID = 18
+ ICON_CURSOR_HAND IconID = 19
+ ICON_CURSOR_POINTER IconID = 20
+ ICON_CURSOR_CLASSIC IconID = 21
+ ICON_PENCIL IconID = 22
+ ICON_PENCIL_BIG IconID = 23
+ ICON_BRUSH_CLASSIC IconID = 24
+ ICON_BRUSH_PAINTER IconID = 25
+ ICON_WATER_DROP IconID = 26
+ ICON_COLOR_PICKER IconID = 27
+ ICON_RUBBER IconID = 28
+ ICON_COLOR_BUCKET IconID = 29
+ ICON_TEXT_T IconID = 30
+ ICON_TEXT_A IconID = 31
+ ICON_SCALE IconID = 32
+ ICON_RESIZE IconID = 33
+ ICON_FILTER_POINT IconID = 34
+ ICON_FILTER_BILINEAR IconID = 35
+ ICON_CROP IconID = 36
+ ICON_CROP_ALPHA IconID = 37
+ ICON_SQUARE_TOGGLE IconID = 38
+ ICON_SYMMETRY IconID = 39
+ ICON_SYMMETRY_HORIZONTAL IconID = 40
+ ICON_SYMMETRY_VERTICAL IconID = 41
+ ICON_LENS IconID = 42
+ ICON_LENS_BIG IconID = 43
+ ICON_EYE_ON IconID = 44
+ ICON_EYE_OFF IconID = 45
+ ICON_FILTER_TOP IconID = 46
+ ICON_FILTER IconID = 47
+ ICON_TARGET_POINT IconID = 48
+ ICON_TARGET_SMALL IconID = 49
+ ICON_TARGET_BIG IconID = 50
+ ICON_TARGET_MOVE IconID = 51
+ ICON_CURSOR_MOVE IconID = 52
+ ICON_CURSOR_SCALE IconID = 53
+ ICON_CURSOR_SCALE_RIGHT IconID = 54
+ ICON_CURSOR_SCALE_LEFT IconID = 55
+ ICON_UNDO IconID = 56
+ ICON_REDO IconID = 57
+ ICON_REREDO IconID = 58
+ ICON_MUTATE IconID = 59
+ ICON_ROTATE IconID = 60
+ ICON_REPEAT IconID = 61
+ ICON_SHUFFLE IconID = 62
+ ICON_EMPTYBOX IconID = 63
+ ICON_TARGET IconID = 64
+ ICON_TARGET_SMALL_FILL IconID = 65
+ ICON_TARGET_BIG_FILL IconID = 66
+ ICON_TARGET_MOVE_FILL IconID = 67
+ ICON_CURSOR_MOVE_FILL IconID = 68
+ ICON_CURSOR_SCALE_FILL IconID = 69
+ ICON_CURSOR_SCALE_RIGHT_FILL IconID = 70
+ ICON_CURSOR_SCALE_LEFT_FILL IconID = 71
+ ICON_UNDO_FILL IconID = 72
+ ICON_REDO_FILL IconID = 73
+ ICON_REREDO_FILL IconID = 74
+ ICON_MUTATE_FILL IconID = 75
+ ICON_ROTATE_FILL IconID = 76
+ ICON_REPEAT_FILL IconID = 77
+ ICON_SHUFFLE_FILL IconID = 78
+ ICON_EMPTYBOX_SMALL IconID = 79
+ ICON_BOX IconID = 80
+ ICON_BOX_TOP IconID = 81
+ ICON_BOX_TOP_RIGHT IconID = 82
+ ICON_BOX_RIGHT IconID = 83
+ ICON_BOX_BOTTOM_RIGHT IconID = 84
+ ICON_BOX_BOTTOM IconID = 85
+ ICON_BOX_BOTTOM_LEFT IconID = 86
+ ICON_BOX_LEFT IconID = 87
+ ICON_BOX_TOP_LEFT IconID = 88
+ ICON_BOX_CENTER IconID = 89
+ ICON_BOX_CIRCLE_MASK IconID = 90
+ ICON_POT IconID = 91
+ ICON_ALPHA_MULTIPLY IconID = 92
+ ICON_ALPHA_CLEAR IconID = 93
+ ICON_DITHERING IconID = 94
+ ICON_MIPMAPS IconID = 95
+ ICON_BOX_GRID IconID = 96
+ ICON_GRID IconID = 97
+ ICON_BOX_CORNERS_SMALL IconID = 98
+ ICON_BOX_CORNERS_BIG IconID = 99
+ ICON_FOUR_BOXES IconID = 100
+ ICON_GRID_FILL IconID = 101
+ ICON_BOX_MULTISIZE IconID = 102
+ ICON_ZOOM_SMALL IconID = 103
+ ICON_ZOOM_MEDIUM IconID = 104
+ ICON_ZOOM_BIG IconID = 105
+ ICON_ZOOM_ALL IconID = 106
+ ICON_ZOOM_CENTER IconID = 107
+ ICON_BOX_DOTS_SMALL IconID = 108
+ ICON_BOX_DOTS_BIG IconID = 109
+ ICON_BOX_CONCENTRIC IconID = 110
+ ICON_BOX_GRID_BIG IconID = 111
+ ICON_OK_TICK IconID = 112
+ ICON_CROSS IconID = 113
+ ICON_ARROW_LEFT IconID = 114
+ ICON_ARROW_RIGHT IconID = 115
+ ICON_ARROW_DOWN IconID = 116
+ ICON_ARROW_UP IconID = 117
+ ICON_ARROW_LEFT_FILL IconID = 118
+ ICON_ARROW_RIGHT_FILL IconID = 119
+ ICON_ARROW_DOWN_FILL IconID = 120
+ ICON_ARROW_UP_FILL IconID = 121
+ ICON_AUDIO IconID = 122
+ ICON_FX IconID = 123
+ ICON_WAVE IconID = 124
+ ICON_WAVE_SINUS IconID = 125
+ ICON_WAVE_SQUARE IconID = 126
+ ICON_WAVE_TRIANGULAR IconID = 127
+ ICON_CROSS_SMALL IconID = 128
+ ICON_PLAYER_PREVIOUS IconID = 129
+ ICON_PLAYER_PLAY_BACK IconID = 130
+ ICON_PLAYER_PLAY IconID = 131
+ ICON_PLAYER_PAUSE IconID = 132
+ ICON_PLAYER_STOP IconID = 133
+ ICON_PLAYER_NEXT IconID = 134
+ ICON_PLAYER_RECORD IconID = 135
+ ICON_MAGNET IconID = 136
+ ICON_LOCK_CLOSE IconID = 137
+ ICON_LOCK_OPEN IconID = 138
+ ICON_CLOCK IconID = 139
+ ICON_TOOLS IconID = 140
+ ICON_GEAR IconID = 141
+ ICON_GEAR_BIG IconID = 142
+ ICON_BIN IconID = 143
+ ICON_HAND_POINTER IconID = 144
+ ICON_LASER IconID = 145
+ ICON_COIN IconID = 146
+ ICON_EXPLOSION IconID = 147
+ ICON_1UP IconID = 148
+ ICON_PLAYER IconID = 149
+ ICON_PLAYER_JUMP IconID = 150
+ ICON_KEY IconID = 151
+ ICON_DEMON IconID = 152
+ ICON_TEXT_POPUP IconID = 153
+ ICON_GEAR_EX IconID = 154
+ ICON_CRACK IconID = 155
+ ICON_CRACK_POINTS IconID = 156
+ ICON_STAR IconID = 157
+ ICON_DOOR IconID = 158
+ ICON_EXIT IconID = 159
+ ICON_MODE_2D IconID = 160
+ ICON_MODE_3D IconID = 161
+ ICON_CUBE IconID = 162
+ ICON_CUBE_FACE_TOP IconID = 163
+ ICON_CUBE_FACE_LEFT IconID = 164
+ ICON_CUBE_FACE_FRONT IconID = 165
+ ICON_CUBE_FACE_BOTTOM IconID = 166
+ ICON_CUBE_FACE_RIGHT IconID = 167
+ ICON_CUBE_FACE_BACK IconID = 168
+ ICON_CAMERA IconID = 169
+ ICON_SPECIAL IconID = 170
+ ICON_LINK_NET IconID = 171
+ ICON_LINK_BOXES IconID = 172
+ ICON_LINK_MULTI IconID = 173
+ ICON_LINK IconID = 174
+ ICON_LINK_BROKE IconID = 175
+ ICON_TEXT_NOTES IconID = 176
+ ICON_NOTEBOOK IconID = 177
+ ICON_SUITCASE IconID = 178
+ ICON_SUITCASE_ZIP IconID = 179
+ ICON_MAILBOX IconID = 180
+ ICON_MONITOR IconID = 181
+ ICON_PRINTER IconID = 182
+ ICON_PHOTO_CAMERA IconID = 183
+ ICON_PHOTO_CAMERA_FLASH IconID = 184
+ ICON_HOUSE IconID = 185
+ ICON_HEART IconID = 186
+ ICON_CORNER IconID = 187
+ ICON_VERTICAL_BARS IconID = 188
+ ICON_VERTICAL_BARS_FILL IconID = 189
+ ICON_LIFE_BARS IconID = 190
+ ICON_INFO IconID = 191
+ ICON_CROSSLINE IconID = 192
+ ICON_HELP IconID = 193
+ ICON_FILETYPE_ALPHA IconID = 194
+ ICON_FILETYPE_HOME IconID = 195
+ ICON_LAYERS_VISIBLE IconID = 196
+ ICON_LAYERS IconID = 197
+ ICON_WINDOW IconID = 198
+ ICON_HIDPI IconID = 199
+ ICON_FILETYPE_BINARY IconID = 200
+ ICON_HEX IconID = 201
+ ICON_SHIELD IconID = 202
+ ICON_FILE_NEW IconID = 203
+ ICON_FOLDER_ADD IconID = 204
+ ICON_ALARM IconID = 205
+ ICON_CPU IconID = 206
+ ICON_ROM IconID = 207
+ ICON_STEP_OVER IconID = 208
+ ICON_STEP_INTO IconID = 209
+ ICON_STEP_OUT IconID = 210
+ ICON_RESTART IconID = 211
+ ICON_BREAKPOINT_ON IconID = 212
+ ICON_BREAKPOINT_OFF IconID = 213
+ ICON_BURGER_MENU IconID = 214
+ ICON_CASE_SENSITIVE IconID = 215
+ ICON_REG_EXP IconID = 216
+ ICON_FOLDER IconID = 217
+ ICON_FILE IconID = 218
+ ICON_SAND_TIMER IconID = 219
+ ICON_WARNING IconID = 220
+ ICON_HELP_BOX IconID = 221
+ ICON_INFO_BOX IconID = 222
+ ICON_PRIORITY IconID = 223
+ ICON_LAYERS_ISO IconID = 224
+ ICON_LAYERS2 IconID = 225
+ ICON_MLAYERS IconID = 226
+ ICON_MAPS IconID = 227
+ ICON_HOT IconID = 228
+ ICON_LABEL IconID = 229
+ ICON_NAME_ID IconID = 230
+ ICON_SLICING IconID = 231
+ ICON_MANUAL_CONTROL IconID = 232
+ ICON_COLLISION IconID = 233
+ ICON_CIRCLE_ADD IconID = 234
+ ICON_CIRCLE_ADD_FILL IconID = 235
+ ICON_CIRCLE_WARNING IconID = 236
+ ICON_CIRCLE_WARNING_FILL IconID = 237
+ ICON_BOX_MORE IconID = 238
+ ICON_BOX_MORE_FILL IconID = 239
+ ICON_BOX_MINUS IconID = 240
+ ICON_BOX_MINUS_FILL IconID = 241
+ ICON_UNION IconID = 242
+ ICON_INTERSECTION IconID = 243
+ ICON_DIFFERENCE IconID = 244
+ ICON_SPHERE IconID = 245
+ ICON_CYLINDER IconID = 246
+ ICON_CONE IconID = 247
+ ICON_ELLIPSOID IconID = 248
+ ICON_CAPSULE IconID = 249
+ ICON_250 IconID = 250
+ ICON_251 IconID = 251
+ ICON_252 IconID = 252
+ ICON_253 IconID = 253
+ ICON_254 IconID = 254
+ ICON_255 IconID = 255
+)
+
+//----------------------------------------------------------------------------------
+// Gui Setup Functions Definition
+//----------------------------------------------------------------------------------
+
+//go:wasmimport raylib _GuiEnable
+//go:noescape
+func guiEnable()
+
+// Enable gui global state
+func Enable() {
+ guiEnable()
+}
+
+//go:wasmimport raylib _GuiDisable
+//go:noescape
+func guiDisable()
+
+// Disable gui global state
+func Disable() {
+ guiDisable()
+}
+
+//go:wasmimport raylib _GuiLock
+//go:noescape
+func guiLock()
+
+// Lock gui global state
+func Lock() {
+ guiLock()
+}
+
+//go:wasmimport raylib _GuiUnlock
+//go:noescape
+func guiUnlock()
+
+// Unlock gui global state
+func Unlock() {
+ guiUnlock()
+}
+
+// Check if gui is locked (global state)
+//
+//go:wasmimport raylib _GuiIsLocked
+//go:noescape
+func IsLocked() bool
+
+// Set gui controls alpha global state
+//
+//go:wasmimport raylib _GuiSetAlpha
+//go:noescape
+func SetAlpha(alpha float32)
+
+// Set gui state (global state)
+//
+//go:wasmimport raylib _GuiSetState
+//go:noescape
+func SetState(state PropertyValue)
+
+// Get gui state (global state)
+//
+//go:wasmimport raylib _GuiGetState
+//go:noescape
+func GetState() PropertyValue
+
+//go:wasmimport raylib _GuiSetFont
+//go:noescape
+func guiSetFont(font wasm.Ptr)
+
+// Set custom gui font
+func SetFont(font rl.Font) {
+ v, free := wasm.CopyValueToC(&font)
+ defer free()
+ guiSetFont(v)
+}
+
+//go:wasmimport raylib _GuiGetFont
+//go:noescape
+func guiGetFont(ret wasm.Ptr)
+
+// Get custom gui font
+func GetFont() rl.Font {
+ var ret rl.Font
+ v, free := wasm.MallocV[rl.Font]()
+ defer free()
+
+ guiGetFont(v)
+ wasm.CopyValueToGo(v, &ret)
+ return ret
+}
+
+//go:wasmimport raylib _GuiSetStyle
+//go:noescape
+func guiSetStyle(control, property, value int32) int32
+
+// Set control style property value
+func SetStyle(control ControlID, property PropertyID, value PropertyValue) {
+ ccontrol := int32(control)
+ cproperty := int32(property)
+ cvalue := int32(value)
+ guiSetStyle(ccontrol, cproperty, cvalue)
+}
+
+//go:wasmimport raylib _GuiGetStyle
+//go:noescape
+func guiGetStyle(control, property int32) int32
+
+// Get control style property value
+func GetStyle(control ControlID, property PropertyID) PropertyValue {
+ ccontrol := int32(control)
+ cproperty := int32(property)
+ return PropertyValue(guiGetStyle(ccontrol, cproperty))
+}
+
+func GetColor(control ControlID, property PropertyID) rl.Color {
+ color := guiGetStyle(int32(control), int32(property))
+ return rl.Color{R: uint8(color >> 24), G: uint8(color >> 16), B: uint8(color >> 8), A: uint8(color)}
+}
+
+//----------------------------------------------------------------------------------
+// Gui Controls Functions Definition
+//----------------------------------------------------------------------------------
+
+//go:wasmimport raylib _GuiWindowBox
+//go:noescape
+func guiWindowBox(bounds wasm.Ptr, title wasm.Ptr) int32
+
+// Window Box control
+func WindowBox(bounds rl.Rectangle, title string) bool {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+ ctitle := wasm.CString(title)
+ defer wasm.Free(ctitle)
+ return guiWindowBox(cbounds, ctitle) != 0
+}
+
+//go:wasmimport raylib _GuiGroupBox
+//go:noescape
+func guiGroupBox(bounds wasm.Ptr, text wasm.Ptr)
+
+// Group Box control with text name
+func GroupBox(bounds rl.Rectangle, text string) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiGroupBox(cbounds, ctext)
+}
+
+//go:wasmimport raylib _GuiLine
+//go:noescape
+func guiLine(bounds wasm.Ptr, text wasm.Ptr)
+
+// Line control
+func Line(bounds rl.Rectangle, text string) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiLine(cbounds, ctext)
+}
+
+//go:wasmimport raylib _GuiPanel
+//go:noescape
+func guiPanel(bounds wasm.Ptr, text wasm.Ptr)
+
+// Panel control
+func Panel(bounds rl.Rectangle, text string) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiPanel(cbounds, ctext)
+}
+
+/*
+//go:wasmimport raylib _GuiTabBar
+//go:noescape
+func guiTabBar(bounds rl.Rectangle, text []wasm.Ptr, active *int32) int32
+
+// Tab Bar control, returns the current TAB closing requested, -1 otherwise
+func TabBar(bounds rl.Rectangle, text []string, active *int32) int32 {
+ var cbounds rl.Rectangle
+ cbounds.X = float32(bounds.X)
+ cbounds.Y = float32(bounds.Y)
+ cbounds.Width = float32(bounds.Width)
+ cbounds.Height = float32(bounds.Height)
+
+ ctext := NewCStringArrayFromSlice(text)
+ defer ctext.Free()
+
+ count := int32(len(text))
+
+ if active == nil {
+ active = new(int32)
+ }
+ cactive := int32(*active)
+ defer func() {
+ *active = int32(cactive)
+ }()
+ return int32(guiTabBar(cbounds, (*wasm.Ptr)(ctext.Pointer), count, cactive))
+}
+*/
+
+//go:wasmimport raylib _GuiScrollPanel
+//go:noescape
+func guiScrollPanel(bounds wasm.Ptr, text wasm.Ptr, content wasm.Ptr, scroll wasm.Ptr, view wasm.Ptr)
+
+// Scroll Panel control
+func ScrollPanel(bounds rl.Rectangle, text string, content rl.Rectangle, scroll *rl.Vector2, view *rl.Rectangle) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ ccontent, free := wasm.CopyValueToC(&content)
+ defer free()
+
+ cscroll, free := wasm.CopyValueToC(scroll)
+ defer free()
+
+ cview, free := wasm.CopyValueToC(view)
+ defer free()
+
+ guiScrollPanel(cbounds, ctext, ccontent, cscroll, cview)
+
+ wasm.CopyValueToGo(cscroll, scroll)
+ wasm.CopyValueToGo(cview, view)
+}
+
+//go:wasmimport raylib _GuiLabel
+//go:noescape
+func guiLabel(bounds wasm.Ptr, text wasm.Ptr)
+
+// Label control
+func Label(bounds rl.Rectangle, text string) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiLabel(cbounds, ctext)
+}
+
+//go:wasmimport raylib _GuiButton
+//go:noescape
+func guiButton(bounds wasm.Ptr, text wasm.Ptr) int32
+
+// Button control, returns true when clicked
+func Button(bounds rl.Rectangle, text string) bool {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ return guiButton(cbounds, ctext) != 0
+}
+
+//go:wasmimport raylib _GuiLabelButton
+//go:noescape
+func guiLabelButton(bounds wasm.Ptr, text wasm.Ptr) int32
+
+// LabelButton control, returns true when clicked
+func LabelButton(bounds rl.Rectangle, text string) bool {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return guiLabelButton(cbounds, ctext) != 0
+}
+
+//go:wasmimport raylib _GuiToggle
+//go:noescape
+func guiToggle(bounds wasm.Ptr, text wasm.Ptr, active int32) int32
+
+// Toggle control, returns true when active
+func Toggle(bounds rl.Rectangle, text string, active bool) bool {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ return guiToggle(cbounds, ctext, wasm.BtoI(active)) != 0
+}
+
+//go:wasmimport raylib _GuiToggleGroup
+//go:noescape
+func guiToggleGroup(bounds wasm.Ptr, text wasm.Ptr, active int32) int32
+
+// ToggleGroup control, returns active toggle index
+func ToggleGroup(bounds rl.Rectangle, text string, active int32) int32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return guiToggleGroup(cbounds, ctext, active)
+}
+
+//go:wasmimport raylib _GuiToggleSlider
+//go:noescape
+func guiToggleSlider(bounds wasm.Ptr, text wasm.Ptr, active int32) int32
+
+// ToggleSlider control, returns true when clicked
+func ToggleSlider(bounds rl.Rectangle, text string, active int32) int32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return guiToggleSlider(cbounds, ctext, active)
+}
+
+//go:wasmimport raylib _GuiCheckBox
+//go:noescape
+func guiCheckBox(bounds wasm.Ptr, text wasm.Ptr, checked wasm.Ptr) int32
+
+// CheckBox control, returns true when active
+func CheckBox(bounds rl.Rectangle, text string, checked bool) bool {
+
+ cbounds, freeBounds := wasm.CopyValueToC(&bounds)
+ defer freeBounds()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ cchecked, freeChecked := wasm.CopyValueToC(&checked)
+ defer func() {
+ wasm.CopyValueToGo(cchecked,&checked)
+ freeChecked()
+ }()
+ guiCheckBox(cbounds, ctext, cchecked)
+ return checked
+}
+
+//go:wasmimport raylib _GuiComboBox
+//go:noescape
+func guiComboBox(bounds wasm.Ptr, text wasm.Ptr, active int32) int32
+
+// ComboBox control, returns selected item index
+func ComboBox(bounds rl.Rectangle, text string, active int32) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return guiComboBox(cbounds, ctext, active)
+}
+
+//go:wasmimport raylib _GuiDropdownBox
+//go:noescape
+func guiDropdownBox(bounds wasm.Ptr, text wasm.Ptr, active wasm.Ptr, editMode int32) int32
+
+// DropdownBox control, returns true when clicked
+func DropdownBox(bounds rl.Rectangle, text string, active *int32, editMode bool) bool {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ if active == nil {
+ active = new(int32)
+ }
+ cactive, free := wasm.CopyValueToC(active)
+ defer func() {
+ wasm.CopyValueToGo(cactive, active)
+ free()
+ }()
+
+ ceditMode := wasm.BtoI(editMode)
+
+ return guiDropdownBox(cbounds, ctext, cactive, ceditMode) != 0
+}
+
+//go:wasmimport raylib _GuiTextBox
+//go:noescape
+func guiTextBox(bounds wasm.Ptr, text wasm.Ptr, textSize int32, editMode int32) int32
+
+// TextBox control, updates input text, returns true on ENTER pressed or defocused
+func TextBox(bounds rl.Rectangle, text *string, textSize int32, editMode bool) bool {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ // Allocate writable buffer of size textSize
+ // Truncate to textSize-1 and NUL-terminate
+ currentText := []byte(*text)
+ if len(currentText) > int(textSize)-1 {
+ currentText = currentText[:int(textSize)-1]
+ }
+ // Create a zero-filled buffer of size textSize
+ buffer := make([]byte, textSize)
+ copy(buffer, currentText)
+ // buffer is already zero-filled by make, so NUL-termination is automatic
+
+ ctext, freeText := wasm.CopySliceToC(buffer)
+ defer freeText()
+
+ ctextSize := int32(textSize)
+ ceditMode := wasm.BtoI(editMode)
+
+ result := guiTextBox(cbounds, ctext, ctextSize, ceditMode) != 0
+
+ // Copy the result back
+ *text = wasm.GoString(ctext)
+
+ return result
+}
+
+//go:wasmimport raylib _GuiSpinner
+//go:noescape
+func guiSpinner(bounds wasm.Ptr, text wasm.Ptr, value wasm.Ptr, minValue, maxValue int32, editMode int32) int32
+
+// Spinner control, sets value to the selected number and returns true when clicked.
+func Spinner(bounds rl.Rectangle, text string, value *int32, minValue, maxValue int, editMode bool) bool {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ if value == nil {
+ value = new(int32)
+ }
+ cvalue, free := wasm.CopyValueToC(value)
+ defer func() {
+ wasm.CopyValueToGo(cvalue, value)
+ free()
+ }()
+
+ return guiSpinner(cbounds, ctext, cvalue, int32(minValue), int32(maxValue), wasm.BtoI(editMode)) != 0
+}
+
+//go:wasmimport raylib _GuiValueBox
+//go:noescape
+func guiValueBox(bounds wasm.Ptr, text wasm.Ptr, value wasm.Ptr, minValue, maxValue int32, editMode int32) int32
+
+// ValueBox control, updates input text with numbers
+func ValueBox(bounds rl.Rectangle, text string, value *int32, minValue, maxValue int, editMode bool) bool {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ if value == nil {
+ value = new(int32)
+ }
+
+ cvalue, free := wasm.CopyValueToC(value)
+ defer func() {
+ wasm.CopyValueToGo(cvalue, value)
+ free()
+ }()
+ cminValue := int32(minValue)
+ cmaxValue := int32(maxValue)
+ ceditMode := wasm.BtoI(editMode)
+
+ return guiValueBox(cbounds, ctext, cvalue, cminValue, cmaxValue, ceditMode) != 0
+}
+
+/*
+//go:wasmimport raylib _GuiValueBoxFloat
+//go:noescape
+func guiValueBoxFloat(bounds rl.Rectangle, text wasm.Ptr, textValue *wasm.Ptr, value *float32, editMode int32) int32
+
+// Floating point Value Box control, updates input val_str with numbers
+func ValueBoxFloat(bounds rl.Rectangle, text string, textValue *string, value *float32, editMode bool) bool {
+ var cbounds rl.Rectangle
+ cbounds.X = float32(bounds.X)
+ cbounds.Y = float32(bounds.Y)
+ cbounds.Width = float32(bounds.Width)
+ cbounds.Height = float32(bounds.Height)
+ var ctext wasm.Ptr
+ if len(text) > 0 {
+ ctext = wasm.CString(text)
+ defer wasm.Free(ctext)
+ }
+
+ bs := []byte(*textValue)
+ if len(bs) == 0 {
+ bs = []byte{byte(0)}
+ }
+ if 0 < len(bs) && bs[len(bs)-1] != byte(0) { // minimalize allocation
+ bs = append(bs, byte(0)) // for next input symbols
+ }
+ ctextValue := (wasm.Ptr)(unsafe.Pointer(bs[0]))
+ defer func() {
+ *textValue = strings.Trim(string(bs), "\x00")
+ // no need : wasm.Free(ctext)
+ }()
+
+ if value == nil {
+ value = new(float32)
+ }
+ cvalue := float32(*value)
+ defer func() {
+ *value = float32(cvalue)
+ }()
+
+ return guiValueBoxFloat(cbounds, ctext, ctextValue, &cvalue, wasm.BtoI(editMode)) != 0
+}
+*/
+
+//go:wasmimport raylib _GuiSlider
+//go:noescape
+func guiSlider(bounds wasm.Ptr, textLeft, textRight wasm.Ptr, value, minValue, maxValue float32) float32
+
+// Slider control
+func Slider(bounds rl.Rectangle, textLeft, textRight string, value, minValue, maxValue float32) float32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctextLeft := wasm.CString(textLeft)
+ defer wasm.Free(ctextLeft)
+ ctextRight := wasm.CString(textRight)
+ defer wasm.Free(ctextRight)
+
+ cvalue := float32(value)
+ cminValue := float32(minValue)
+ cmaxValue := float32(maxValue)
+ return guiSlider(cbounds, ctextLeft, ctextRight, cvalue, cminValue, cmaxValue)
+}
+
+//go:wasmimport raylib _GuiSliderBar
+//go:noescape
+func guiSliderBar(bounds wasm.Ptr, textLeft, textRight wasm.Ptr, value, minValue, maxValue float32) float32
+
+// SliderBar control, returns selected value
+func SliderBar(bounds rl.Rectangle, textLeft, textRight string, value, minValue, maxValue float32) float32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctextLeft := wasm.CString(textLeft)
+ defer wasm.Free(ctextLeft)
+ ctextRight := wasm.CString(textRight)
+ defer wasm.Free(ctextRight)
+
+ cvalue := float32(value)
+ cminValue := float32(minValue)
+ cmaxValue := float32(maxValue)
+ guiSliderBar(cbounds, ctextLeft, ctextRight, cvalue, cminValue, cmaxValue)
+ return float32(cvalue)
+}
+
+//go:wasmimport raylib _GuiProgressBar
+//go:noescape
+func guiProgressBar(bounds wasm.Ptr, textLeft, textRight wasm.Ptr, value, minValue, maxValue float32) float32
+
+// ProgressBar control, shows current progress value
+func ProgressBar(bounds rl.Rectangle, textLeft, textRight string, value, minValue, maxValue float32) float32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctextLeft := wasm.CString(textLeft)
+ defer wasm.Free(ctextLeft)
+ ctextRight := wasm.CString(textRight)
+ defer wasm.Free(ctextRight)
+
+ cvalue := float32(value)
+ cminValue := float32(minValue)
+ cmaxValue := float32(maxValue)
+ return guiProgressBar(cbounds, ctextLeft, ctextRight, cvalue, cminValue, cmaxValue)
+}
+
+// StatusBar control, shows info text
+
+//go:wasmimport raylib _GuiStatusBar
+//go:noescape
+func guiStatusBar(bounds wasm.Ptr, text wasm.Ptr)
+
+func StatusBar(bounds rl.Rectangle, text string) {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiStatusBar(cbounds, ctext)
+}
+
+// DummyRectangle control, intended for placeholding
+
+//go:wasmimport raylib _GuiDummyRec
+//go:noescape
+func guiDummyRec(bounds wasm.Ptr, text wasm.Ptr)
+
+func DummyRec(bounds rl.Rectangle, text string) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ guiDummyRec(cbounds, ctext)
+}
+
+// ListView control, returns selected list item index
+
+//go:wasmimport raylib _GuiListView
+//go:noescape
+func guiListView(bounds wasm.Ptr, text wasm.Ptr, scrollIndex wasm.Ptr, active int32) int32
+
+func ListView(bounds rl.Rectangle, text string, scrollIndex *int32, active int32) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ if scrollIndex == nil {
+ scrollIndex = new(int32)
+ }
+ cscrollIndex, free := wasm.CopyValueToC(scrollIndex)
+ defer func() {
+ wasm.CopyValueToGo(cscrollIndex, scrollIndex)
+ free()
+ }()
+
+ cactive := int32(active)
+
+ return guiListView(cbounds, ctext, cscrollIndex, cactive)
+}
+
+//go:wasmimport raylib _GuiListViewEx
+//go:noescape
+func guiListViewEx(bounds wasm.Ptr, text wasm.Ptr, count int32, scrollIndex wasm.Ptr, active wasm.Ptr, focus wasm.Ptr) int32
+
+// ListView control with extended parameters
+func ListViewEx(bounds rl.Rectangle, text []string,
+ scrollIndex, focus *int32, active int32) int32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := NewCStringArrayFromSlice(text)
+ defer ctext.Free()
+
+ if focus == nil {
+ focus = new(int32)
+ }
+ if scrollIndex == nil {
+ scrollIndex = new(int32)
+ }
+
+ cscrollIndex, free := wasm.CopyValueToC(scrollIndex)
+ defer func() {
+ wasm.CopyValueToGo(cscrollIndex, scrollIndex)
+ free()
+ }()
+
+ cactive, freeActive := wasm.CopyValueToC(&active)
+ defer freeActive()
+
+ cfocus, freeFocus := wasm.CopyValueToC(focus)
+ defer freeFocus()
+
+ count := int32(len(text))
+ guiListViewEx(cbounds, ctext.Pointer, count, cscrollIndex, cactive, cfocus)
+
+ // Copy values back before freeing
+ wasm.CopyValueToGo(cactive, &active)
+ wasm.CopyValueToGo(cfocus, focus)
+
+ return active
+}
+
+//go:wasmimport raylib _GuiColorPanel
+//go:noescape
+func guiColorPanel(ret wasm.Ptr, bounds wasm.Ptr, text wasm.Ptr, color wasm.Ptr)
+
+// ColorPanel control, Color (RGBA) variant
+func ColorPanel(bounds rl.Rectangle, text string, color rl.Color) rl.Color {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ ccolor, free := wasm.CopyValueToC(&color)
+ defer free()
+
+ var v rl.Color
+ ret, freeRet := wasm.MallocV[rl.Color]()
+ defer freeRet()
+
+ guiColorPanel(ret, cbounds, ctext, ccolor)
+ wasm.CopyValueToGo(ret, &v)
+ return v
+}
+
+//go:wasmimport raylib _GuiColorBarAlpha
+//go:noescape
+func guiColorBarAlpha(bounds wasm.Ptr, text wasm.Ptr, alpha float32) float32
+
+// ColorBarAlpha control, returns alpha value normalized [0..1]
+func ColorBarAlpha(bounds rl.Rectangle, text string, alpha float32) float32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ calpha := float32(alpha)
+ return guiColorBarAlpha(cbounds, ctext, calpha)
+}
+
+//go:wasmimport raylib _GuiColorBarHue
+//go:noescape
+func guiColorBarHue(bounds wasm.Ptr, text wasm.Ptr, value float32) float32
+
+// ColorBarHue control, returns alpha value normalized [0..1]
+func ColorBarHue(bounds rl.Rectangle, text string, value float32) float32 {
+
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ cvalue := float32(value)
+ return guiColorBarHue(cbounds, ctext, cvalue)
+}
+
+//go:wasmimport raylib _GuiColorPicker
+//go:noescape
+func guiColorPicker(ret wasm.Ptr, bounds wasm.Ptr, text wasm.Ptr, color wasm.Ptr)
+
+// ColorPicker control (multiple color controls)
+// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead
+func ColorPicker(bounds rl.Rectangle, text string, color rl.Color) rl.Color {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ ccolor, free := wasm.CopyValueToC(&color)
+ defer free()
+ var v rl.Color
+ ret, free := wasm.CopyValueToC(&v)
+ defer func() {
+ wasm.CopyValueToGo(ret, &v)
+ free()
+ }()
+ guiColorPicker(ret, cbounds, ctext, ccolor)
+ return v
+}
+
+//go:wasmimport raylib _GuiColorPickerHSV
+//go:noescape
+func guiColorPickerHSV(bounds wasm.Ptr, text wasm.Ptr, colorHSV wasm.Ptr) int32
+
+// ColorPicker control that avoids conversion to RGB on each call (multiple color controls)
+func ColorPickerHSV(bounds rl.Rectangle, text string, colorHSV *rl.Vector3) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ ccolorHSV, free := wasm.CopyValueToC(colorHSV)
+ defer func() {
+ wasm.CopyValueToGo(ccolorHSV, colorHSV)
+ free()
+ }()
+
+ return int32(guiColorPickerHSV(cbounds, ctext, ccolorHSV))
+}
+
+//go:wasmimport raylib _GuiColorPanelHSV
+//go:noescape
+func guiColorPanelHSV(bounds wasm.Ptr, text wasm.Ptr, colorHSV wasm.Ptr) int32
+
+// ColorPanel control that returns HSV color value
+func ColorPanelHSV(bounds rl.Rectangle, text string, colorHSV *rl.Vector3) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ ccolorHSV, free := wasm.CopyValueToC(colorHSV)
+ defer func() {
+ wasm.CopyValueToGo(ccolorHSV, colorHSV)
+ free()
+ }()
+ return int32(guiColorPanelHSV(cbounds, ctext, ccolorHSV))
+}
+
+//go:wasmimport raylib _GuiMessageBox
+//go:noescape
+func guiMessageBox(bounds wasm.Ptr, title, message, buttons wasm.Ptr) int32
+
+// MessageBox control
+func MessageBox(bounds rl.Rectangle, title, message, buttons string) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctitle := wasm.CString(title)
+ defer wasm.Free(ctitle)
+ cmessage := wasm.CString(message)
+ defer wasm.Free(cmessage)
+
+ cbuttons := wasm.CString(buttons)
+ defer wasm.Free(cbuttons)
+
+ return int32(guiMessageBox(cbounds, ctitle, cmessage, cbuttons))
+}
+
+//
+//go:wasmimport raylib _GuiTextInputBox
+//go:noescape
+func guiTextInputBox(bounds wasm.Ptr, title, message, buttons wasm.Ptr, text wasm.Ptr, textMaxSize int32, secretViewActive wasm.Ptr) int32
+
+// TextInputBox control, ask for text
+func TextInputBox(bounds rl.Rectangle, title, message, buttons string, text *string, textMaxSize int32, secretViewActive *bool) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ var ctitle wasm.Ptr
+ if len(title) > 0 {
+ ctitle = wasm.CString(title)
+ defer wasm.Free(ctitle)
+ }
+
+ var cmessage wasm.Ptr
+ if len(message) > 0 {
+ cmessage = wasm.CString(message)
+ defer wasm.Free(cmessage)
+ }
+
+ cbuttons := wasm.CString(buttons)
+ defer wasm.Free(cbuttons)
+
+ // Allocate writable buffer of size textMaxSize
+ // Truncate to textMaxSize-1 and NUL-terminate
+ currentText := []byte(*text)
+ if len(currentText) > int(textMaxSize)-1 {
+ currentText = currentText[:int(textMaxSize)-1]
+ }
+ // Create a zero-filled buffer of size textMaxSize
+ buffer := make([]byte, textMaxSize)
+ copy(buffer, currentText)
+ // buffer is already zero-filled by make, so NUL-termination is automatic
+
+ ctext, freeText := wasm.CopySliceToC(buffer)
+ defer freeText()
+
+ ctextMaxSize := int32(textMaxSize)
+
+ csecretViewActive, free := wasm.CopyValueToC(secretViewActive)
+ defer func() {
+ wasm.CopyValueToGo(csecretViewActive, secretViewActive)
+ free()
+ }()
+
+ result := int32(guiTextInputBox(cbounds, ctitle, cmessage, cbuttons, ctext, ctextMaxSize, csecretViewActive))
+
+ // Copy the result back
+ *text = wasm.GoString(ctext)
+
+ return result
+}
+
+//go:wasmimport raylib _GuiGrid
+//go:noescape
+func guiGrid(bounds wasm.Ptr, text wasm.Ptr, spacing float32, subdivs int32, mouseCell wasm.Ptr) int32
+
+// Grid control, returns mouse cell position
+func Grid(bounds rl.Rectangle, text string, spacing float32, subdivs int32, mouseCell *rl.Vector2) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ cspacing := float32(spacing)
+ csubdivs := int32(subdivs)
+ cmouseCell, free := wasm.CopyValueToC(mouseCell)
+ defer func() {
+ wasm.CopyValueToGo(cmouseCell, mouseCell)
+ free()
+ }()
+ return guiGrid(cbounds, ctext, cspacing, csubdivs, cmouseCell)
+}
+
+//----------------------------------------------------------------------------------
+// Tooltip management functions
+// NOTE: Tooltips requires some global variables: tooltipPtr
+//----------------------------------------------------------------------------------
+
+// Enable gui tooltips (global state)
+//
+//go:wasmimport raylib _GuiEnableTooltip
+//go:noescape
+func EnableTooltip()
+
+// Disable gui tooltips (global state)
+//
+//go:wasmimport raylib _GuiDisableTooltip
+//go:noescape
+func DisableTooltip()
+
+//go:wasmimport raylib _GuiSetTooltip
+//go:noescape
+func guiSetTooltip(tooltip wasm.Ptr)
+
+// Set tooltip string
+func SetTooltip(tooltip string) {
+ ctooltip := wasm.CString(tooltip)
+ defer wasm.Free(ctooltip)
+ guiSetTooltip(ctooltip)
+}
+
+//----------------------------------------------------------------------------------
+// Styles loading functions
+//----------------------------------------------------------------------------------
+
+//go:wasmimport raylib _GuiLoadStyle
+//go:noescape
+func guiLoadStyle(fileName wasm.Ptr)
+
+// Load raygui style file (.rgs)
+func LoadStyle(fileName string) {
+ cfileName := wasm.CString(fileName)
+ defer wasm.Free(cfileName)
+ guiLoadStyle(cfileName)
+}
+
+//go:wasmimport raylib _GuiLoadStyleDefault
+//go:noescape
+func guiLoadStyleDefault()
+
+// Load style default over global style
+func LoadStyleDefault() {
+ guiLoadStyleDefault()
+}
+
+//go:wasmimport raylib _GuiIconText
+//go:noescape
+func guiIconText(iconId int32, text wasm.Ptr) wasm.Ptr
+
+// IconText gets text with icon id prepended (if supported)
+func IconText(iconId IconID, text string) string {
+ ciconId := int32(iconId)
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return wasm.GoString(guiIconText(ciconId, ctext))
+}
+
+//go:wasmimport raylib _GuiLoadIcons
+//go:noescape
+func guiLoadIcons(fileName wasm.Ptr, loadIconsName int32)
+
+// Load raygui icons file (.rgi)
+func LoadIcons(fileName string, loadIconsName bool) {
+ cfileName := wasm.CString(fileName)
+ defer wasm.Free(cfileName)
+ guiLoadIcons(cfileName, wasm.BtoI(loadIconsName))
+}
+
+/*
+//go:wasmimport raylib _GuiLoadIconsFromMemory
+//go:noescape
+func guiLoadIconsFromMemory(data []byte, size int32, loadIconsName int32)
+
+// Load icons from memory (Binary files only)
+func LoadIconsFromMemory(data []byte, loadIconsName bool) {
+ guiLoadIconsFromMemory((*uint8)(unsafe.Pointer(data[0])), int32(len(data)), wasm.BtoI(loadIconsName))
+}
+*/
+
+//go:wasmimport raylib _GuiDrawIcon
+//go:noescape
+func guiDrawIcon(iconId, posX, posY, pixelSize int32, col wasm.Ptr)
+
+// Draw icon using pixel size at specified position
+func DrawIcon(iconId IconID, posX, posY, pixelSize int32, col color.RGBA) {
+ ccol, free := wasm.CopyValueToC(&col)
+ defer free()
+ guiDrawIcon(int32(iconId), int32(posX), int32(posY), int32(pixelSize), ccol)
+}
+
+// Set icon drawing size
+//
+//go:wasmimport raylib _GuiSetIconScale
+//go:noescape
+func SetIconScale(scale int32)
+
+//go:wasmimport raylib _GuiGetTextWidth
+//go:noescape
+func guiGetTextWidth(text wasm.Ptr) int32
+
+// Get text width considering gui style and icon size (if required)
+func GetTextWidth(text string) int32 {
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+ return int32(guiGetTextWidth(ctext))
+}
+
+//----------------------------------------------------------------------------------
+// Module Internal Functions Definition
+//----------------------------------------------------------------------------------
+
+/*
+//go:wasmimport raylib _GuiLoadStyleFromMemory
+//go:noescape
+func guiLoadStyleFromMemory(data wasm.Ptr, size int32)
+
+// Load style from memory (Binary files only)
+func LoadStyleFromMemory(data []byte) {
+ guiLoadStyleFromMemory((*uint8)(unsafe.Pointer(data[0])), int32(len(data)))
+}
+*/
+
+//go:wasmimport raylib _GuiScrollBar
+//go:noescape
+func guiScrollBar(bounds wasm.Ptr, value, minValue, maxValue int32) int32
+
+// ScrollBar control
+func ScrollBar(bounds rl.Rectangle, value, minValue, maxValue int32) int32 {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ cvalue := int32(value)
+ cminValue := int32(minValue)
+ cmaxValue := int32(maxValue)
+
+ return int32(guiScrollBar(cbounds, cvalue, cminValue, cmaxValue))
+}
+
+//go:wasmimport raylib _GuiFade
+//go:noescape
+func guiFade(ret wasm.Ptr, color wasm.Ptr, alpha float32)
+
+// Color fade-in or fade-out, alpha value normalized [0..1]
+// WARNING: It multiplies current alpha by alpha scale factor
+func Fade(color rl.Color, alpha float32) rl.Color {
+
+ ccolor, free := wasm.CopyValueToC(&color)
+ defer free()
+
+ var v rl.Color
+ ret, free := wasm.CopyValueToC(&v)
+ defer func() {
+ wasm.CopyValueToGo(ret, &v)
+ free()
+ }()
+
+ guiFade(ret, ccolor, alpha)
+ return v
+}
+
+//----------------------------------------------------------------------------------
+// Additional Draw functions
+//----------------------------------------------------------------------------------
+
+//go:wasmimport raylib _GuiDrawRectangle
+//go:noescape
+func guiDrawRectangle(bounds wasm.Ptr, borderWidth int32, borderColor, fillColor wasm.Ptr)
+
+func DrawRectangle(bounds rl.Rectangle, borderWidth int32, borderColor, fillColor rl.Color) {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ cfillColor, free := wasm.CopyValueToC(&fillColor)
+ defer free()
+ cborderColor, free := wasm.CopyValueToC(&borderColor)
+ defer free()
+
+ bw := int32(borderWidth)
+
+ guiDrawRectangle(cbounds, bw, cborderColor, cfillColor)
+}
+
+// DrawText - static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint);
+
+//go:wasmimport raylib _GuiDrawText
+//go:noescape
+func guiDrawText(text wasm.Ptr, position wasm.Ptr, alignment int32, color wasm.Ptr)
+
+func DrawText(text string, position rl.Rectangle, alignment int32, color rl.Color) {
+
+ cposition, free := wasm.CopyValueToC(&position)
+ defer free()
+ ccolor, free := wasm.CopyValueToC(&color)
+ defer free()
+
+ ctext := wasm.CString(text)
+ defer wasm.Free(ctext)
+
+ calignment := int32(alignment)
+ guiDrawText(ctext, cposition, calignment, ccolor)
+}
+
+//go:wasmimport raylib _GuiGetTextBounds
+//go:noescape
+func guiGetTextBounds(ret wasm.Ptr, control int32, bounds wasm.Ptr)
+
+// GetTextBounds - static Rectangle GetTextBounds(int control, Rectangle bounds)
+func GetTextBounds(control ControlID, bounds rl.Rectangle) rl.Rectangle {
+ cbounds, free := wasm.CopyValueToC(&bounds)
+ defer free()
+
+ ccontrol := uint16(control)
+ var v rl.Rectangle
+ cret, free := wasm.CopyValueToC(&v)
+ defer func() {
+ wasm.CopyValueToGo(cret, &v)
+ free()
+ }()
+ guiGetTextBounds(cret, int32(ccontrol), cbounds)
+ return v
+}
diff --git a/raylib/go.sum b/raylib/go.sum
index 808648e..b242b0a 100644
--- a/raylib/go.sum
+++ b/raylib/go.sum
@@ -1,2 +1,2 @@
-github.com/BrownNPC/wasm-ffi-go v1.1.0 h1:oashfuQflpB+qx/xI71Gvim3YN/0iIny5TMIpzEFz0Y=
-github.com/BrownNPC/wasm-ffi-go v1.1.0/go.mod h1:D5+RBMb672fgw6vPz4HOWYxpyrmPrIao8VqlXihOFFg=
+github.com/BrownNPC/wasm-ffi-go v1.2.0 h1:Lknst90sTLTkE870OKNP/Vw36TohQIJ4ln8W1IG9Zl0=
+github.com/BrownNPC/wasm-ffi-go v1.2.0/go.mod h1:D5+RBMb672fgw6vPz4HOWYxpyrmPrIao8VqlXihOFFg=
diff --git a/raylib/rcore_wasm.go b/raylib/rcore_wasm.go
index 71b447e..f1ef90e 100644
--- a/raylib/rcore_wasm.go
+++ b/raylib/rcore_wasm.go
@@ -2174,7 +2174,6 @@ func ExportImageToMemory(image Image, fileType string) []byte {
return zero
}
-
// GenImageGradientLinear - Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
func GenImageGradientLinear(width int, height int, direction int, start color.RGBA, end color.RGBA) *Image {
var zero *Image
@@ -2591,7 +2590,6 @@ func LoadTexture(fileName string) Texture2D {
return v
}
-
// LoadTextureCubemap - Load cubemap from image, multiple image cubemap layouts supported
func LoadTextureCubemap(image *Image, layout int32) Texture2D {
ret, fl := loadTextureCubemap.Call(image, layout)
@@ -3922,7 +3920,6 @@ func SetCallbackFunc() {
wasm.Free(fl...)
}
-
// ToImage converts a Image to Go image.Image
func ToImage() image.Image {
// ret, fl := toImage.Call()
diff --git a/wasm-runtime/api/rlapi.go b/wasm-runtime/api/rlapi.go
new file mode 100644
index 0000000..be1fefd
--- /dev/null
+++ b/wasm-runtime/api/rlapi.go
@@ -0,0 +1,76 @@
+package api
+
+import (
+ _ "embed"
+ "encoding/json"
+)
+
+var Api RlApi
+
+//go:embed rlapi.json
+var rlApiJson []byte
+
+func init() {
+ err := json.Unmarshal(rlApiJson, &Api)
+ if err != nil {
+ panic(err)
+ }
+}
+
+type RlDefine struct {
+ Name string `json:"name"`
+ Type string `json:"type"`
+ Value StringyValue `json:"value"`
+ Description string `json:"description"`
+}
+
+
+type RlField struct {
+ Type string `json:"type"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+}
+type RlStruct struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ Fields []RlField `json:"fields"`
+}
+type RlAlias struct {
+ Type string `json:"type"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+}
+type RlValue struct {
+ Name string `json:"name"`
+ Value int `json:"value"`
+ Description string `json:"description"`
+}
+type RlEnum struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ Values []RlValue `json:"values"`
+}
+type RlParam struct {
+ Type string `json:"type"`
+ Name string `json:"name"`
+}
+type RlCallback struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ ReturnType string `json:"returnType"`
+ Params []RlParam `json:"params"`
+}
+type RlFunction struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ ReturnType string `json:"returnType"`
+ Params []RlParam `json:"params,omitempty"`
+}
+type RlApi struct {
+ Defines []RlDefine `json:"defines"`
+ Structs []RlStruct `json:"structs"`
+ Aliases []RlAlias `json:"aliases"`
+ Enums []RlEnum `json:"enums"`
+ Callbacks []RlCallback `json:"callbacks"`
+ Functions []RlFunction `json:"functions"`
+}
diff --git a/wasm-runtime/api/rlapi.json b/wasm-runtime/api/rlapi.json
new file mode 100644
index 0000000..d4c059c
--- /dev/null
+++ b/wasm-runtime/api/rlapi.json
@@ -0,0 +1,12463 @@
+{
+ "defines": [
+ {
+ "name": "RAYLIB_H",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RAYLIB_VERSION_MAJOR",
+ "type": "INT",
+ "value": 5,
+ "description": ""
+ },
+ {
+ "name": "RAYLIB_VERSION_MINOR",
+ "type": "INT",
+ "value": 6,
+ "description": ""
+ },
+ {
+ "name": "RAYLIB_VERSION_PATCH",
+ "type": "INT",
+ "value": 0,
+ "description": ""
+ },
+ {
+ "name": "RAYLIB_VERSION",
+ "type": "STRING",
+ "value": "5.6-dev",
+ "description": ""
+ },
+ {
+ "name": "__declspec(x)",
+ "type": "MACRO",
+ "value": "__attribute__((x))",
+ "description": ""
+ },
+ {
+ "name": "RLAPI",
+ "type": "UNKNOWN",
+ "value": "__declspec(dllexport)",
+ "description": "Building the library as a Win32 shared library (.dll)"
+ },
+ {
+ "name": "PI",
+ "type": "FLOAT",
+ "value": 3.14159265358979323846,
+ "description": ""
+ },
+ {
+ "name": "DEG2RAD",
+ "type": "FLOAT_MATH",
+ "value": "(PI/180.0f)",
+ "description": ""
+ },
+ {
+ "name": "RAD2DEG",
+ "type": "FLOAT_MATH",
+ "value": "(180.0f/PI)",
+ "description": ""
+ },
+ {
+ "name": "RL_MALLOC(sz)",
+ "type": "MACRO",
+ "value": "malloc(sz)",
+ "description": ""
+ },
+ {
+ "name": "RL_CALLOC(n,sz)",
+ "type": "MACRO",
+ "value": "calloc(n,sz)",
+ "description": ""
+ },
+ {
+ "name": "RL_REALLOC(ptr,sz)",
+ "type": "MACRO",
+ "value": "realloc(ptr,sz)",
+ "description": ""
+ },
+ {
+ "name": "RL_FREE(ptr)",
+ "type": "MACRO",
+ "value": "free(ptr)",
+ "description": ""
+ },
+ {
+ "name": "CLITERAL(type)",
+ "type": "MACRO",
+ "value": "type",
+ "description": ""
+ },
+ {
+ "name": "RL_COLOR_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_RECTANGLE_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_VECTOR2_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_VECTOR3_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_VECTOR4_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_QUATERNION_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "RL_MATRIX_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "LIGHTGRAY",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 200, 200, 200, 255 }",
+ "description": "Light Gray"
+ },
+ {
+ "name": "GRAY",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 130, 130, 130, 255 }",
+ "description": "Gray"
+ },
+ {
+ "name": "DARKGRAY",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 80, 80, 80, 255 }",
+ "description": "Dark Gray"
+ },
+ {
+ "name": "YELLOW",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 253, 249, 0, 255 }",
+ "description": "Yellow"
+ },
+ {
+ "name": "GOLD",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 255, 203, 0, 255 }",
+ "description": "Gold"
+ },
+ {
+ "name": "ORANGE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 255, 161, 0, 255 }",
+ "description": "Orange"
+ },
+ {
+ "name": "PINK",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 255, 109, 194, 255 }",
+ "description": "Pink"
+ },
+ {
+ "name": "RED",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 230, 41, 55, 255 }",
+ "description": "Red"
+ },
+ {
+ "name": "MAROON",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 190, 33, 55, 255 }",
+ "description": "Maroon"
+ },
+ {
+ "name": "GREEN",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 228, 48, 255 }",
+ "description": "Green"
+ },
+ {
+ "name": "LIME",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 158, 47, 255 }",
+ "description": "Lime"
+ },
+ {
+ "name": "DARKGREEN",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 117, 44, 255 }",
+ "description": "Dark Green"
+ },
+ {
+ "name": "SKYBLUE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 102, 191, 255, 255 }",
+ "description": "Sky Blue"
+ },
+ {
+ "name": "BLUE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 121, 241, 255 }",
+ "description": "Blue"
+ },
+ {
+ "name": "DARKBLUE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 82, 172, 255 }",
+ "description": "Dark Blue"
+ },
+ {
+ "name": "PURPLE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 200, 122, 255, 255 }",
+ "description": "Purple"
+ },
+ {
+ "name": "VIOLET",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 135, 60, 190, 255 }",
+ "description": "Violet"
+ },
+ {
+ "name": "DARKPURPLE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 112, 31, 126, 255 }",
+ "description": "Dark Purple"
+ },
+ {
+ "name": "BEIGE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 211, 176, 131, 255 }",
+ "description": "Beige"
+ },
+ {
+ "name": "BROWN",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 127, 106, 79, 255 }",
+ "description": "Brown"
+ },
+ {
+ "name": "DARKBROWN",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 76, 63, 47, 255 }",
+ "description": "Dark Brown"
+ },
+ {
+ "name": "WHITE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 255, 255, 255, 255 }",
+ "description": "White"
+ },
+ {
+ "name": "BLACK",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 0, 0, 255 }",
+ "description": "Black"
+ },
+ {
+ "name": "BLANK",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 0, 0, 0, 0 }",
+ "description": "Blank (Transparent)"
+ },
+ {
+ "name": "MAGENTA",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 255, 0, 255, 255 }",
+ "description": "Magenta"
+ },
+ {
+ "name": "RAYWHITE",
+ "type": "COLOR",
+ "value": "CLITERAL(Color){ 245, 245, 245, 255 }",
+ "description": "My own White (raylib logo)"
+ },
+ {
+ "name": "RL_BOOL_TYPE",
+ "type": "GUARD",
+ "value": "",
+ "description": ""
+ },
+ {
+ "name": "MOUSE_LEFT_BUTTON",
+ "type": "UNKNOWN",
+ "value": "MOUSE_BUTTON_LEFT",
+ "description": ""
+ },
+ {
+ "name": "MOUSE_RIGHT_BUTTON",
+ "type": "UNKNOWN",
+ "value": "MOUSE_BUTTON_RIGHT",
+ "description": ""
+ },
+ {
+ "name": "MOUSE_MIDDLE_BUTTON",
+ "type": "UNKNOWN",
+ "value": "MOUSE_BUTTON_MIDDLE",
+ "description": ""
+ },
+ {
+ "name": "MATERIAL_MAP_DIFFUSE",
+ "type": "UNKNOWN",
+ "value": "MATERIAL_MAP_ALBEDO",
+ "description": ""
+ },
+ {
+ "name": "MATERIAL_MAP_SPECULAR",
+ "type": "UNKNOWN",
+ "value": "MATERIAL_MAP_METALNESS",
+ "description": ""
+ },
+ {
+ "name": "SHADER_LOC_MAP_DIFFUSE",
+ "type": "UNKNOWN",
+ "value": "SHADER_LOC_MAP_ALBEDO",
+ "description": ""
+ },
+ {
+ "name": "SHADER_LOC_MAP_SPECULAR",
+ "type": "UNKNOWN",
+ "value": "SHADER_LOC_MAP_METALNESS",
+ "description": ""
+ },
+ {
+ "name": "GetMouseRay",
+ "type": "UNKNOWN",
+ "value": "GetScreenToWorldRay",
+ "description": "Compatibility hack for previous raylib versions"
+ }
+ ],
+ "structs": [
+ {
+ "name": "Vector2",
+ "description": "Vector2, 2 components",
+ "fields": [
+ {
+ "type": "float",
+ "name": "x",
+ "description": "Vector x component"
+ },
+ {
+ "type": "float",
+ "name": "y",
+ "description": "Vector y component"
+ }
+ ]
+ },
+ {
+ "name": "Vector3",
+ "description": "Vector3, 3 components",
+ "fields": [
+ {
+ "type": "float",
+ "name": "x",
+ "description": "Vector x component"
+ },
+ {
+ "type": "float",
+ "name": "y",
+ "description": "Vector y component"
+ },
+ {
+ "type": "float",
+ "name": "z",
+ "description": "Vector z component"
+ }
+ ]
+ },
+ {
+ "name": "Vector4",
+ "description": "Vector4, 4 components",
+ "fields": [
+ {
+ "type": "float",
+ "name": "x",
+ "description": "Vector x component"
+ },
+ {
+ "type": "float",
+ "name": "y",
+ "description": "Vector y component"
+ },
+ {
+ "type": "float",
+ "name": "z",
+ "description": "Vector z component"
+ },
+ {
+ "type": "float",
+ "name": "w",
+ "description": "Vector w component"
+ }
+ ]
+ },
+ {
+ "name": "Matrix",
+ "description": "Matrix, 4x4 components, column major, OpenGL style, right-handed",
+ "fields": [
+ {
+ "type": "float",
+ "name": "m0",
+ "description": "Matrix first row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m4",
+ "description": "Matrix first row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m8",
+ "description": "Matrix first row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m12",
+ "description": "Matrix first row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m1",
+ "description": "Matrix second row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m5",
+ "description": "Matrix second row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m9",
+ "description": "Matrix second row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m13",
+ "description": "Matrix second row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m2",
+ "description": "Matrix third row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m6",
+ "description": "Matrix third row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m10",
+ "description": "Matrix third row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m14",
+ "description": "Matrix third row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m3",
+ "description": "Matrix fourth row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m7",
+ "description": "Matrix fourth row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m11",
+ "description": "Matrix fourth row (4 components)"
+ },
+ {
+ "type": "float",
+ "name": "m15",
+ "description": "Matrix fourth row (4 components)"
+ }
+ ]
+ },
+ {
+ "name": "Color",
+ "description": "Color, 4 components, R8G8B8A8 (32bit)",
+ "fields": [
+ {
+ "type": "unsigned char",
+ "name": "r",
+ "description": "Color red value"
+ },
+ {
+ "type": "unsigned char",
+ "name": "g",
+ "description": "Color green value"
+ },
+ {
+ "type": "unsigned char",
+ "name": "b",
+ "description": "Color blue value"
+ },
+ {
+ "type": "unsigned char",
+ "name": "a",
+ "description": "Color alpha value"
+ }
+ ]
+ },
+ {
+ "name": "Rectangle",
+ "description": "Rectangle, 4 components",
+ "fields": [
+ {
+ "type": "float",
+ "name": "x",
+ "description": "Rectangle top-left corner position x"
+ },
+ {
+ "type": "float",
+ "name": "y",
+ "description": "Rectangle top-left corner position y"
+ },
+ {
+ "type": "float",
+ "name": "width",
+ "description": "Rectangle width"
+ },
+ {
+ "type": "float",
+ "name": "height",
+ "description": "Rectangle height"
+ }
+ ]
+ },
+ {
+ "name": "Image",
+ "description": "Image, pixel data stored in CPU memory (RAM)",
+ "fields": [
+ {
+ "type": "void *",
+ "name": "data",
+ "description": "Image raw data"
+ },
+ {
+ "type": "int",
+ "name": "width",
+ "description": "Image base width"
+ },
+ {
+ "type": "int",
+ "name": "height",
+ "description": "Image base height"
+ },
+ {
+ "type": "int",
+ "name": "mipmaps",
+ "description": "Mipmap levels, 1 by default"
+ },
+ {
+ "type": "int",
+ "name": "format",
+ "description": "Data format (PixelFormat type)"
+ }
+ ]
+ },
+ {
+ "name": "Texture",
+ "description": "Texture, tex data stored in GPU memory (VRAM)",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "id",
+ "description": "OpenGL texture id"
+ },
+ {
+ "type": "int",
+ "name": "width",
+ "description": "Texture base width"
+ },
+ {
+ "type": "int",
+ "name": "height",
+ "description": "Texture base height"
+ },
+ {
+ "type": "int",
+ "name": "mipmaps",
+ "description": "Mipmap levels, 1 by default"
+ },
+ {
+ "type": "int",
+ "name": "format",
+ "description": "Data format (PixelFormat type)"
+ }
+ ]
+ },
+ {
+ "name": "RenderTexture",
+ "description": "RenderTexture, fbo for texture rendering",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "id",
+ "description": "OpenGL framebuffer object id"
+ },
+ {
+ "type": "Texture",
+ "name": "texture",
+ "description": "Color buffer attachment texture"
+ },
+ {
+ "type": "Texture",
+ "name": "depth",
+ "description": "Depth buffer attachment texture"
+ }
+ ]
+ },
+ {
+ "name": "NPatchInfo",
+ "description": "NPatchInfo, n-patch layout info",
+ "fields": [
+ {
+ "type": "Rectangle",
+ "name": "source",
+ "description": "Texture source rectangle"
+ },
+ {
+ "type": "int",
+ "name": "left",
+ "description": "Left border offset"
+ },
+ {
+ "type": "int",
+ "name": "top",
+ "description": "Top border offset"
+ },
+ {
+ "type": "int",
+ "name": "right",
+ "description": "Right border offset"
+ },
+ {
+ "type": "int",
+ "name": "bottom",
+ "description": "Bottom border offset"
+ },
+ {
+ "type": "int",
+ "name": "layout",
+ "description": "Layout of the n-patch: 3x3, 1x3 or 3x1"
+ }
+ ]
+ },
+ {
+ "name": "GlyphInfo",
+ "description": "GlyphInfo, font characters glyphs info",
+ "fields": [
+ {
+ "type": "int",
+ "name": "value",
+ "description": "Character value (Unicode)"
+ },
+ {
+ "type": "int",
+ "name": "offsetX",
+ "description": "Character offset X when drawing"
+ },
+ {
+ "type": "int",
+ "name": "offsetY",
+ "description": "Character offset Y when drawing"
+ },
+ {
+ "type": "int",
+ "name": "advanceX",
+ "description": "Character advance position X"
+ },
+ {
+ "type": "Image",
+ "name": "image",
+ "description": "Character image data"
+ }
+ ]
+ },
+ {
+ "name": "Font",
+ "description": "Font, font texture and GlyphInfo array data",
+ "fields": [
+ {
+ "type": "int",
+ "name": "baseSize",
+ "description": "Base size (default chars height)"
+ },
+ {
+ "type": "int",
+ "name": "glyphCount",
+ "description": "Number of glyph characters"
+ },
+ {
+ "type": "int",
+ "name": "glyphPadding",
+ "description": "Padding around the glyph characters"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture",
+ "description": "Texture atlas containing the glyphs"
+ },
+ {
+ "type": "Rectangle *",
+ "name": "recs",
+ "description": "Rectangles in texture for the glyphs"
+ },
+ {
+ "type": "GlyphInfo *",
+ "name": "glyphs",
+ "description": "Glyphs info data"
+ }
+ ]
+ },
+ {
+ "name": "Camera3D",
+ "description": "Camera, defines position/orientation in 3d space",
+ "fields": [
+ {
+ "type": "Vector3",
+ "name": "position",
+ "description": "Camera position"
+ },
+ {
+ "type": "Vector3",
+ "name": "target",
+ "description": "Camera target it looks-at"
+ },
+ {
+ "type": "Vector3",
+ "name": "up",
+ "description": "Camera up vector (rotation over its axis)"
+ },
+ {
+ "type": "float",
+ "name": "fovy",
+ "description": "Camera field-of-view aperture in Y (degrees) in perspective, used as near plane height in world units in orthographic"
+ },
+ {
+ "type": "int",
+ "name": "projection",
+ "description": "Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC"
+ }
+ ]
+ },
+ {
+ "name": "Camera2D",
+ "description": "Camera2D, defines position/orientation in 2d space",
+ "fields": [
+ {
+ "type": "Vector2",
+ "name": "offset",
+ "description": "Camera offset (screen space offset from window origin)"
+ },
+ {
+ "type": "Vector2",
+ "name": "target",
+ "description": "Camera target (world space target point that is mapped to screen space offset)"
+ },
+ {
+ "type": "float",
+ "name": "rotation",
+ "description": "Camera rotation in degrees (pivots around target)"
+ },
+ {
+ "type": "float",
+ "name": "zoom",
+ "description": "Camera zoom (scaling around target), must not be set to 0, set to 1.0f for no scale"
+ }
+ ]
+ },
+ {
+ "name": "Mesh",
+ "description": "Mesh, vertex data and vao/vbo",
+ "fields": [
+ {
+ "type": "int",
+ "name": "vertexCount",
+ "description": "Number of vertices stored in arrays"
+ },
+ {
+ "type": "int",
+ "name": "triangleCount",
+ "description": "Number of triangles stored (indexed or not)"
+ },
+ {
+ "type": "float *",
+ "name": "vertices",
+ "description": "Vertex position (XYZ - 3 components per vertex) (shader-location = 0)"
+ },
+ {
+ "type": "float *",
+ "name": "texcoords",
+ "description": "Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)"
+ },
+ {
+ "type": "float *",
+ "name": "texcoords2",
+ "description": "Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)"
+ },
+ {
+ "type": "float *",
+ "name": "normals",
+ "description": "Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)"
+ },
+ {
+ "type": "float *",
+ "name": "tangents",
+ "description": "Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)"
+ },
+ {
+ "type": "unsigned char *",
+ "name": "colors",
+ "description": "Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)"
+ },
+ {
+ "type": "unsigned short *",
+ "name": "indices",
+ "description": "Vertex indices (in case vertex data comes indexed)"
+ },
+ {
+ "type": "float *",
+ "name": "animVertices",
+ "description": "Animated vertex positions (after bones transformations)"
+ },
+ {
+ "type": "float *",
+ "name": "animNormals",
+ "description": "Animated normals (after bones transformations)"
+ },
+ {
+ "type": "unsigned char *",
+ "name": "boneIds",
+ "description": "Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning) (shader-location = 6)"
+ },
+ {
+ "type": "float *",
+ "name": "boneWeights",
+ "description": "Vertex bone weight, up to 4 bones influence by vertex (skinning) (shader-location = 7)"
+ },
+ {
+ "type": "Matrix *",
+ "name": "boneMatrices",
+ "description": "Bones animated transformation matrices"
+ },
+ {
+ "type": "int",
+ "name": "boneCount",
+ "description": "Number of bones"
+ },
+ {
+ "type": "unsigned int",
+ "name": "vaoId",
+ "description": "OpenGL Vertex Array Object id"
+ },
+ {
+ "type": "unsigned int *",
+ "name": "vboId",
+ "description": "OpenGL Vertex Buffer Objects id (default vertex data)"
+ }
+ ]
+ },
+ {
+ "name": "Shader",
+ "description": "Shader",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "id",
+ "description": "Shader program id"
+ },
+ {
+ "type": "int *",
+ "name": "locs",
+ "description": "Shader locations array (RL_MAX_SHADER_LOCATIONS)"
+ }
+ ]
+ },
+ {
+ "name": "MaterialMap",
+ "description": "MaterialMap",
+ "fields": [
+ {
+ "type": "Texture2D",
+ "name": "texture",
+ "description": "Material map texture"
+ },
+ {
+ "type": "Color",
+ "name": "color",
+ "description": "Material map color"
+ },
+ {
+ "type": "float",
+ "name": "value",
+ "description": "Material map value"
+ }
+ ]
+ },
+ {
+ "name": "Material",
+ "description": "Material, includes shader and maps",
+ "fields": [
+ {
+ "type": "Shader",
+ "name": "shader",
+ "description": "Material shader"
+ },
+ {
+ "type": "MaterialMap *",
+ "name": "maps",
+ "description": "Material maps array (MAX_MATERIAL_MAPS)"
+ },
+ {
+ "type": "float[4]",
+ "name": "params",
+ "description": "Material generic parameters (if required)"
+ }
+ ]
+ },
+ {
+ "name": "Transform",
+ "description": "Transform, vertex transformation data",
+ "fields": [
+ {
+ "type": "Vector3",
+ "name": "translation",
+ "description": "Translation"
+ },
+ {
+ "type": "Quaternion",
+ "name": "rotation",
+ "description": "Rotation"
+ },
+ {
+ "type": "Vector3",
+ "name": "scale",
+ "description": "Scale"
+ }
+ ]
+ },
+ {
+ "name": "BoneInfo",
+ "description": "Bone, skeletal animation bone",
+ "fields": [
+ {
+ "type": "char[32]",
+ "name": "name",
+ "description": "Bone name"
+ },
+ {
+ "type": "int",
+ "name": "parent",
+ "description": "Bone parent"
+ }
+ ]
+ },
+ {
+ "name": "Model",
+ "description": "Model, meshes, materials and animation data",
+ "fields": [
+ {
+ "type": "Matrix",
+ "name": "transform",
+ "description": "Local transform matrix"
+ },
+ {
+ "type": "int",
+ "name": "meshCount",
+ "description": "Number of meshes"
+ },
+ {
+ "type": "int",
+ "name": "materialCount",
+ "description": "Number of materials"
+ },
+ {
+ "type": "Mesh *",
+ "name": "meshes",
+ "description": "Meshes array"
+ },
+ {
+ "type": "Material *",
+ "name": "materials",
+ "description": "Materials array"
+ },
+ {
+ "type": "int *",
+ "name": "meshMaterial",
+ "description": "Mesh material number"
+ },
+ {
+ "type": "int",
+ "name": "boneCount",
+ "description": "Number of bones"
+ },
+ {
+ "type": "BoneInfo *",
+ "name": "bones",
+ "description": "Bones information (skeleton)"
+ },
+ {
+ "type": "Transform *",
+ "name": "bindPose",
+ "description": "Bones base transformation (pose)"
+ }
+ ]
+ },
+ {
+ "name": "ModelAnimation",
+ "description": "ModelAnimation",
+ "fields": [
+ {
+ "type": "int",
+ "name": "boneCount",
+ "description": "Number of bones"
+ },
+ {
+ "type": "int",
+ "name": "frameCount",
+ "description": "Number of animation frames"
+ },
+ {
+ "type": "BoneInfo *",
+ "name": "bones",
+ "description": "Bones information (skeleton)"
+ },
+ {
+ "type": "Transform **",
+ "name": "framePoses",
+ "description": "Poses array by frame"
+ },
+ {
+ "type": "char[32]",
+ "name": "name",
+ "description": "Animation name"
+ }
+ ]
+ },
+ {
+ "name": "Ray",
+ "description": "Ray, ray for raycasting",
+ "fields": [
+ {
+ "type": "Vector3",
+ "name": "position",
+ "description": "Ray position (origin)"
+ },
+ {
+ "type": "Vector3",
+ "name": "direction",
+ "description": "Ray direction (normalized)"
+ }
+ ]
+ },
+ {
+ "name": "RayCollision",
+ "description": "RayCollision, ray hit information",
+ "fields": [
+ {
+ "type": "bool",
+ "name": "hit",
+ "description": "Did the ray hit something?"
+ },
+ {
+ "type": "float",
+ "name": "distance",
+ "description": "Distance to the nearest hit"
+ },
+ {
+ "type": "Vector3",
+ "name": "point",
+ "description": "Point of the nearest hit"
+ },
+ {
+ "type": "Vector3",
+ "name": "normal",
+ "description": "Surface normal of hit"
+ }
+ ]
+ },
+ {
+ "name": "BoundingBox",
+ "description": "BoundingBox",
+ "fields": [
+ {
+ "type": "Vector3",
+ "name": "min",
+ "description": "Minimum vertex box-corner"
+ },
+ {
+ "type": "Vector3",
+ "name": "max",
+ "description": "Maximum vertex box-corner"
+ }
+ ]
+ },
+ {
+ "name": "Wave",
+ "description": "Wave, audio wave data",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "frameCount",
+ "description": "Total number of frames (considering channels)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "sampleRate",
+ "description": "Frequency (samples per second)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "sampleSize",
+ "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "channels",
+ "description": "Number of channels (1-mono, 2-stereo, ...)"
+ },
+ {
+ "type": "void *",
+ "name": "data",
+ "description": "Buffer data pointer"
+ }
+ ]
+ },
+ {
+ "name": "AudioStream",
+ "description": "AudioStream, custom audio stream",
+ "fields": [
+ {
+ "type": "rAudioBuffer *",
+ "name": "buffer",
+ "description": "Pointer to internal data used by the audio system"
+ },
+ {
+ "type": "rAudioProcessor *",
+ "name": "processor",
+ "description": "Pointer to internal data processor, useful for audio effects"
+ },
+ {
+ "type": "unsigned int",
+ "name": "sampleRate",
+ "description": "Frequency (samples per second)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "sampleSize",
+ "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "channels",
+ "description": "Number of channels (1-mono, 2-stereo, ...)"
+ }
+ ]
+ },
+ {
+ "name": "Sound",
+ "description": "Sound",
+ "fields": [
+ {
+ "type": "AudioStream",
+ "name": "stream",
+ "description": "Audio stream"
+ },
+ {
+ "type": "unsigned int",
+ "name": "frameCount",
+ "description": "Total number of frames (considering channels)"
+ }
+ ]
+ },
+ {
+ "name": "Music",
+ "description": "Music, audio stream, anything longer than ~10 seconds should be streamed",
+ "fields": [
+ {
+ "type": "AudioStream",
+ "name": "stream",
+ "description": "Audio stream"
+ },
+ {
+ "type": "unsigned int",
+ "name": "frameCount",
+ "description": "Total number of frames (considering channels)"
+ },
+ {
+ "type": "bool",
+ "name": "looping",
+ "description": "Music looping enable"
+ },
+ {
+ "type": "int",
+ "name": "ctxType",
+ "description": "Type of music context (audio filetype)"
+ },
+ {
+ "type": "void *",
+ "name": "ctxData",
+ "description": "Audio context data, depends on type"
+ }
+ ]
+ },
+ {
+ "name": "VrDeviceInfo",
+ "description": "VrDeviceInfo, Head-Mounted-Display device parameters",
+ "fields": [
+ {
+ "type": "int",
+ "name": "hResolution",
+ "description": "Horizontal resolution in pixels"
+ },
+ {
+ "type": "int",
+ "name": "vResolution",
+ "description": "Vertical resolution in pixels"
+ },
+ {
+ "type": "float",
+ "name": "hScreenSize",
+ "description": "Horizontal size in meters"
+ },
+ {
+ "type": "float",
+ "name": "vScreenSize",
+ "description": "Vertical size in meters"
+ },
+ {
+ "type": "float",
+ "name": "eyeToScreenDistance",
+ "description": "Distance between eye and display in meters"
+ },
+ {
+ "type": "float",
+ "name": "lensSeparationDistance",
+ "description": "Lens separation distance in meters"
+ },
+ {
+ "type": "float",
+ "name": "interpupillaryDistance",
+ "description": "IPD (distance between pupils) in meters"
+ },
+ {
+ "type": "float[4]",
+ "name": "lensDistortionValues",
+ "description": "Lens distortion constant parameters"
+ },
+ {
+ "type": "float[4]",
+ "name": "chromaAbCorrection",
+ "description": "Chromatic aberration correction parameters"
+ }
+ ]
+ },
+ {
+ "name": "VrStereoConfig",
+ "description": "VrStereoConfig, VR stereo rendering configuration for simulator",
+ "fields": [
+ {
+ "type": "Matrix[2]",
+ "name": "projection",
+ "description": "VR projection matrices (per eye)"
+ },
+ {
+ "type": "Matrix[2]",
+ "name": "viewOffset",
+ "description": "VR view offset matrices (per eye)"
+ },
+ {
+ "type": "float[2]",
+ "name": "leftLensCenter",
+ "description": "VR left lens center"
+ },
+ {
+ "type": "float[2]",
+ "name": "rightLensCenter",
+ "description": "VR right lens center"
+ },
+ {
+ "type": "float[2]",
+ "name": "leftScreenCenter",
+ "description": "VR left screen center"
+ },
+ {
+ "type": "float[2]",
+ "name": "rightScreenCenter",
+ "description": "VR right screen center"
+ },
+ {
+ "type": "float[2]",
+ "name": "scale",
+ "description": "VR distortion scale"
+ },
+ {
+ "type": "float[2]",
+ "name": "scaleIn",
+ "description": "VR distortion scale in"
+ }
+ ]
+ },
+ {
+ "name": "FilePathList",
+ "description": "File path list",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "count",
+ "description": "Filepaths entries count"
+ },
+ {
+ "type": "char **",
+ "name": "paths",
+ "description": "Filepaths entries"
+ }
+ ]
+ },
+ {
+ "name": "AutomationEvent",
+ "description": "Automation event",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "frame",
+ "description": "Event frame"
+ },
+ {
+ "type": "unsigned int",
+ "name": "type",
+ "description": "Event type (AutomationEventType)"
+ },
+ {
+ "type": "int[4]",
+ "name": "params",
+ "description": "Event parameters (if required)"
+ }
+ ]
+ },
+ {
+ "name": "AutomationEventList",
+ "description": "Automation event list",
+ "fields": [
+ {
+ "type": "unsigned int",
+ "name": "capacity",
+ "description": "Events max entries (MAX_AUTOMATION_EVENTS)"
+ },
+ {
+ "type": "unsigned int",
+ "name": "count",
+ "description": "Events entries count"
+ },
+ {
+ "type": "AutomationEvent *",
+ "name": "events",
+ "description": "Events entries"
+ }
+ ]
+ }
+ ],
+ "aliases": [
+ {
+ "type": "Vector4",
+ "name": "Quaternion",
+ "description": "Quaternion, 4 components (Vector4 alias)"
+ },
+ {
+ "type": "Texture",
+ "name": "Texture2D",
+ "description": "Texture2D, same as Texture"
+ },
+ {
+ "type": "Texture",
+ "name": "TextureCubemap",
+ "description": "TextureCubemap, same as Texture"
+ },
+ {
+ "type": "RenderTexture",
+ "name": "RenderTexture2D",
+ "description": "RenderTexture2D, same as RenderTexture"
+ },
+ {
+ "type": "Camera3D",
+ "name": "Camera",
+ "description": "Camera type fallback, defaults to Camera3D"
+ }
+ ],
+ "enums": [
+ {
+ "name": "ConfigFlags",
+ "description": "System/Window config flags",
+ "values": [
+ {
+ "name": "FLAG_VSYNC_HINT",
+ "value": 64,
+ "description": "Set to try enabling V-Sync on GPU"
+ },
+ {
+ "name": "FLAG_FULLSCREEN_MODE",
+ "value": 2,
+ "description": "Set to run program in fullscreen"
+ },
+ {
+ "name": "FLAG_WINDOW_RESIZABLE",
+ "value": 4,
+ "description": "Set to allow resizable window"
+ },
+ {
+ "name": "FLAG_WINDOW_UNDECORATED",
+ "value": 8,
+ "description": "Set to disable window decoration (frame and buttons)"
+ },
+ {
+ "name": "FLAG_WINDOW_HIDDEN",
+ "value": 128,
+ "description": "Set to hide window"
+ },
+ {
+ "name": "FLAG_WINDOW_MINIMIZED",
+ "value": 512,
+ "description": "Set to minimize window (iconify)"
+ },
+ {
+ "name": "FLAG_WINDOW_MAXIMIZED",
+ "value": 1024,
+ "description": "Set to maximize window (expanded to monitor)"
+ },
+ {
+ "name": "FLAG_WINDOW_UNFOCUSED",
+ "value": 2048,
+ "description": "Set to window non focused"
+ },
+ {
+ "name": "FLAG_WINDOW_TOPMOST",
+ "value": 4096,
+ "description": "Set to window always on top"
+ },
+ {
+ "name": "FLAG_WINDOW_ALWAYS_RUN",
+ "value": 256,
+ "description": "Set to allow windows running while minimized"
+ },
+ {
+ "name": "FLAG_WINDOW_TRANSPARENT",
+ "value": 16,
+ "description": "Set to allow transparent framebuffer"
+ },
+ {
+ "name": "FLAG_WINDOW_HIGHDPI",
+ "value": 8192,
+ "description": "Set to support HighDPI"
+ },
+ {
+ "name": "FLAG_WINDOW_MOUSE_PASSTHROUGH",
+ "value": 16384,
+ "description": "Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED"
+ },
+ {
+ "name": "FLAG_BORDERLESS_WINDOWED_MODE",
+ "value": 32768,
+ "description": "Set to run program in borderless windowed mode"
+ },
+ {
+ "name": "FLAG_MSAA_4X_HINT",
+ "value": 32,
+ "description": "Set to try enabling MSAA 4X"
+ },
+ {
+ "name": "FLAG_INTERLACED_HINT",
+ "value": 65536,
+ "description": "Set to try enabling interlaced video format (for V3D)"
+ }
+ ]
+ },
+ {
+ "name": "TraceLogLevel",
+ "description": "Trace log level",
+ "values": [
+ {
+ "name": "LOG_ALL",
+ "value": 0,
+ "description": "Display all logs"
+ },
+ {
+ "name": "LOG_TRACE",
+ "value": 1,
+ "description": "Trace logging, intended for internal use only"
+ },
+ {
+ "name": "LOG_DEBUG",
+ "value": 2,
+ "description": "Debug logging, used for internal debugging, it should be disabled on release builds"
+ },
+ {
+ "name": "LOG_INFO",
+ "value": 3,
+ "description": "Info logging, used for program execution info"
+ },
+ {
+ "name": "LOG_WARNING",
+ "value": 4,
+ "description": "Warning logging, used on recoverable failures"
+ },
+ {
+ "name": "LOG_ERROR",
+ "value": 5,
+ "description": "Error logging, used on unrecoverable failures"
+ },
+ {
+ "name": "LOG_FATAL",
+ "value": 6,
+ "description": "Fatal logging, used to abort program: exit(EXIT_FAILURE)"
+ },
+ {
+ "name": "LOG_NONE",
+ "value": 7,
+ "description": "Disable logging"
+ }
+ ]
+ },
+ {
+ "name": "KeyboardKey",
+ "description": "Keyboard keys (US keyboard layout)",
+ "values": [
+ {
+ "name": "KEY_NULL",
+ "value": 0,
+ "description": "Key: NULL, used for no key pressed"
+ },
+ {
+ "name": "KEY_APOSTROPHE",
+ "value": 39,
+ "description": "Key: '"
+ },
+ {
+ "name": "KEY_COMMA",
+ "value": 44,
+ "description": "Key: ,"
+ },
+ {
+ "name": "KEY_MINUS",
+ "value": 45,
+ "description": "Key: -"
+ },
+ {
+ "name": "KEY_PERIOD",
+ "value": 46,
+ "description": "Key: ."
+ },
+ {
+ "name": "KEY_SLASH",
+ "value": 47,
+ "description": "Key: /"
+ },
+ {
+ "name": "KEY_ZERO",
+ "value": 48,
+ "description": "Key: 0"
+ },
+ {
+ "name": "KEY_ONE",
+ "value": 49,
+ "description": "Key: 1"
+ },
+ {
+ "name": "KEY_TWO",
+ "value": 50,
+ "description": "Key: 2"
+ },
+ {
+ "name": "KEY_THREE",
+ "value": 51,
+ "description": "Key: 3"
+ },
+ {
+ "name": "KEY_FOUR",
+ "value": 52,
+ "description": "Key: 4"
+ },
+ {
+ "name": "KEY_FIVE",
+ "value": 53,
+ "description": "Key: 5"
+ },
+ {
+ "name": "KEY_SIX",
+ "value": 54,
+ "description": "Key: 6"
+ },
+ {
+ "name": "KEY_SEVEN",
+ "value": 55,
+ "description": "Key: 7"
+ },
+ {
+ "name": "KEY_EIGHT",
+ "value": 56,
+ "description": "Key: 8"
+ },
+ {
+ "name": "KEY_NINE",
+ "value": 57,
+ "description": "Key: 9"
+ },
+ {
+ "name": "KEY_SEMICOLON",
+ "value": 59,
+ "description": "Key: ;"
+ },
+ {
+ "name": "KEY_EQUAL",
+ "value": 61,
+ "description": "Key: ="
+ },
+ {
+ "name": "KEY_A",
+ "value": 65,
+ "description": "Key: A | a"
+ },
+ {
+ "name": "KEY_B",
+ "value": 66,
+ "description": "Key: B | b"
+ },
+ {
+ "name": "KEY_C",
+ "value": 67,
+ "description": "Key: C | c"
+ },
+ {
+ "name": "KEY_D",
+ "value": 68,
+ "description": "Key: D | d"
+ },
+ {
+ "name": "KEY_E",
+ "value": 69,
+ "description": "Key: E | e"
+ },
+ {
+ "name": "KEY_F",
+ "value": 70,
+ "description": "Key: F | f"
+ },
+ {
+ "name": "KEY_G",
+ "value": 71,
+ "description": "Key: G | g"
+ },
+ {
+ "name": "KEY_H",
+ "value": 72,
+ "description": "Key: H | h"
+ },
+ {
+ "name": "KEY_I",
+ "value": 73,
+ "description": "Key: I | i"
+ },
+ {
+ "name": "KEY_J",
+ "value": 74,
+ "description": "Key: J | j"
+ },
+ {
+ "name": "KEY_K",
+ "value": 75,
+ "description": "Key: K | k"
+ },
+ {
+ "name": "KEY_L",
+ "value": 76,
+ "description": "Key: L | l"
+ },
+ {
+ "name": "KEY_M",
+ "value": 77,
+ "description": "Key: M | m"
+ },
+ {
+ "name": "KEY_N",
+ "value": 78,
+ "description": "Key: N | n"
+ },
+ {
+ "name": "KEY_O",
+ "value": 79,
+ "description": "Key: O | o"
+ },
+ {
+ "name": "KEY_P",
+ "value": 80,
+ "description": "Key: P | p"
+ },
+ {
+ "name": "KEY_Q",
+ "value": 81,
+ "description": "Key: Q | q"
+ },
+ {
+ "name": "KEY_R",
+ "value": 82,
+ "description": "Key: R | r"
+ },
+ {
+ "name": "KEY_S",
+ "value": 83,
+ "description": "Key: S | s"
+ },
+ {
+ "name": "KEY_T",
+ "value": 84,
+ "description": "Key: T | t"
+ },
+ {
+ "name": "KEY_U",
+ "value": 85,
+ "description": "Key: U | u"
+ },
+ {
+ "name": "KEY_V",
+ "value": 86,
+ "description": "Key: V | v"
+ },
+ {
+ "name": "KEY_W",
+ "value": 87,
+ "description": "Key: W | w"
+ },
+ {
+ "name": "KEY_X",
+ "value": 88,
+ "description": "Key: X | x"
+ },
+ {
+ "name": "KEY_Y",
+ "value": 89,
+ "description": "Key: Y | y"
+ },
+ {
+ "name": "KEY_Z",
+ "value": 90,
+ "description": "Key: Z | z"
+ },
+ {
+ "name": "KEY_LEFT_BRACKET",
+ "value": 91,
+ "description": "Key: ["
+ },
+ {
+ "name": "KEY_BACKSLASH",
+ "value": 92,
+ "description": "Key: '\\'"
+ },
+ {
+ "name": "KEY_RIGHT_BRACKET",
+ "value": 93,
+ "description": "Key: ]"
+ },
+ {
+ "name": "KEY_GRAVE",
+ "value": 96,
+ "description": "Key: `"
+ },
+ {
+ "name": "KEY_SPACE",
+ "value": 32,
+ "description": "Key: Space"
+ },
+ {
+ "name": "KEY_ESCAPE",
+ "value": 256,
+ "description": "Key: Esc"
+ },
+ {
+ "name": "KEY_ENTER",
+ "value": 257,
+ "description": "Key: Enter"
+ },
+ {
+ "name": "KEY_TAB",
+ "value": 258,
+ "description": "Key: Tab"
+ },
+ {
+ "name": "KEY_BACKSPACE",
+ "value": 259,
+ "description": "Key: Backspace"
+ },
+ {
+ "name": "KEY_INSERT",
+ "value": 260,
+ "description": "Key: Ins"
+ },
+ {
+ "name": "KEY_DELETE",
+ "value": 261,
+ "description": "Key: Del"
+ },
+ {
+ "name": "KEY_RIGHT",
+ "value": 262,
+ "description": "Key: Cursor right"
+ },
+ {
+ "name": "KEY_LEFT",
+ "value": 263,
+ "description": "Key: Cursor left"
+ },
+ {
+ "name": "KEY_DOWN",
+ "value": 264,
+ "description": "Key: Cursor down"
+ },
+ {
+ "name": "KEY_UP",
+ "value": 265,
+ "description": "Key: Cursor up"
+ },
+ {
+ "name": "KEY_PAGE_UP",
+ "value": 266,
+ "description": "Key: Page up"
+ },
+ {
+ "name": "KEY_PAGE_DOWN",
+ "value": 267,
+ "description": "Key: Page down"
+ },
+ {
+ "name": "KEY_HOME",
+ "value": 268,
+ "description": "Key: Home"
+ },
+ {
+ "name": "KEY_END",
+ "value": 269,
+ "description": "Key: End"
+ },
+ {
+ "name": "KEY_CAPS_LOCK",
+ "value": 280,
+ "description": "Key: Caps lock"
+ },
+ {
+ "name": "KEY_SCROLL_LOCK",
+ "value": 281,
+ "description": "Key: Scroll down"
+ },
+ {
+ "name": "KEY_NUM_LOCK",
+ "value": 282,
+ "description": "Key: Num lock"
+ },
+ {
+ "name": "KEY_PRINT_SCREEN",
+ "value": 283,
+ "description": "Key: Print screen"
+ },
+ {
+ "name": "KEY_PAUSE",
+ "value": 284,
+ "description": "Key: Pause"
+ },
+ {
+ "name": "KEY_F1",
+ "value": 290,
+ "description": "Key: F1"
+ },
+ {
+ "name": "KEY_F2",
+ "value": 291,
+ "description": "Key: F2"
+ },
+ {
+ "name": "KEY_F3",
+ "value": 292,
+ "description": "Key: F3"
+ },
+ {
+ "name": "KEY_F4",
+ "value": 293,
+ "description": "Key: F4"
+ },
+ {
+ "name": "KEY_F5",
+ "value": 294,
+ "description": "Key: F5"
+ },
+ {
+ "name": "KEY_F6",
+ "value": 295,
+ "description": "Key: F6"
+ },
+ {
+ "name": "KEY_F7",
+ "value": 296,
+ "description": "Key: F7"
+ },
+ {
+ "name": "KEY_F8",
+ "value": 297,
+ "description": "Key: F8"
+ },
+ {
+ "name": "KEY_F9",
+ "value": 298,
+ "description": "Key: F9"
+ },
+ {
+ "name": "KEY_F10",
+ "value": 299,
+ "description": "Key: F10"
+ },
+ {
+ "name": "KEY_F11",
+ "value": 300,
+ "description": "Key: F11"
+ },
+ {
+ "name": "KEY_F12",
+ "value": 301,
+ "description": "Key: F12"
+ },
+ {
+ "name": "KEY_LEFT_SHIFT",
+ "value": 340,
+ "description": "Key: Shift left"
+ },
+ {
+ "name": "KEY_LEFT_CONTROL",
+ "value": 341,
+ "description": "Key: Control left"
+ },
+ {
+ "name": "KEY_LEFT_ALT",
+ "value": 342,
+ "description": "Key: Alt left"
+ },
+ {
+ "name": "KEY_LEFT_SUPER",
+ "value": 343,
+ "description": "Key: Super left"
+ },
+ {
+ "name": "KEY_RIGHT_SHIFT",
+ "value": 344,
+ "description": "Key: Shift right"
+ },
+ {
+ "name": "KEY_RIGHT_CONTROL",
+ "value": 345,
+ "description": "Key: Control right"
+ },
+ {
+ "name": "KEY_RIGHT_ALT",
+ "value": 346,
+ "description": "Key: Alt right"
+ },
+ {
+ "name": "KEY_RIGHT_SUPER",
+ "value": 347,
+ "description": "Key: Super right"
+ },
+ {
+ "name": "KEY_KB_MENU",
+ "value": 348,
+ "description": "Key: KB menu"
+ },
+ {
+ "name": "KEY_KP_0",
+ "value": 320,
+ "description": "Key: Keypad 0"
+ },
+ {
+ "name": "KEY_KP_1",
+ "value": 321,
+ "description": "Key: Keypad 1"
+ },
+ {
+ "name": "KEY_KP_2",
+ "value": 322,
+ "description": "Key: Keypad 2"
+ },
+ {
+ "name": "KEY_KP_3",
+ "value": 323,
+ "description": "Key: Keypad 3"
+ },
+ {
+ "name": "KEY_KP_4",
+ "value": 324,
+ "description": "Key: Keypad 4"
+ },
+ {
+ "name": "KEY_KP_5",
+ "value": 325,
+ "description": "Key: Keypad 5"
+ },
+ {
+ "name": "KEY_KP_6",
+ "value": 326,
+ "description": "Key: Keypad 6"
+ },
+ {
+ "name": "KEY_KP_7",
+ "value": 327,
+ "description": "Key: Keypad 7"
+ },
+ {
+ "name": "KEY_KP_8",
+ "value": 328,
+ "description": "Key: Keypad 8"
+ },
+ {
+ "name": "KEY_KP_9",
+ "value": 329,
+ "description": "Key: Keypad 9"
+ },
+ {
+ "name": "KEY_KP_DECIMAL",
+ "value": 330,
+ "description": "Key: Keypad ."
+ },
+ {
+ "name": "KEY_KP_DIVIDE",
+ "value": 331,
+ "description": "Key: Keypad /"
+ },
+ {
+ "name": "KEY_KP_MULTIPLY",
+ "value": 332,
+ "description": "Key: Keypad *"
+ },
+ {
+ "name": "KEY_KP_SUBTRACT",
+ "value": 333,
+ "description": "Key: Keypad -"
+ },
+ {
+ "name": "KEY_KP_ADD",
+ "value": 334,
+ "description": "Key: Keypad +"
+ },
+ {
+ "name": "KEY_KP_ENTER",
+ "value": 335,
+ "description": "Key: Keypad Enter"
+ },
+ {
+ "name": "KEY_KP_EQUAL",
+ "value": 336,
+ "description": "Key: Keypad ="
+ },
+ {
+ "name": "KEY_BACK",
+ "value": 4,
+ "description": "Key: Android back button"
+ },
+ {
+ "name": "KEY_MENU",
+ "value": 5,
+ "description": "Key: Android menu button"
+ },
+ {
+ "name": "KEY_VOLUME_UP",
+ "value": 24,
+ "description": "Key: Android volume up button"
+ },
+ {
+ "name": "KEY_VOLUME_DOWN",
+ "value": 25,
+ "description": "Key: Android volume down button"
+ }
+ ]
+ },
+ {
+ "name": "MouseButton",
+ "description": "Mouse buttons",
+ "values": [
+ {
+ "name": "MOUSE_BUTTON_LEFT",
+ "value": 0,
+ "description": "Mouse button left"
+ },
+ {
+ "name": "MOUSE_BUTTON_RIGHT",
+ "value": 1,
+ "description": "Mouse button right"
+ },
+ {
+ "name": "MOUSE_BUTTON_MIDDLE",
+ "value": 2,
+ "description": "Mouse button middle (pressed wheel)"
+ },
+ {
+ "name": "MOUSE_BUTTON_SIDE",
+ "value": 3,
+ "description": "Mouse button side (advanced mouse device)"
+ },
+ {
+ "name": "MOUSE_BUTTON_EXTRA",
+ "value": 4,
+ "description": "Mouse button extra (advanced mouse device)"
+ },
+ {
+ "name": "MOUSE_BUTTON_FORWARD",
+ "value": 5,
+ "description": "Mouse button forward (advanced mouse device)"
+ },
+ {
+ "name": "MOUSE_BUTTON_BACK",
+ "value": 6,
+ "description": "Mouse button back (advanced mouse device)"
+ }
+ ]
+ },
+ {
+ "name": "MouseCursor",
+ "description": "Mouse cursor",
+ "values": [
+ {
+ "name": "MOUSE_CURSOR_DEFAULT",
+ "value": 0,
+ "description": "Default pointer shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_ARROW",
+ "value": 1,
+ "description": "Arrow shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_IBEAM",
+ "value": 2,
+ "description": "Text writing cursor shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_CROSSHAIR",
+ "value": 3,
+ "description": "Cross shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_POINTING_HAND",
+ "value": 4,
+ "description": "Pointing hand cursor"
+ },
+ {
+ "name": "MOUSE_CURSOR_RESIZE_EW",
+ "value": 5,
+ "description": "Horizontal resize/move arrow shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_RESIZE_NS",
+ "value": 6,
+ "description": "Vertical resize/move arrow shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_RESIZE_NWSE",
+ "value": 7,
+ "description": "Top-left to bottom-right diagonal resize/move arrow shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_RESIZE_NESW",
+ "value": 8,
+ "description": "The top-right to bottom-left diagonal resize/move arrow shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_RESIZE_ALL",
+ "value": 9,
+ "description": "The omnidirectional resize/move cursor shape"
+ },
+ {
+ "name": "MOUSE_CURSOR_NOT_ALLOWED",
+ "value": 10,
+ "description": "The operation-not-allowed shape"
+ }
+ ]
+ },
+ {
+ "name": "GamepadButton",
+ "description": "Gamepad buttons",
+ "values": [
+ {
+ "name": "GAMEPAD_BUTTON_UNKNOWN",
+ "value": 0,
+ "description": "Unknown button, just for error checking"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_FACE_UP",
+ "value": 1,
+ "description": "Gamepad left DPAD up button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_FACE_RIGHT",
+ "value": 2,
+ "description": "Gamepad left DPAD right button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_FACE_DOWN",
+ "value": 3,
+ "description": "Gamepad left DPAD down button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_FACE_LEFT",
+ "value": 4,
+ "description": "Gamepad left DPAD left button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_FACE_UP",
+ "value": 5,
+ "description": "Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_FACE_RIGHT",
+ "value": 6,
+ "description": "Gamepad right button right (i.e. PS3: Circle, Xbox: B)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_FACE_DOWN",
+ "value": 7,
+ "description": "Gamepad right button down (i.e. PS3: Cross, Xbox: A)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_FACE_LEFT",
+ "value": 8,
+ "description": "Gamepad right button left (i.e. PS3: Square, Xbox: X)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_TRIGGER_1",
+ "value": 9,
+ "description": "Gamepad top/back trigger left (first), it could be a trailing button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_TRIGGER_2",
+ "value": 10,
+ "description": "Gamepad top/back trigger left (second), it could be a trailing button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_TRIGGER_1",
+ "value": 11,
+ "description": "Gamepad top/back trigger right (first), it could be a trailing button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_TRIGGER_2",
+ "value": 12,
+ "description": "Gamepad top/back trigger right (second), it could be a trailing button"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_MIDDLE_LEFT",
+ "value": 13,
+ "description": "Gamepad center buttons, left one (i.e. PS3: Select)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_MIDDLE",
+ "value": 14,
+ "description": "Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_MIDDLE_RIGHT",
+ "value": 15,
+ "description": "Gamepad center buttons, right one (i.e. PS3: Start)"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_LEFT_THUMB",
+ "value": 16,
+ "description": "Gamepad joystick pressed button left"
+ },
+ {
+ "name": "GAMEPAD_BUTTON_RIGHT_THUMB",
+ "value": 17,
+ "description": "Gamepad joystick pressed button right"
+ }
+ ]
+ },
+ {
+ "name": "GamepadAxis",
+ "description": "Gamepad axes",
+ "values": [
+ {
+ "name": "GAMEPAD_AXIS_LEFT_X",
+ "value": 0,
+ "description": "Gamepad left stick X axis"
+ },
+ {
+ "name": "GAMEPAD_AXIS_LEFT_Y",
+ "value": 1,
+ "description": "Gamepad left stick Y axis"
+ },
+ {
+ "name": "GAMEPAD_AXIS_RIGHT_X",
+ "value": 2,
+ "description": "Gamepad right stick X axis"
+ },
+ {
+ "name": "GAMEPAD_AXIS_RIGHT_Y",
+ "value": 3,
+ "description": "Gamepad right stick Y axis"
+ },
+ {
+ "name": "GAMEPAD_AXIS_LEFT_TRIGGER",
+ "value": 4,
+ "description": "Gamepad back trigger left, pressure level: [1..-1]"
+ },
+ {
+ "name": "GAMEPAD_AXIS_RIGHT_TRIGGER",
+ "value": 5,
+ "description": "Gamepad back trigger right, pressure level: [1..-1]"
+ }
+ ]
+ },
+ {
+ "name": "MaterialMapIndex",
+ "description": "Material map index",
+ "values": [
+ {
+ "name": "MATERIAL_MAP_ALBEDO",
+ "value": 0,
+ "description": "Albedo material (same as: MATERIAL_MAP_DIFFUSE)"
+ },
+ {
+ "name": "MATERIAL_MAP_METALNESS",
+ "value": 1,
+ "description": "Metalness material (same as: MATERIAL_MAP_SPECULAR)"
+ },
+ {
+ "name": "MATERIAL_MAP_NORMAL",
+ "value": 2,
+ "description": "Normal material"
+ },
+ {
+ "name": "MATERIAL_MAP_ROUGHNESS",
+ "value": 3,
+ "description": "Roughness material"
+ },
+ {
+ "name": "MATERIAL_MAP_OCCLUSION",
+ "value": 4,
+ "description": "Ambient occlusion material"
+ },
+ {
+ "name": "MATERIAL_MAP_EMISSION",
+ "value": 5,
+ "description": "Emission material"
+ },
+ {
+ "name": "MATERIAL_MAP_HEIGHT",
+ "value": 6,
+ "description": "Heightmap material"
+ },
+ {
+ "name": "MATERIAL_MAP_CUBEMAP",
+ "value": 7,
+ "description": "Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)"
+ },
+ {
+ "name": "MATERIAL_MAP_IRRADIANCE",
+ "value": 8,
+ "description": "Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)"
+ },
+ {
+ "name": "MATERIAL_MAP_PREFILTER",
+ "value": 9,
+ "description": "Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)"
+ },
+ {
+ "name": "MATERIAL_MAP_BRDF",
+ "value": 10,
+ "description": "Brdf material"
+ }
+ ]
+ },
+ {
+ "name": "ShaderLocationIndex",
+ "description": "Shader location index",
+ "values": [
+ {
+ "name": "SHADER_LOC_VERTEX_POSITION",
+ "value": 0,
+ "description": "Shader location: vertex attribute: position"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_TEXCOORD01",
+ "value": 1,
+ "description": "Shader location: vertex attribute: texcoord01"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_TEXCOORD02",
+ "value": 2,
+ "description": "Shader location: vertex attribute: texcoord02"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_NORMAL",
+ "value": 3,
+ "description": "Shader location: vertex attribute: normal"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_TANGENT",
+ "value": 4,
+ "description": "Shader location: vertex attribute: tangent"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_COLOR",
+ "value": 5,
+ "description": "Shader location: vertex attribute: color"
+ },
+ {
+ "name": "SHADER_LOC_MATRIX_MVP",
+ "value": 6,
+ "description": "Shader location: matrix uniform: model-view-projection"
+ },
+ {
+ "name": "SHADER_LOC_MATRIX_VIEW",
+ "value": 7,
+ "description": "Shader location: matrix uniform: view (camera transform)"
+ },
+ {
+ "name": "SHADER_LOC_MATRIX_PROJECTION",
+ "value": 8,
+ "description": "Shader location: matrix uniform: projection"
+ },
+ {
+ "name": "SHADER_LOC_MATRIX_MODEL",
+ "value": 9,
+ "description": "Shader location: matrix uniform: model (transform)"
+ },
+ {
+ "name": "SHADER_LOC_MATRIX_NORMAL",
+ "value": 10,
+ "description": "Shader location: matrix uniform: normal"
+ },
+ {
+ "name": "SHADER_LOC_VECTOR_VIEW",
+ "value": 11,
+ "description": "Shader location: vector uniform: view"
+ },
+ {
+ "name": "SHADER_LOC_COLOR_DIFFUSE",
+ "value": 12,
+ "description": "Shader location: vector uniform: diffuse color"
+ },
+ {
+ "name": "SHADER_LOC_COLOR_SPECULAR",
+ "value": 13,
+ "description": "Shader location: vector uniform: specular color"
+ },
+ {
+ "name": "SHADER_LOC_COLOR_AMBIENT",
+ "value": 14,
+ "description": "Shader location: vector uniform: ambient color"
+ },
+ {
+ "name": "SHADER_LOC_MAP_ALBEDO",
+ "value": 15,
+ "description": "Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)"
+ },
+ {
+ "name": "SHADER_LOC_MAP_METALNESS",
+ "value": 16,
+ "description": "Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)"
+ },
+ {
+ "name": "SHADER_LOC_MAP_NORMAL",
+ "value": 17,
+ "description": "Shader location: sampler2d texture: normal"
+ },
+ {
+ "name": "SHADER_LOC_MAP_ROUGHNESS",
+ "value": 18,
+ "description": "Shader location: sampler2d texture: roughness"
+ },
+ {
+ "name": "SHADER_LOC_MAP_OCCLUSION",
+ "value": 19,
+ "description": "Shader location: sampler2d texture: occlusion"
+ },
+ {
+ "name": "SHADER_LOC_MAP_EMISSION",
+ "value": 20,
+ "description": "Shader location: sampler2d texture: emission"
+ },
+ {
+ "name": "SHADER_LOC_MAP_HEIGHT",
+ "value": 21,
+ "description": "Shader location: sampler2d texture: height"
+ },
+ {
+ "name": "SHADER_LOC_MAP_CUBEMAP",
+ "value": 22,
+ "description": "Shader location: samplerCube texture: cubemap"
+ },
+ {
+ "name": "SHADER_LOC_MAP_IRRADIANCE",
+ "value": 23,
+ "description": "Shader location: samplerCube texture: irradiance"
+ },
+ {
+ "name": "SHADER_LOC_MAP_PREFILTER",
+ "value": 24,
+ "description": "Shader location: samplerCube texture: prefilter"
+ },
+ {
+ "name": "SHADER_LOC_MAP_BRDF",
+ "value": 25,
+ "description": "Shader location: sampler2d texture: brdf"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_BONEIDS",
+ "value": 26,
+ "description": "Shader location: vertex attribute: boneIds"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_BONEWEIGHTS",
+ "value": 27,
+ "description": "Shader location: vertex attribute: boneWeights"
+ },
+ {
+ "name": "SHADER_LOC_BONE_MATRICES",
+ "value": 28,
+ "description": "Shader location: array of matrices uniform: boneMatrices"
+ },
+ {
+ "name": "SHADER_LOC_VERTEX_INSTANCE_TX",
+ "value": 29,
+ "description": "Shader location: vertex attribute: instanceTransform"
+ }
+ ]
+ },
+ {
+ "name": "ShaderUniformDataType",
+ "description": "Shader uniform data type",
+ "values": [
+ {
+ "name": "SHADER_UNIFORM_FLOAT",
+ "value": 0,
+ "description": "Shader uniform type: float"
+ },
+ {
+ "name": "SHADER_UNIFORM_VEC2",
+ "value": 1,
+ "description": "Shader uniform type: vec2 (2 float)"
+ },
+ {
+ "name": "SHADER_UNIFORM_VEC3",
+ "value": 2,
+ "description": "Shader uniform type: vec3 (3 float)"
+ },
+ {
+ "name": "SHADER_UNIFORM_VEC4",
+ "value": 3,
+ "description": "Shader uniform type: vec4 (4 float)"
+ },
+ {
+ "name": "SHADER_UNIFORM_INT",
+ "value": 4,
+ "description": "Shader uniform type: int"
+ },
+ {
+ "name": "SHADER_UNIFORM_IVEC2",
+ "value": 5,
+ "description": "Shader uniform type: ivec2 (2 int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_IVEC3",
+ "value": 6,
+ "description": "Shader uniform type: ivec3 (3 int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_IVEC4",
+ "value": 7,
+ "description": "Shader uniform type: ivec4 (4 int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_UINT",
+ "value": 8,
+ "description": "Shader uniform type: unsigned int"
+ },
+ {
+ "name": "SHADER_UNIFORM_UIVEC2",
+ "value": 9,
+ "description": "Shader uniform type: uivec2 (2 unsigned int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_UIVEC3",
+ "value": 10,
+ "description": "Shader uniform type: uivec3 (3 unsigned int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_UIVEC4",
+ "value": 11,
+ "description": "Shader uniform type: uivec4 (4 unsigned int)"
+ },
+ {
+ "name": "SHADER_UNIFORM_SAMPLER2D",
+ "value": 12,
+ "description": "Shader uniform type: sampler2d"
+ }
+ ]
+ },
+ {
+ "name": "ShaderAttributeDataType",
+ "description": "Shader attribute data types",
+ "values": [
+ {
+ "name": "SHADER_ATTRIB_FLOAT",
+ "value": 0,
+ "description": "Shader attribute type: float"
+ },
+ {
+ "name": "SHADER_ATTRIB_VEC2",
+ "value": 1,
+ "description": "Shader attribute type: vec2 (2 float)"
+ },
+ {
+ "name": "SHADER_ATTRIB_VEC3",
+ "value": 2,
+ "description": "Shader attribute type: vec3 (3 float)"
+ },
+ {
+ "name": "SHADER_ATTRIB_VEC4",
+ "value": 3,
+ "description": "Shader attribute type: vec4 (4 float)"
+ }
+ ]
+ },
+ {
+ "name": "PixelFormat",
+ "description": "Pixel formats",
+ "values": [
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",
+ "value": 1,
+ "description": "8 bit per pixel (no alpha)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",
+ "value": 2,
+ "description": "8*2 bpp (2 channels)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R5G6B5",
+ "value": 3,
+ "description": "16 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R8G8B8",
+ "value": 4,
+ "description": "24 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",
+ "value": 5,
+ "description": "16 bpp (1 bit alpha)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",
+ "value": 6,
+ "description": "16 bpp (4 bit alpha)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",
+ "value": 7,
+ "description": "32 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R32",
+ "value": 8,
+ "description": "32 bpp (1 channel - float)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R32G32B32",
+ "value": 9,
+ "description": "32*3 bpp (3 channels - float)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",
+ "value": 10,
+ "description": "32*4 bpp (4 channels - float)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R16",
+ "value": 11,
+ "description": "16 bpp (1 channel - half float)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R16G16B16",
+ "value": 12,
+ "description": "16*3 bpp (3 channels - half float)"
+ },
+ {
+ "name": "PIXELFORMAT_UNCOMPRESSED_R16G16B16A16",
+ "value": 13,
+ "description": "16*4 bpp (4 channels - half float)"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_DXT1_RGB",
+ "value": 14,
+ "description": "4 bpp (no alpha)"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_DXT1_RGBA",
+ "value": 15,
+ "description": "4 bpp (1 bit alpha)"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_DXT3_RGBA",
+ "value": 16,
+ "description": "8 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_DXT5_RGBA",
+ "value": 17,
+ "description": "8 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_ETC1_RGB",
+ "value": 18,
+ "description": "4 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_ETC2_RGB",
+ "value": 19,
+ "description": "4 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",
+ "value": 20,
+ "description": "8 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_PVRT_RGB",
+ "value": 21,
+ "description": "4 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_PVRT_RGBA",
+ "value": 22,
+ "description": "4 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",
+ "value": 23,
+ "description": "8 bpp"
+ },
+ {
+ "name": "PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",
+ "value": 24,
+ "description": "2 bpp"
+ }
+ ]
+ },
+ {
+ "name": "TextureFilter",
+ "description": "Texture parameters: filter mode",
+ "values": [
+ {
+ "name": "TEXTURE_FILTER_POINT",
+ "value": 0,
+ "description": "No filter, just pixel approximation"
+ },
+ {
+ "name": "TEXTURE_FILTER_BILINEAR",
+ "value": 1,
+ "description": "Linear filtering"
+ },
+ {
+ "name": "TEXTURE_FILTER_TRILINEAR",
+ "value": 2,
+ "description": "Trilinear filtering (linear with mipmaps)"
+ },
+ {
+ "name": "TEXTURE_FILTER_ANISOTROPIC_4X",
+ "value": 3,
+ "description": "Anisotropic filtering 4x"
+ },
+ {
+ "name": "TEXTURE_FILTER_ANISOTROPIC_8X",
+ "value": 4,
+ "description": "Anisotropic filtering 8x"
+ },
+ {
+ "name": "TEXTURE_FILTER_ANISOTROPIC_16X",
+ "value": 5,
+ "description": "Anisotropic filtering 16x"
+ }
+ ]
+ },
+ {
+ "name": "TextureWrap",
+ "description": "Texture parameters: wrap mode",
+ "values": [
+ {
+ "name": "TEXTURE_WRAP_REPEAT",
+ "value": 0,
+ "description": "Repeats texture in tiled mode"
+ },
+ {
+ "name": "TEXTURE_WRAP_CLAMP",
+ "value": 1,
+ "description": "Clamps texture to edge pixel in tiled mode"
+ },
+ {
+ "name": "TEXTURE_WRAP_MIRROR_REPEAT",
+ "value": 2,
+ "description": "Mirrors and repeats the texture in tiled mode"
+ },
+ {
+ "name": "TEXTURE_WRAP_MIRROR_CLAMP",
+ "value": 3,
+ "description": "Mirrors and clamps to border the texture in tiled mode"
+ }
+ ]
+ },
+ {
+ "name": "CubemapLayout",
+ "description": "Cubemap layouts",
+ "values": [
+ {
+ "name": "CUBEMAP_LAYOUT_AUTO_DETECT",
+ "value": 0,
+ "description": "Automatically detect layout type"
+ },
+ {
+ "name": "CUBEMAP_LAYOUT_LINE_VERTICAL",
+ "value": 1,
+ "description": "Layout is defined by a vertical line with faces"
+ },
+ {
+ "name": "CUBEMAP_LAYOUT_LINE_HORIZONTAL",
+ "value": 2,
+ "description": "Layout is defined by a horizontal line with faces"
+ },
+ {
+ "name": "CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR",
+ "value": 3,
+ "description": "Layout is defined by a 3x4 cross with cubemap faces"
+ },
+ {
+ "name": "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
+ "value": 4,
+ "description": "Layout is defined by a 4x3 cross with cubemap faces"
+ }
+ ]
+ },
+ {
+ "name": "FontType",
+ "description": "Font type, defines generation method",
+ "values": [
+ {
+ "name": "FONT_DEFAULT",
+ "value": 0,
+ "description": "Default font generation, anti-aliased"
+ },
+ {
+ "name": "FONT_BITMAP",
+ "value": 1,
+ "description": "Bitmap font generation, no anti-aliasing"
+ },
+ {
+ "name": "FONT_SDF",
+ "value": 2,
+ "description": "SDF font generation, requires external shader"
+ }
+ ]
+ },
+ {
+ "name": "BlendMode",
+ "description": "Color blending modes (pre-defined)",
+ "values": [
+ {
+ "name": "BLEND_ALPHA",
+ "value": 0,
+ "description": "Blend textures considering alpha (default)"
+ },
+ {
+ "name": "BLEND_ADDITIVE",
+ "value": 1,
+ "description": "Blend textures adding colors"
+ },
+ {
+ "name": "BLEND_MULTIPLIED",
+ "value": 2,
+ "description": "Blend textures multiplying colors"
+ },
+ {
+ "name": "BLEND_ADD_COLORS",
+ "value": 3,
+ "description": "Blend textures adding colors (alternative)"
+ },
+ {
+ "name": "BLEND_SUBTRACT_COLORS",
+ "value": 4,
+ "description": "Blend textures subtracting colors (alternative)"
+ },
+ {
+ "name": "BLEND_ALPHA_PREMULTIPLY",
+ "value": 5,
+ "description": "Blend premultiplied textures considering alpha"
+ },
+ {
+ "name": "BLEND_CUSTOM",
+ "value": 6,
+ "description": "Blend textures using custom src/dst factors (use rlSetBlendFactors())"
+ },
+ {
+ "name": "BLEND_CUSTOM_SEPARATE",
+ "value": 7,
+ "description": "Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate())"
+ }
+ ]
+ },
+ {
+ "name": "Gesture",
+ "description": "Gesture",
+ "values": [
+ {
+ "name": "GESTURE_NONE",
+ "value": 0,
+ "description": "No gesture"
+ },
+ {
+ "name": "GESTURE_TAP",
+ "value": 1,
+ "description": "Tap gesture"
+ },
+ {
+ "name": "GESTURE_DOUBLETAP",
+ "value": 2,
+ "description": "Double tap gesture"
+ },
+ {
+ "name": "GESTURE_HOLD",
+ "value": 4,
+ "description": "Hold gesture"
+ },
+ {
+ "name": "GESTURE_DRAG",
+ "value": 8,
+ "description": "Drag gesture"
+ },
+ {
+ "name": "GESTURE_SWIPE_RIGHT",
+ "value": 16,
+ "description": "Swipe right gesture"
+ },
+ {
+ "name": "GESTURE_SWIPE_LEFT",
+ "value": 32,
+ "description": "Swipe left gesture"
+ },
+ {
+ "name": "GESTURE_SWIPE_UP",
+ "value": 64,
+ "description": "Swipe up gesture"
+ },
+ {
+ "name": "GESTURE_SWIPE_DOWN",
+ "value": 128,
+ "description": "Swipe down gesture"
+ },
+ {
+ "name": "GESTURE_PINCH_IN",
+ "value": 256,
+ "description": "Pinch in gesture"
+ },
+ {
+ "name": "GESTURE_PINCH_OUT",
+ "value": 512,
+ "description": "Pinch out gesture"
+ }
+ ]
+ },
+ {
+ "name": "CameraMode",
+ "description": "Camera system modes",
+ "values": [
+ {
+ "name": "CAMERA_CUSTOM",
+ "value": 0,
+ "description": "Camera custom, controlled by user (UpdateCamera() does nothing)"
+ },
+ {
+ "name": "CAMERA_FREE",
+ "value": 1,
+ "description": "Camera free mode"
+ },
+ {
+ "name": "CAMERA_ORBITAL",
+ "value": 2,
+ "description": "Camera orbital, around target, zoom supported"
+ },
+ {
+ "name": "CAMERA_FIRST_PERSON",
+ "value": 3,
+ "description": "Camera first person"
+ },
+ {
+ "name": "CAMERA_THIRD_PERSON",
+ "value": 4,
+ "description": "Camera third person"
+ }
+ ]
+ },
+ {
+ "name": "CameraProjection",
+ "description": "Camera projection",
+ "values": [
+ {
+ "name": "CAMERA_PERSPECTIVE",
+ "value": 0,
+ "description": "Perspective projection"
+ },
+ {
+ "name": "CAMERA_ORTHOGRAPHIC",
+ "value": 1,
+ "description": "Orthographic projection"
+ }
+ ]
+ },
+ {
+ "name": "NPatchLayout",
+ "description": "N-patch layout",
+ "values": [
+ {
+ "name": "NPATCH_NINE_PATCH",
+ "value": 0,
+ "description": "Npatch layout: 3x3 tiles"
+ },
+ {
+ "name": "NPATCH_THREE_PATCH_VERTICAL",
+ "value": 1,
+ "description": "Npatch layout: 1x3 tiles"
+ },
+ {
+ "name": "NPATCH_THREE_PATCH_HORIZONTAL",
+ "value": 2,
+ "description": "Npatch layout: 3x1 tiles"
+ }
+ ]
+ }
+ ],
+ "callbacks": [
+ {
+ "name": "TraceLogCallback",
+ "description": "Logging: Redirect trace log messages",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "logLevel"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "va_list",
+ "name": "args"
+ }
+ ]
+ },
+ {
+ "name": "LoadFileDataCallback",
+ "description": "FileIO: Load binary data",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int *",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "SaveFileDataCallback",
+ "description": "FileIO: Save binary data",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "void *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "LoadFileTextCallback",
+ "description": "FileIO: Load text data",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "SaveFileTextCallback",
+ "description": "FileIO: Save text data",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "AudioCallback",
+ "description": "",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "void *",
+ "name": "bufferData"
+ },
+ {
+ "type": "unsigned int",
+ "name": "frames"
+ }
+ ]
+ }
+ ],
+ "functions": [
+ {
+ "name": "InitWindow",
+ "description": "Initialize window and OpenGL context",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "const char *",
+ "name": "title"
+ }
+ ]
+ },
+ {
+ "name": "CloseWindow",
+ "description": "Close window and unload OpenGL context",
+ "returnType": "void"
+ },
+ {
+ "name": "WindowShouldClose",
+ "description": "Check if application should close (KEY_ESCAPE pressed or windows close icon clicked)",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowReady",
+ "description": "Check if window has been initialized successfully",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowFullscreen",
+ "description": "Check if window is currently fullscreen",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowHidden",
+ "description": "Check if window is currently hidden",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowMinimized",
+ "description": "Check if window is currently minimized",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowMaximized",
+ "description": "Check if window is currently maximized",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowFocused",
+ "description": "Check if window is currently focused",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowResized",
+ "description": "Check if window has been resized last frame",
+ "returnType": "bool"
+ },
+ {
+ "name": "IsWindowState",
+ "description": "Check if one specific window flag is enabled",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "flag"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowState",
+ "description": "Set window configuration state using flags",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "flags"
+ }
+ ]
+ },
+ {
+ "name": "ClearWindowState",
+ "description": "Clear window configuration state flags",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "flags"
+ }
+ ]
+ },
+ {
+ "name": "ToggleFullscreen",
+ "description": "Toggle window state: fullscreen/windowed, resizes monitor to match window resolution",
+ "returnType": "void"
+ },
+ {
+ "name": "ToggleBorderlessWindowed",
+ "description": "Toggle window state: borderless windowed, resizes window to match monitor resolution",
+ "returnType": "void"
+ },
+ {
+ "name": "MaximizeWindow",
+ "description": "Set window state: maximized, if resizable",
+ "returnType": "void"
+ },
+ {
+ "name": "MinimizeWindow",
+ "description": "Set window state: minimized, if resizable",
+ "returnType": "void"
+ },
+ {
+ "name": "RestoreWindow",
+ "description": "Restore window from being minimized/maximized",
+ "returnType": "void"
+ },
+ {
+ "name": "SetWindowIcon",
+ "description": "Set icon for window (single image, RGBA 32bit)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowIcons",
+ "description": "Set icon for window (multiple images, RGBA 32bit)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "images"
+ },
+ {
+ "type": "int",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowTitle",
+ "description": "Set title for window",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "title"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowPosition",
+ "description": "Set window position on screen",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "x"
+ },
+ {
+ "type": "int",
+ "name": "y"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowMonitor",
+ "description": "Set monitor for the current window",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowMinSize",
+ "description": "Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowMaxSize",
+ "description": "Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowSize",
+ "description": "Set window dimensions",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowOpacity",
+ "description": "Set window opacity [0.0f..1.0f]",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "float",
+ "name": "opacity"
+ }
+ ]
+ },
+ {
+ "name": "SetWindowFocused",
+ "description": "Set window focused",
+ "returnType": "void"
+ },
+ {
+ "name": "GetWindowHandle",
+ "description": "Get native window handle",
+ "returnType": "void *"
+ },
+ {
+ "name": "GetScreenWidth",
+ "description": "Get current screen width",
+ "returnType": "int"
+ },
+ {
+ "name": "GetScreenHeight",
+ "description": "Get current screen height",
+ "returnType": "int"
+ },
+ {
+ "name": "GetRenderWidth",
+ "description": "Get current render width (it considers HiDPI)",
+ "returnType": "int"
+ },
+ {
+ "name": "GetRenderHeight",
+ "description": "Get current render height (it considers HiDPI)",
+ "returnType": "int"
+ },
+ {
+ "name": "GetMonitorCount",
+ "description": "Get number of connected monitors",
+ "returnType": "int"
+ },
+ {
+ "name": "GetCurrentMonitor",
+ "description": "Get current monitor where window is placed",
+ "returnType": "int"
+ },
+ {
+ "name": "GetMonitorPosition",
+ "description": "Get specified monitor position",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetMonitorWidth",
+ "description": "Get specified monitor width (current video mode used by monitor)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetMonitorHeight",
+ "description": "Get specified monitor height (current video mode used by monitor)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetMonitorPhysicalWidth",
+ "description": "Get specified monitor physical width in millimetres",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetMonitorPhysicalHeight",
+ "description": "Get specified monitor physical height in millimetres",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetMonitorRefreshRate",
+ "description": "Get specified monitor refresh rate",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "GetWindowPosition",
+ "description": "Get window position XY on monitor",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "GetWindowScaleDPI",
+ "description": "Get window scale DPI factor",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "GetMonitorName",
+ "description": "Get the human-readable, UTF-8 encoded name of the specified monitor",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "int",
+ "name": "monitor"
+ }
+ ]
+ },
+ {
+ "name": "SetClipboardText",
+ "description": "Set clipboard text content",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "GetClipboardText",
+ "description": "Get clipboard text content",
+ "returnType": "const char *"
+ },
+ {
+ "name": "GetClipboardImage",
+ "description": "Get clipboard image content",
+ "returnType": "Image"
+ },
+ {
+ "name": "EnableEventWaiting",
+ "description": "Enable waiting for events on EndDrawing(), no automatic event polling",
+ "returnType": "void"
+ },
+ {
+ "name": "DisableEventWaiting",
+ "description": "Disable waiting for events on EndDrawing(), automatic events polling",
+ "returnType": "void"
+ },
+ {
+ "name": "ShowCursor",
+ "description": "Shows cursor",
+ "returnType": "void"
+ },
+ {
+ "name": "HideCursor",
+ "description": "Hides cursor",
+ "returnType": "void"
+ },
+ {
+ "name": "IsCursorHidden",
+ "description": "Check if cursor is not visible",
+ "returnType": "bool"
+ },
+ {
+ "name": "EnableCursor",
+ "description": "Enables cursor (unlock cursor)",
+ "returnType": "void"
+ },
+ {
+ "name": "DisableCursor",
+ "description": "Disables cursor (lock cursor)",
+ "returnType": "void"
+ },
+ {
+ "name": "IsCursorOnScreen",
+ "description": "Check if cursor is on the screen",
+ "returnType": "bool"
+ },
+ {
+ "name": "ClearBackground",
+ "description": "Set background color (framebuffer clear color)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "BeginDrawing",
+ "description": "Setup canvas (framebuffer) to start drawing",
+ "returnType": "void"
+ },
+ {
+ "name": "EndDrawing",
+ "description": "End canvas drawing and swap buffers (double buffering)",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginMode2D",
+ "description": "Begin 2D mode with custom camera (2D)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera2D",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "EndMode2D",
+ "description": "Ends 2D mode with custom camera",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginMode3D",
+ "description": "Begin 3D mode with custom camera (3D)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera3D",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "EndMode3D",
+ "description": "Ends 3D mode and returns to default 2D orthographic mode",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginTextureMode",
+ "description": "Begin drawing to render texture",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "RenderTexture2D",
+ "name": "target"
+ }
+ ]
+ },
+ {
+ "name": "EndTextureMode",
+ "description": "Ends drawing to render texture",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginShaderMode",
+ "description": "Begin custom shader drawing",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ }
+ ]
+ },
+ {
+ "name": "EndShaderMode",
+ "description": "End custom shader drawing (use default shader)",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginBlendMode",
+ "description": "Begin blending mode (alpha, additive, multiplied, subtract, custom)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "mode"
+ }
+ ]
+ },
+ {
+ "name": "EndBlendMode",
+ "description": "End blending mode (reset to default: alpha blending)",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginScissorMode",
+ "description": "Begin scissor mode (define screen area for following drawing)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "x"
+ },
+ {
+ "type": "int",
+ "name": "y"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "EndScissorMode",
+ "description": "End scissor mode",
+ "returnType": "void"
+ },
+ {
+ "name": "BeginVrStereoMode",
+ "description": "Begin stereo rendering (requires VR simulator)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "VrStereoConfig",
+ "name": "config"
+ }
+ ]
+ },
+ {
+ "name": "EndVrStereoMode",
+ "description": "End stereo rendering (requires VR simulator)",
+ "returnType": "void"
+ },
+ {
+ "name": "LoadVrStereoConfig",
+ "description": "Load VR stereo config for VR simulator device parameters",
+ "returnType": "VrStereoConfig",
+ "params": [
+ {
+ "type": "VrDeviceInfo",
+ "name": "device"
+ }
+ ]
+ },
+ {
+ "name": "UnloadVrStereoConfig",
+ "description": "Unload VR stereo config",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "VrStereoConfig",
+ "name": "config"
+ }
+ ]
+ },
+ {
+ "name": "LoadShader",
+ "description": "Load shader from files and bind default locations",
+ "returnType": "Shader",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "vsFileName"
+ },
+ {
+ "type": "const char *",
+ "name": "fsFileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadShaderFromMemory",
+ "description": "Load shader from code strings and bind default locations",
+ "returnType": "Shader",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "vsCode"
+ },
+ {
+ "type": "const char *",
+ "name": "fsCode"
+ }
+ ]
+ },
+ {
+ "name": "IsShaderValid",
+ "description": "Check if a shader is valid (loaded on GPU)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ }
+ ]
+ },
+ {
+ "name": "GetShaderLocation",
+ "description": "Get shader uniform location",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "const char *",
+ "name": "uniformName"
+ }
+ ]
+ },
+ {
+ "name": "GetShaderLocationAttrib",
+ "description": "Get shader attribute location",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "const char *",
+ "name": "attribName"
+ }
+ ]
+ },
+ {
+ "name": "SetShaderValue",
+ "description": "Set shader uniform value",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "int",
+ "name": "locIndex"
+ },
+ {
+ "type": "const void *",
+ "name": "value"
+ },
+ {
+ "type": "int",
+ "name": "uniformType"
+ }
+ ]
+ },
+ {
+ "name": "SetShaderValueV",
+ "description": "Set shader uniform value vector",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "int",
+ "name": "locIndex"
+ },
+ {
+ "type": "const void *",
+ "name": "value"
+ },
+ {
+ "type": "int",
+ "name": "uniformType"
+ },
+ {
+ "type": "int",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "SetShaderValueMatrix",
+ "description": "Set shader uniform value (matrix 4x4)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "int",
+ "name": "locIndex"
+ },
+ {
+ "type": "Matrix",
+ "name": "mat"
+ }
+ ]
+ },
+ {
+ "name": "SetShaderValueTexture",
+ "description": "Set shader uniform value and bind the texture (sampler2d)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ },
+ {
+ "type": "int",
+ "name": "locIndex"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "UnloadShader",
+ "description": "Unload shader from GPU memory (VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Shader",
+ "name": "shader"
+ }
+ ]
+ },
+ {
+ "name": "GetScreenToWorldRay",
+ "description": "Get a ray trace from screen position (i.e mouse)",
+ "returnType": "Ray",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Camera",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "GetScreenToWorldRayEx",
+ "description": "Get a ray trace from screen position (i.e mouse) in a viewport",
+ "returnType": "Ray",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Camera",
+ "name": "camera"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "GetWorldToScreen",
+ "description": "Get the screen space position for a 3d world space position",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Camera",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "GetWorldToScreenEx",
+ "description": "Get size position for a 3d world space position",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Camera",
+ "name": "camera"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "GetWorldToScreen2D",
+ "description": "Get the screen space position for a 2d camera world space position",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Camera2D",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "GetScreenToWorld2D",
+ "description": "Get the world space position for a 2d camera screen space position",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Camera2D",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "GetCameraMatrix",
+ "description": "Get camera transform matrix (view matrix)",
+ "returnType": "Matrix",
+ "params": [
+ {
+ "type": "Camera",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "GetCameraMatrix2D",
+ "description": "Get camera 2d transform matrix",
+ "returnType": "Matrix",
+ "params": [
+ {
+ "type": "Camera2D",
+ "name": "camera"
+ }
+ ]
+ },
+ {
+ "name": "SetTargetFPS",
+ "description": "Set target FPS (maximum)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "fps"
+ }
+ ]
+ },
+ {
+ "name": "GetFrameTime",
+ "description": "Get time in seconds for last frame drawn (delta time)",
+ "returnType": "float"
+ },
+ {
+ "name": "GetTime",
+ "description": "Get elapsed time in seconds since InitWindow()",
+ "returnType": "double"
+ },
+ {
+ "name": "GetFPS",
+ "description": "Get current FPS",
+ "returnType": "int"
+ },
+ {
+ "name": "SwapScreenBuffer",
+ "description": "Swap back buffer with front buffer (screen drawing)",
+ "returnType": "void"
+ },
+ {
+ "name": "PollInputEvents",
+ "description": "Register all input events",
+ "returnType": "void"
+ },
+ {
+ "name": "WaitTime",
+ "description": "Wait for some time (halt program execution)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "double",
+ "name": "seconds"
+ }
+ ]
+ },
+ {
+ "name": "SetRandomSeed",
+ "description": "Set the seed for the random number generator",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "seed"
+ }
+ ]
+ },
+ {
+ "name": "GetRandomValue",
+ "description": "Get a random value between min and max (both included)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "min"
+ },
+ {
+ "type": "int",
+ "name": "max"
+ }
+ ]
+ },
+ {
+ "name": "LoadRandomSequence",
+ "description": "Load random values sequence, no values repeated",
+ "returnType": "int *",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "count"
+ },
+ {
+ "type": "int",
+ "name": "min"
+ },
+ {
+ "type": "int",
+ "name": "max"
+ }
+ ]
+ },
+ {
+ "name": "UnloadRandomSequence",
+ "description": "Unload random values sequence",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int *",
+ "name": "sequence"
+ }
+ ]
+ },
+ {
+ "name": "TakeScreenshot",
+ "description": "Takes a screenshot of current screen (filename extension defines format)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "SetConfigFlags",
+ "description": "Setup init configuration flags (view FLAGS)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "flags"
+ }
+ ]
+ },
+ {
+ "name": "OpenURL",
+ "description": "Open URL with default system browser (if available)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "url"
+ }
+ ]
+ },
+ {
+ "name": "SetTraceLogLevel",
+ "description": "Set the current threshold (minimum) log level",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "logLevel"
+ }
+ ]
+ },
+ {
+ "name": "TraceLog",
+ "description": "Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "logLevel"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "...",
+ "name": "args"
+ }
+ ]
+ },
+ {
+ "name": "SetTraceLogCallback",
+ "description": "Set custom trace log",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "TraceLogCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "MemAlloc",
+ "description": "Internal memory allocator",
+ "returnType": "void *",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "size"
+ }
+ ]
+ },
+ {
+ "name": "MemRealloc",
+ "description": "Internal memory reallocator",
+ "returnType": "void *",
+ "params": [
+ {
+ "type": "void *",
+ "name": "ptr"
+ },
+ {
+ "type": "unsigned int",
+ "name": "size"
+ }
+ ]
+ },
+ {
+ "name": "MemFree",
+ "description": "Internal memory free",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "void *",
+ "name": "ptr"
+ }
+ ]
+ },
+ {
+ "name": "LoadFileData",
+ "description": "Load file data as byte array (read)",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int *",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "UnloadFileData",
+ "description": "Unload file data allocated by LoadFileData()",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned char *",
+ "name": "data"
+ }
+ ]
+ },
+ {
+ "name": "SaveFileData",
+ "description": "Save data to file from byte array (write), returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "void *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "ExportDataAsCode",
+ "description": "Export data to code (.h), returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadFileText",
+ "description": "Load text data from file (read), returns a '\\0' terminated string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "UnloadFileText",
+ "description": "Unload file text data allocated by LoadFileText()",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "SaveFileText",
+ "description": "Save text data to file (write), string must be '\\0' terminated, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "SetLoadFileDataCallback",
+ "description": "Set custom file binary data loader",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "LoadFileDataCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "SetSaveFileDataCallback",
+ "description": "Set custom file binary data saver",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "SaveFileDataCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "SetLoadFileTextCallback",
+ "description": "Set custom file text data loader",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "LoadFileTextCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "SetSaveFileTextCallback",
+ "description": "Set custom file text data saver",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "SaveFileTextCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "FileRename",
+ "description": "Rename file (if exists)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "fileRename"
+ }
+ ]
+ },
+ {
+ "name": "FileRemove",
+ "description": "Remove file (if exists)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "FileCopy",
+ "description": "Copy file from one path to another, dstPath created if it doesn't exist",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "srcPath"
+ },
+ {
+ "type": "const char *",
+ "name": "dstPath"
+ }
+ ]
+ },
+ {
+ "name": "FileMove",
+ "description": "Move file from one directory to another, dstPath created if it doesn't exist",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "srcPath"
+ },
+ {
+ "type": "const char *",
+ "name": "dstPath"
+ }
+ ]
+ },
+ {
+ "name": "FileTextReplace",
+ "description": "Replace text in an existing file",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "search"
+ },
+ {
+ "type": "const char *",
+ "name": "replacement"
+ }
+ ]
+ },
+ {
+ "name": "FileTextFindIndex",
+ "description": "Find text in existing file",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "search"
+ }
+ ]
+ },
+ {
+ "name": "FileExists",
+ "description": "Check if file exists",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "DirectoryExists",
+ "description": "Check if a directory path exists",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "IsFileExtension",
+ "description": "Check file extension (recommended include point: .png, .wav)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "const char *",
+ "name": "ext"
+ }
+ ]
+ },
+ {
+ "name": "GetFileLength",
+ "description": "Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "GetFileModTime",
+ "description": "Get file modification time (last write time)",
+ "returnType": "long",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "GetFileExtension",
+ "description": "Get pointer to extension for a filename string (includes dot: '.png')",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "GetFileName",
+ "description": "Get pointer to filename for a path string",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "filePath"
+ }
+ ]
+ },
+ {
+ "name": "GetFileNameWithoutExt",
+ "description": "Get filename string without extension (uses static string)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "filePath"
+ }
+ ]
+ },
+ {
+ "name": "GetDirectoryPath",
+ "description": "Get full path for a given fileName with path (uses static string)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "filePath"
+ }
+ ]
+ },
+ {
+ "name": "GetPrevDirectoryPath",
+ "description": "Get previous directory path for a given path (uses static string)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "GetWorkingDirectory",
+ "description": "Get current working directory (uses static string)",
+ "returnType": "const char *"
+ },
+ {
+ "name": "GetApplicationDirectory",
+ "description": "Get the directory of the running application (uses static string)",
+ "returnType": "const char *"
+ },
+ {
+ "name": "MakeDirectory",
+ "description": "Create directories (including full path requested), returns 0 on success",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "ChangeDirectory",
+ "description": "Change working directory, return true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "IsPathFile",
+ "description": "Check if a given path is a file or a directory",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "path"
+ }
+ ]
+ },
+ {
+ "name": "IsFileNameValid",
+ "description": "Check if fileName is valid for the platform/OS",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadDirectoryFiles",
+ "description": "Load directory filepaths",
+ "returnType": "FilePathList",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "LoadDirectoryFilesEx",
+ "description": "Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result",
+ "returnType": "FilePathList",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "basePath"
+ },
+ {
+ "type": "const char *",
+ "name": "filter"
+ },
+ {
+ "type": "bool",
+ "name": "scanSubdirs"
+ }
+ ]
+ },
+ {
+ "name": "UnloadDirectoryFiles",
+ "description": "Unload filepaths",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "FilePathList",
+ "name": "files"
+ }
+ ]
+ },
+ {
+ "name": "IsFileDropped",
+ "description": "Check if a file has been dropped into window",
+ "returnType": "bool"
+ },
+ {
+ "name": "LoadDroppedFiles",
+ "description": "Load dropped filepaths",
+ "returnType": "FilePathList"
+ },
+ {
+ "name": "UnloadDroppedFiles",
+ "description": "Unload dropped filepaths",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "FilePathList",
+ "name": "files"
+ }
+ ]
+ },
+ {
+ "name": "GetDirectoryFileCount",
+ "description": "Get the file count in a directory",
+ "returnType": "unsigned int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "dirPath"
+ }
+ ]
+ },
+ {
+ "name": "GetDirectoryFileCountEx",
+ "description": "Get the file count in a directory with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result",
+ "returnType": "unsigned int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "basePath"
+ },
+ {
+ "type": "const char *",
+ "name": "filter"
+ },
+ {
+ "type": "bool",
+ "name": "scanSubdirs"
+ }
+ ]
+ },
+ {
+ "name": "CompressData",
+ "description": "Compress data (DEFLATE algorithm), memory must be MemFree()",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "const unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int *",
+ "name": "compDataSize"
+ }
+ ]
+ },
+ {
+ "name": "DecompressData",
+ "description": "Decompress data (DEFLATE algorithm), memory must be MemFree()",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "const unsigned char *",
+ "name": "compData"
+ },
+ {
+ "type": "int",
+ "name": "compDataSize"
+ },
+ {
+ "type": "int *",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "EncodeDataBase64",
+ "description": "Encode data to Base64 string (includes NULL terminator), memory must be MemFree()",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int *",
+ "name": "outputSize"
+ }
+ ]
+ },
+ {
+ "name": "DecodeDataBase64",
+ "description": "Decode Base64 string (expected NULL terminated), memory must be MemFree()",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "outputSize"
+ }
+ ]
+ },
+ {
+ "name": "ComputeCRC32",
+ "description": "Compute CRC32 hash code",
+ "returnType": "unsigned int",
+ "params": [
+ {
+ "type": "unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "ComputeMD5",
+ "description": "Compute MD5 hash code, returns static int[4] (16 bytes)",
+ "returnType": "unsigned int *",
+ "params": [
+ {
+ "type": "unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "ComputeSHA1",
+ "description": "Compute SHA1 hash code, returns static int[5] (20 bytes)",
+ "returnType": "unsigned int *",
+ "params": [
+ {
+ "type": "unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "ComputeSHA256",
+ "description": "Compute SHA256 hash code, returns static int[8] (32 bytes)",
+ "returnType": "unsigned int *",
+ "params": [
+ {
+ "type": "unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "LoadAutomationEventList",
+ "description": "Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS",
+ "returnType": "AutomationEventList",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "UnloadAutomationEventList",
+ "description": "Unload automation events list from file",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AutomationEventList",
+ "name": "list"
+ }
+ ]
+ },
+ {
+ "name": "ExportAutomationEventList",
+ "description": "Export automation events list as text file",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "AutomationEventList",
+ "name": "list"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "SetAutomationEventList",
+ "description": "Set automation event list to record to",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AutomationEventList *",
+ "name": "list"
+ }
+ ]
+ },
+ {
+ "name": "SetAutomationEventBaseFrame",
+ "description": "Set automation event internal base frame to start recording",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "frame"
+ }
+ ]
+ },
+ {
+ "name": "StartAutomationEventRecording",
+ "description": "Start recording automation events (AutomationEventList must be set)",
+ "returnType": "void"
+ },
+ {
+ "name": "StopAutomationEventRecording",
+ "description": "Stop recording automation events",
+ "returnType": "void"
+ },
+ {
+ "name": "PlayAutomationEvent",
+ "description": "Play a recorded automation event",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AutomationEvent",
+ "name": "event"
+ }
+ ]
+ },
+ {
+ "name": "IsKeyPressed",
+ "description": "Check if a key has been pressed once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "IsKeyPressedRepeat",
+ "description": "Check if a key has been pressed again",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "IsKeyDown",
+ "description": "Check if a key is being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "IsKeyReleased",
+ "description": "Check if a key has been released once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "IsKeyUp",
+ "description": "Check if a key is NOT being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "GetKeyPressed",
+ "description": "Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty",
+ "returnType": "int"
+ },
+ {
+ "name": "GetCharPressed",
+ "description": "Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty",
+ "returnType": "int"
+ },
+ {
+ "name": "GetKeyName",
+ "description": "Get name of a QWERTY key on the current keyboard layout (eg returns string 'q' for KEY_A on an AZERTY keyboard)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "SetExitKey",
+ "description": "Set a custom key to exit program (default is ESC)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "key"
+ }
+ ]
+ },
+ {
+ "name": "IsGamepadAvailable",
+ "description": "Check if a gamepad is available",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ }
+ ]
+ },
+ {
+ "name": "GetGamepadName",
+ "description": "Get gamepad internal name id",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ }
+ ]
+ },
+ {
+ "name": "IsGamepadButtonPressed",
+ "description": "Check if a gamepad button has been pressed once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsGamepadButtonDown",
+ "description": "Check if a gamepad button is being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsGamepadButtonReleased",
+ "description": "Check if a gamepad button has been released once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsGamepadButtonUp",
+ "description": "Check if a gamepad button is NOT being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "GetGamepadButtonPressed",
+ "description": "Get the last gamepad button pressed",
+ "returnType": "int"
+ },
+ {
+ "name": "GetGamepadAxisCount",
+ "description": "Get axis count for a gamepad",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ }
+ ]
+ },
+ {
+ "name": "GetGamepadAxisMovement",
+ "description": "Get movement value for a gamepad axis",
+ "returnType": "float",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "int",
+ "name": "axis"
+ }
+ ]
+ },
+ {
+ "name": "SetGamepadMappings",
+ "description": "Set internal gamepad mappings (SDL_GameControllerDB)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "mappings"
+ }
+ ]
+ },
+ {
+ "name": "SetGamepadVibration",
+ "description": "Set gamepad vibration for both motors (duration in seconds)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "gamepad"
+ },
+ {
+ "type": "float",
+ "name": "leftMotor"
+ },
+ {
+ "type": "float",
+ "name": "rightMotor"
+ },
+ {
+ "type": "float",
+ "name": "duration"
+ }
+ ]
+ },
+ {
+ "name": "IsMouseButtonPressed",
+ "description": "Check if a mouse button has been pressed once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsMouseButtonDown",
+ "description": "Check if a mouse button is being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsMouseButtonReleased",
+ "description": "Check if a mouse button has been released once",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "IsMouseButtonUp",
+ "description": "Check if a mouse button is NOT being pressed",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "int",
+ "name": "button"
+ }
+ ]
+ },
+ {
+ "name": "GetMouseX",
+ "description": "Get mouse position X",
+ "returnType": "int"
+ },
+ {
+ "name": "GetMouseY",
+ "description": "Get mouse position Y",
+ "returnType": "int"
+ },
+ {
+ "name": "GetMousePosition",
+ "description": "Get mouse position XY",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "GetMouseDelta",
+ "description": "Get mouse delta between frames",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "SetMousePosition",
+ "description": "Set mouse position XY",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "x"
+ },
+ {
+ "type": "int",
+ "name": "y"
+ }
+ ]
+ },
+ {
+ "name": "SetMouseOffset",
+ "description": "Set mouse offset",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "offsetX"
+ },
+ {
+ "type": "int",
+ "name": "offsetY"
+ }
+ ]
+ },
+ {
+ "name": "SetMouseScale",
+ "description": "Set mouse scaling",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "float",
+ "name": "scaleX"
+ },
+ {
+ "type": "float",
+ "name": "scaleY"
+ }
+ ]
+ },
+ {
+ "name": "GetMouseWheelMove",
+ "description": "Get mouse wheel movement for X or Y, whichever is larger",
+ "returnType": "float"
+ },
+ {
+ "name": "GetMouseWheelMoveV",
+ "description": "Get mouse wheel movement for both X and Y",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "SetMouseCursor",
+ "description": "Set mouse cursor",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "cursor"
+ }
+ ]
+ },
+ {
+ "name": "GetTouchX",
+ "description": "Get touch position X for touch point 0 (relative to screen size)",
+ "returnType": "int"
+ },
+ {
+ "name": "GetTouchY",
+ "description": "Get touch position Y for touch point 0 (relative to screen size)",
+ "returnType": "int"
+ },
+ {
+ "name": "GetTouchPosition",
+ "description": "Get touch position XY for a touch point index (relative to screen size)",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "int",
+ "name": "index"
+ }
+ ]
+ },
+ {
+ "name": "GetTouchPointId",
+ "description": "Get touch point identifier for given index",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "index"
+ }
+ ]
+ },
+ {
+ "name": "GetTouchPointCount",
+ "description": "Get number of touch points",
+ "returnType": "int"
+ },
+ {
+ "name": "SetGesturesEnabled",
+ "description": "Enable a set of gestures using flags",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "flags"
+ }
+ ]
+ },
+ {
+ "name": "IsGestureDetected",
+ "description": "Check if a gesture have been detected",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "gesture"
+ }
+ ]
+ },
+ {
+ "name": "GetGestureDetected",
+ "description": "Get latest detected gesture",
+ "returnType": "int"
+ },
+ {
+ "name": "GetGestureHoldDuration",
+ "description": "Get gesture hold time in seconds",
+ "returnType": "float"
+ },
+ {
+ "name": "GetGestureDragVector",
+ "description": "Get gesture drag vector",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "GetGestureDragAngle",
+ "description": "Get gesture drag angle",
+ "returnType": "float"
+ },
+ {
+ "name": "GetGesturePinchVector",
+ "description": "Get gesture pinch delta",
+ "returnType": "Vector2"
+ },
+ {
+ "name": "GetGesturePinchAngle",
+ "description": "Get gesture pinch angle",
+ "returnType": "float"
+ },
+ {
+ "name": "UpdateCamera",
+ "description": "Update camera position for selected mode",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera *",
+ "name": "camera"
+ },
+ {
+ "type": "int",
+ "name": "mode"
+ }
+ ]
+ },
+ {
+ "name": "UpdateCameraPro",
+ "description": "Update camera movement/rotation",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera *",
+ "name": "camera"
+ },
+ {
+ "type": "Vector3",
+ "name": "movement"
+ },
+ {
+ "type": "Vector3",
+ "name": "rotation"
+ },
+ {
+ "type": "float",
+ "name": "zoom"
+ }
+ ]
+ },
+ {
+ "name": "SetShapesTexture",
+ "description": "Set texture and rectangle to be used on shapes drawing",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "source"
+ }
+ ]
+ },
+ {
+ "name": "GetShapesTexture",
+ "description": "Get texture that is used for shapes drawing",
+ "returnType": "Texture2D"
+ },
+ {
+ "name": "GetShapesTextureRectangle",
+ "description": "Get texture source rectangle that is used for shapes drawing",
+ "returnType": "Rectangle"
+ },
+ {
+ "name": "DrawPixel",
+ "description": "Draw a pixel using geometry [Can be slow, use with care]",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPixelV",
+ "description": "Draw a pixel using geometry (Vector version) [Can be slow, use with care]",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLine",
+ "description": "Draw a line",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "startPosX"
+ },
+ {
+ "type": "int",
+ "name": "startPosY"
+ },
+ {
+ "type": "int",
+ "name": "endPosX"
+ },
+ {
+ "type": "int",
+ "name": "endPosY"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLineV",
+ "description": "Draw a line (using gl lines)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLineEx",
+ "description": "Draw a line (using triangles/quads)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLineStrip",
+ "description": "Draw lines sequence (using gl lines)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLineBezier",
+ "description": "Draw line segment cubic-bezier in-out interpolation",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawLineDashed",
+ "description": "Draw a dashed line",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos"
+ },
+ {
+ "type": "int",
+ "name": "dashSize"
+ },
+ {
+ "type": "int",
+ "name": "spaceSize"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircle",
+ "description": "Draw a color-filled circle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleSector",
+ "description": "Draw a piece of a circle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "startAngle"
+ },
+ {
+ "type": "float",
+ "name": "endAngle"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleSectorLines",
+ "description": "Draw circle sector outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "startAngle"
+ },
+ {
+ "type": "float",
+ "name": "endAngle"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleGradient",
+ "description": "Draw a gradient-filled circle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "inner"
+ },
+ {
+ "type": "Color",
+ "name": "outer"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleV",
+ "description": "Draw a color-filled circle (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleLines",
+ "description": "Draw circle outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircleLinesV",
+ "description": "Draw circle outline (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawEllipse",
+ "description": "Draw ellipse",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "float",
+ "name": "radiusH"
+ },
+ {
+ "type": "float",
+ "name": "radiusV"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawEllipseV",
+ "description": "Draw ellipse (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radiusH"
+ },
+ {
+ "type": "float",
+ "name": "radiusV"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawEllipseLines",
+ "description": "Draw ellipse outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "float",
+ "name": "radiusH"
+ },
+ {
+ "type": "float",
+ "name": "radiusV"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawEllipseLinesV",
+ "description": "Draw ellipse outline (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radiusH"
+ },
+ {
+ "type": "float",
+ "name": "radiusV"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRing",
+ "description": "Draw ring",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "innerRadius"
+ },
+ {
+ "type": "float",
+ "name": "outerRadius"
+ },
+ {
+ "type": "float",
+ "name": "startAngle"
+ },
+ {
+ "type": "float",
+ "name": "endAngle"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRingLines",
+ "description": "Draw ring outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "innerRadius"
+ },
+ {
+ "type": "float",
+ "name": "outerRadius"
+ },
+ {
+ "type": "float",
+ "name": "startAngle"
+ },
+ {
+ "type": "float",
+ "name": "endAngle"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangle",
+ "description": "Draw a color-filled rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleV",
+ "description": "Draw a color-filled rectangle (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Vector2",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleRec",
+ "description": "Draw a color-filled rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectanglePro",
+ "description": "Draw a color-filled rectangle with pro parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "Vector2",
+ "name": "origin"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleGradientV",
+ "description": "Draw a vertical-gradient-filled rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "top"
+ },
+ {
+ "type": "Color",
+ "name": "bottom"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleGradientH",
+ "description": "Draw a horizontal-gradient-filled rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "left"
+ },
+ {
+ "type": "Color",
+ "name": "right"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleGradientEx",
+ "description": "Draw a gradient-filled rectangle with custom vertex colors",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "Color",
+ "name": "topLeft"
+ },
+ {
+ "type": "Color",
+ "name": "bottomLeft"
+ },
+ {
+ "type": "Color",
+ "name": "bottomRight"
+ },
+ {
+ "type": "Color",
+ "name": "topRight"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleLines",
+ "description": "Draw rectangle outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleLinesEx",
+ "description": "Draw rectangle outline with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "float",
+ "name": "lineThick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleRounded",
+ "description": "Draw rectangle with rounded edges",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "float",
+ "name": "roundness"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleRoundedLines",
+ "description": "Draw rectangle lines with rounded edges",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "float",
+ "name": "roundness"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRectangleRoundedLinesEx",
+ "description": "Draw rectangle with rounded edges outline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "float",
+ "name": "roundness"
+ },
+ {
+ "type": "int",
+ "name": "segments"
+ },
+ {
+ "type": "float",
+ "name": "lineThick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangle",
+ "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "v1"
+ },
+ {
+ "type": "Vector2",
+ "name": "v2"
+ },
+ {
+ "type": "Vector2",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangleLines",
+ "description": "Draw triangle outline (vertex in counter-clockwise order!)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "v1"
+ },
+ {
+ "type": "Vector2",
+ "name": "v2"
+ },
+ {
+ "type": "Vector2",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangleFan",
+ "description": "Draw a triangle fan defined by points (first vertex is the center)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangleStrip",
+ "description": "Draw a triangle strip defined by points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPoly",
+ "description": "Draw a regular polygon (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPolyLines",
+ "description": "Draw a polygon outline of n sides",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPolyLinesEx",
+ "description": "Draw a polygon outline of n sides with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "float",
+ "name": "lineThick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineLinear",
+ "description": "Draw spline: Linear, minimum 2 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineBasis",
+ "description": "Draw spline: B-Spline, minimum 4 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineCatmullRom",
+ "description": "Draw spline: Catmull-Rom, minimum 4 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineBezierQuadratic",
+ "description": "Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineBezierCubic",
+ "description": "Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineSegmentLinear",
+ "description": "Draw spline segment: Linear, 2 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineSegmentBasis",
+ "description": "Draw spline segment: B-Spline, 4 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineSegmentCatmullRom",
+ "description": "Draw spline segment: Catmull-Rom, 4 points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineSegmentBezierQuadratic",
+ "description": "Draw spline segment: Quadratic Bezier, 2 points, 1 control point",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "c2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSplineSegmentBezierCubic",
+ "description": "Draw spline segment: Cubic Bezier, 2 points, 2 control points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "c2"
+ },
+ {
+ "type": "Vector2",
+ "name": "c3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "GetSplinePointLinear",
+ "description": "Get (evaluate) spline point: Linear",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "t"
+ }
+ ]
+ },
+ {
+ "name": "GetSplinePointBasis",
+ "description": "Get (evaluate) spline point: B-Spline",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "t"
+ }
+ ]
+ },
+ {
+ "name": "GetSplinePointCatmullRom",
+ "description": "Get (evaluate) spline point: Catmull-Rom",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "t"
+ }
+ ]
+ },
+ {
+ "name": "GetSplinePointBezierQuad",
+ "description": "Get (evaluate) spline point: Quadratic Bezier",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "c2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ },
+ {
+ "type": "float",
+ "name": "t"
+ }
+ ]
+ },
+ {
+ "name": "GetSplinePointBezierCubic",
+ "description": "Get (evaluate) spline point: Cubic Bezier",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "c2"
+ },
+ {
+ "type": "Vector2",
+ "name": "c3"
+ },
+ {
+ "type": "Vector2",
+ "name": "p4"
+ },
+ {
+ "type": "float",
+ "name": "t"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionRecs",
+ "description": "Check collision between two rectangles",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec1"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec2"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionCircles",
+ "description": "Check collision between two circles",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center1"
+ },
+ {
+ "type": "float",
+ "name": "radius1"
+ },
+ {
+ "type": "Vector2",
+ "name": "center2"
+ },
+ {
+ "type": "float",
+ "name": "radius2"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionCircleRec",
+ "description": "Check collision between circle and rectangle",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionCircleLine",
+ "description": "Check if circle collides with a line created betweeen two points [p1] and [p2]",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionPointRec",
+ "description": "Check if point is inside rectangle",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "point"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionPointCircle",
+ "description": "Check if point is inside circle",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "point"
+ },
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionPointTriangle",
+ "description": "Check if point is inside a triangle",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "point"
+ },
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "Vector2",
+ "name": "p3"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionPointLine",
+ "description": "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "point"
+ },
+ {
+ "type": "Vector2",
+ "name": "p1"
+ },
+ {
+ "type": "Vector2",
+ "name": "p2"
+ },
+ {
+ "type": "int",
+ "name": "threshold"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionPointPoly",
+ "description": "Check if point is within a polygon described by array of vertices",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "point"
+ },
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionLines",
+ "description": "Check the collision between two lines defined by two points each, returns collision point by reference",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector2",
+ "name": "startPos1"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos1"
+ },
+ {
+ "type": "Vector2",
+ "name": "startPos2"
+ },
+ {
+ "type": "Vector2",
+ "name": "endPos2"
+ },
+ {
+ "type": "Vector2 *",
+ "name": "collisionPoint"
+ }
+ ]
+ },
+ {
+ "name": "GetCollisionRec",
+ "description": "Get collision rectangle for two rectangles collision",
+ "returnType": "Rectangle",
+ "params": [
+ {
+ "type": "Rectangle",
+ "name": "rec1"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec2"
+ }
+ ]
+ },
+ {
+ "name": "LoadImage",
+ "description": "Load image from file into CPU memory (RAM)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageRaw",
+ "description": "Load image from RAW file data",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "format"
+ },
+ {
+ "type": "int",
+ "name": "headerSize"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageAnim",
+ "description": "Load image sequence from file (frames appended to image.data)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int *",
+ "name": "frames"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageAnimFromMemory",
+ "description": "Load image sequence from memory buffer",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "const unsigned char *",
+ "name": "fileData"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int *",
+ "name": "frames"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageFromMemory",
+ "description": "Load image from memory buffer, fileType refers to extension: i.e. '.png'",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "const unsigned char *",
+ "name": "fileData"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageFromTexture",
+ "description": "Load image from GPU texture data",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageFromScreen",
+ "description": "Load image from screen buffer and (screenshot)",
+ "returnType": "Image"
+ },
+ {
+ "name": "IsImageValid",
+ "description": "Check if an image is valid (data and parameters)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "UnloadImage",
+ "description": "Unload image from CPU memory (RAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ExportImage",
+ "description": "Export image data to file, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "ExportImageToMemory",
+ "description": "Export image to memory buffer",
+ "returnType": "unsigned char *",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "int *",
+ "name": "fileSize"
+ }
+ ]
+ },
+ {
+ "name": "ExportImageAsCode",
+ "description": "Export image as code file defining an array of bytes, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "GenImageColor",
+ "description": "Generate image: plain color",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "GenImageGradientLinear",
+ "description": "Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "direction"
+ },
+ {
+ "type": "Color",
+ "name": "start"
+ },
+ {
+ "type": "Color",
+ "name": "end"
+ }
+ ]
+ },
+ {
+ "name": "GenImageGradientRadial",
+ "description": "Generate image: radial gradient",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "density"
+ },
+ {
+ "type": "Color",
+ "name": "inner"
+ },
+ {
+ "type": "Color",
+ "name": "outer"
+ }
+ ]
+ },
+ {
+ "name": "GenImageGradientSquare",
+ "description": "Generate image: square gradient",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "density"
+ },
+ {
+ "type": "Color",
+ "name": "inner"
+ },
+ {
+ "type": "Color",
+ "name": "outer"
+ }
+ ]
+ },
+ {
+ "name": "GenImageChecked",
+ "description": "Generate image: checked",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "checksX"
+ },
+ {
+ "type": "int",
+ "name": "checksY"
+ },
+ {
+ "type": "Color",
+ "name": "col1"
+ },
+ {
+ "type": "Color",
+ "name": "col2"
+ }
+ ]
+ },
+ {
+ "name": "GenImageWhiteNoise",
+ "description": "Generate image: white noise",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "factor"
+ }
+ ]
+ },
+ {
+ "name": "GenImagePerlinNoise",
+ "description": "Generate image: perlin noise",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "offsetX"
+ },
+ {
+ "type": "int",
+ "name": "offsetY"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ }
+ ]
+ },
+ {
+ "name": "GenImageCellular",
+ "description": "Generate image: cellular algorithm, bigger tileSize means bigger cells",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "tileSize"
+ }
+ ]
+ },
+ {
+ "name": "GenImageText",
+ "description": "Generate image: grayscale image from text data",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "ImageCopy",
+ "description": "Create an image duplicate (useful for transformations)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageFromImage",
+ "description": "Create an image from another image piece",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ }
+ ]
+ },
+ {
+ "name": "ImageFromChannel",
+ "description": "Create an image from a selected channel of another image (GRAYSCALE)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "selectedChannel"
+ }
+ ]
+ },
+ {
+ "name": "ImageText",
+ "description": "Create an image from text (default font)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageTextEx",
+ "description": "Create an image from text (custom sprite font)",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "ImageFormat",
+ "description": "Convert image data to desired format",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "newFormat"
+ }
+ ]
+ },
+ {
+ "name": "ImageToPOT",
+ "description": "Convert image to POT (power-of-two)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Color",
+ "name": "fill"
+ }
+ ]
+ },
+ {
+ "name": "ImageCrop",
+ "description": "Crop an image to a defined rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Rectangle",
+ "name": "crop"
+ }
+ ]
+ },
+ {
+ "name": "ImageAlphaCrop",
+ "description": "Crop image depending on alpha value",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "float",
+ "name": "threshold"
+ }
+ ]
+ },
+ {
+ "name": "ImageAlphaClear",
+ "description": "Clear alpha channel to desired color",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "float",
+ "name": "threshold"
+ }
+ ]
+ },
+ {
+ "name": "ImageAlphaMask",
+ "description": "Apply alpha mask to image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Image",
+ "name": "alphaMask"
+ }
+ ]
+ },
+ {
+ "name": "ImageAlphaPremultiply",
+ "description": "Premultiply alpha channel",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageBlurGaussian",
+ "description": "Apply Gaussian blur using a box blur approximation",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "blurSize"
+ }
+ ]
+ },
+ {
+ "name": "ImageKernelConvolution",
+ "description": "Apply custom square convolution kernel to image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "const float *",
+ "name": "kernel"
+ },
+ {
+ "type": "int",
+ "name": "kernelSize"
+ }
+ ]
+ },
+ {
+ "name": "ImageResize",
+ "description": "Resize image (Bicubic scaling algorithm)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "newWidth"
+ },
+ {
+ "type": "int",
+ "name": "newHeight"
+ }
+ ]
+ },
+ {
+ "name": "ImageResizeNN",
+ "description": "Resize image (Nearest-Neighbor scaling algorithm)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "newWidth"
+ },
+ {
+ "type": "int",
+ "name": "newHeight"
+ }
+ ]
+ },
+ {
+ "name": "ImageResizeCanvas",
+ "description": "Resize canvas and fill with color",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "newWidth"
+ },
+ {
+ "type": "int",
+ "name": "newHeight"
+ },
+ {
+ "type": "int",
+ "name": "offsetX"
+ },
+ {
+ "type": "int",
+ "name": "offsetY"
+ },
+ {
+ "type": "Color",
+ "name": "fill"
+ }
+ ]
+ },
+ {
+ "name": "ImageMipmaps",
+ "description": "Compute all mipmap levels for a provided image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageDither",
+ "description": "Dither image data to 16bpp or lower (Floyd-Steinberg dithering)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "rBpp"
+ },
+ {
+ "type": "int",
+ "name": "gBpp"
+ },
+ {
+ "type": "int",
+ "name": "bBpp"
+ },
+ {
+ "type": "int",
+ "name": "aBpp"
+ }
+ ]
+ },
+ {
+ "name": "ImageFlipVertical",
+ "description": "Flip image vertically",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageFlipHorizontal",
+ "description": "Flip image horizontally",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageRotate",
+ "description": "Rotate image by input angle in degrees (-359 to 359)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "degrees"
+ }
+ ]
+ },
+ {
+ "name": "ImageRotateCW",
+ "description": "Rotate image clockwise 90deg",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageRotateCCW",
+ "description": "Rotate image counter-clockwise 90deg",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorTint",
+ "description": "Modify image color: tint",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorInvert",
+ "description": "Modify image color: invert",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorGrayscale",
+ "description": "Modify image color: grayscale",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorContrast",
+ "description": "Modify image color: contrast (-100 to 100)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "float",
+ "name": "contrast"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorBrightness",
+ "description": "Modify image color: brightness (-255 to 255)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "brightness"
+ }
+ ]
+ },
+ {
+ "name": "ImageColorReplace",
+ "description": "Modify image color: replace color",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "image"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "Color",
+ "name": "replace"
+ }
+ ]
+ },
+ {
+ "name": "LoadImageColors",
+ "description": "Load color data from image as a Color array (RGBA - 32bit)",
+ "returnType": "Color *",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "LoadImagePalette",
+ "description": "Load colors palette from image as a Color array (RGBA - 32bit)",
+ "returnType": "Color *",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "maxPaletteSize"
+ },
+ {
+ "type": "int *",
+ "name": "colorCount"
+ }
+ ]
+ },
+ {
+ "name": "UnloadImageColors",
+ "description": "Unload color data loaded with LoadImageColors()",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Color *",
+ "name": "colors"
+ }
+ ]
+ },
+ {
+ "name": "UnloadImagePalette",
+ "description": "Unload colors palette loaded with LoadImagePalette()",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Color *",
+ "name": "colors"
+ }
+ ]
+ },
+ {
+ "name": "GetImageAlphaBorder",
+ "description": "Get image alpha border rectangle",
+ "returnType": "Rectangle",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "float",
+ "name": "threshold"
+ }
+ ]
+ },
+ {
+ "name": "GetImageColor",
+ "description": "Get image pixel color at (x, y) position",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "x"
+ },
+ {
+ "type": "int",
+ "name": "y"
+ }
+ ]
+ },
+ {
+ "name": "ImageClearBackground",
+ "description": "Clear image background with given color",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawPixel",
+ "description": "Draw pixel within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawPixelV",
+ "description": "Draw pixel within an image (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawLine",
+ "description": "Draw line within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "int",
+ "name": "startPosX"
+ },
+ {
+ "type": "int",
+ "name": "startPosY"
+ },
+ {
+ "type": "int",
+ "name": "endPosX"
+ },
+ {
+ "type": "int",
+ "name": "endPosY"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawLineV",
+ "description": "Draw line within an image (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "start"
+ },
+ {
+ "type": "Vector2",
+ "name": "end"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawLineEx",
+ "description": "Draw a line defining thickness within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "start"
+ },
+ {
+ "type": "Vector2",
+ "name": "end"
+ },
+ {
+ "type": "int",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawCircle",
+ "description": "Draw a filled circle within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "int",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawCircleV",
+ "description": "Draw a filled circle within an image (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "int",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawCircleLines",
+ "description": "Draw circle outline within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "int",
+ "name": "centerX"
+ },
+ {
+ "type": "int",
+ "name": "centerY"
+ },
+ {
+ "type": "int",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawCircleLinesV",
+ "description": "Draw circle outline within an image (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "center"
+ },
+ {
+ "type": "int",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawRectangle",
+ "description": "Draw rectangle within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawRectangleV",
+ "description": "Draw rectangle within an image (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Vector2",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawRectangleRec",
+ "description": "Draw rectangle within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawRectangleLines",
+ "description": "Draw rectangle lines within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "int",
+ "name": "thick"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTriangle",
+ "description": "Draw triangle within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "v1"
+ },
+ {
+ "type": "Vector2",
+ "name": "v2"
+ },
+ {
+ "type": "Vector2",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTriangleEx",
+ "description": "Draw triangle with interpolated colors within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "v1"
+ },
+ {
+ "type": "Vector2",
+ "name": "v2"
+ },
+ {
+ "type": "Vector2",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "c1"
+ },
+ {
+ "type": "Color",
+ "name": "c2"
+ },
+ {
+ "type": "Color",
+ "name": "c3"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTriangleLines",
+ "description": "Draw triangle outline within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Vector2",
+ "name": "v1"
+ },
+ {
+ "type": "Vector2",
+ "name": "v2"
+ },
+ {
+ "type": "Vector2",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTriangleFan",
+ "description": "Draw a triangle fan defined by points within an image (first vertex is the center)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTriangleStrip",
+ "description": "Draw a triangle strip defined by points within an image",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "const Vector2 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDraw",
+ "description": "Draw a source image within a destination image (tint applied to source)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Image",
+ "name": "src"
+ },
+ {
+ "type": "Rectangle",
+ "name": "srcRec"
+ },
+ {
+ "type": "Rectangle",
+ "name": "dstRec"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawText",
+ "description": "Draw text (using default font) within an image (destination)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ImageDrawTextEx",
+ "description": "Draw text (custom sprite font) within an image (destination)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Image *",
+ "name": "dst"
+ },
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "LoadTexture",
+ "description": "Load texture from file into GPU memory (VRAM)",
+ "returnType": "Texture2D",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadTextureFromImage",
+ "description": "Load texture from image data",
+ "returnType": "Texture2D",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ }
+ ]
+ },
+ {
+ "name": "LoadTextureCubemap",
+ "description": "Load cubemap from image, multiple image cubemap layouts supported",
+ "returnType": "TextureCubemap",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "int",
+ "name": "layout"
+ }
+ ]
+ },
+ {
+ "name": "LoadRenderTexture",
+ "description": "Load texture for rendering (framebuffer)",
+ "returnType": "RenderTexture2D",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ }
+ ]
+ },
+ {
+ "name": "IsTextureValid",
+ "description": "Check if a texture is valid (loaded in GPU)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "UnloadTexture",
+ "description": "Unload texture from GPU memory (VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "IsRenderTextureValid",
+ "description": "Check if a render texture is valid (loaded in GPU)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "RenderTexture2D",
+ "name": "target"
+ }
+ ]
+ },
+ {
+ "name": "UnloadRenderTexture",
+ "description": "Unload render texture from GPU memory (VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "RenderTexture2D",
+ "name": "target"
+ }
+ ]
+ },
+ {
+ "name": "UpdateTexture",
+ "description": "Update GPU texture with new data (pixels should be able to fill texture)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "const void *",
+ "name": "pixels"
+ }
+ ]
+ },
+ {
+ "name": "UpdateTextureRec",
+ "description": "Update GPU texture rectangle with new data (pixels and rec should fit in texture)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "rec"
+ },
+ {
+ "type": "const void *",
+ "name": "pixels"
+ }
+ ]
+ },
+ {
+ "name": "GenTextureMipmaps",
+ "description": "Generate GPU mipmaps for a texture",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D *",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "SetTextureFilter",
+ "description": "Set texture scaling filter mode",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "int",
+ "name": "filter"
+ }
+ ]
+ },
+ {
+ "name": "SetTextureWrap",
+ "description": "Set texture wrapping mode",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "int",
+ "name": "wrap"
+ }
+ ]
+ },
+ {
+ "name": "DrawTexture",
+ "description": "Draw a Texture2D",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextureV",
+ "description": "Draw a Texture2D with position defined as Vector2",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextureEx",
+ "description": "Draw a Texture2D with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextureRec",
+ "description": "Draw a part of a texture defined by a rectangle",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "source"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTexturePro",
+ "description": "Draw a part of a texture defined by a rectangle with 'pro' parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "source"
+ },
+ {
+ "type": "Rectangle",
+ "name": "dest"
+ },
+ {
+ "type": "Vector2",
+ "name": "origin"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextureNPatch",
+ "description": "Draws a texture (or part of it) that stretches or shrinks nicely",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "NPatchInfo",
+ "name": "nPatchInfo"
+ },
+ {
+ "type": "Rectangle",
+ "name": "dest"
+ },
+ {
+ "type": "Vector2",
+ "name": "origin"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "ColorIsEqual",
+ "description": "Check if two colors are equal",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Color",
+ "name": "col1"
+ },
+ {
+ "type": "Color",
+ "name": "col2"
+ }
+ ]
+ },
+ {
+ "name": "Fade",
+ "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "float",
+ "name": "alpha"
+ }
+ ]
+ },
+ {
+ "name": "ColorToInt",
+ "description": "Get hexadecimal value for a Color (0xRRGGBBAA)",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ColorNormalize",
+ "description": "Get Color normalized as float [0..1]",
+ "returnType": "Vector4",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ColorFromNormalized",
+ "description": "Get Color from normalized values [0..1]",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Vector4",
+ "name": "normalized"
+ }
+ ]
+ },
+ {
+ "name": "ColorToHSV",
+ "description": "Get HSV values for a Color, hue [0..360], saturation/value [0..1]",
+ "returnType": "Vector3",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "ColorFromHSV",
+ "description": "Get a Color from HSV values, hue [0..360], saturation/value [0..1]",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "float",
+ "name": "hue"
+ },
+ {
+ "type": "float",
+ "name": "saturation"
+ },
+ {
+ "type": "float",
+ "name": "value"
+ }
+ ]
+ },
+ {
+ "name": "ColorTint",
+ "description": "Get color multiplied with another color",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "ColorBrightness",
+ "description": "Get color with brightness correction, brightness factor goes from -1.0f to 1.0f",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "float",
+ "name": "factor"
+ }
+ ]
+ },
+ {
+ "name": "ColorContrast",
+ "description": "Get color with contrast correction, contrast values between -1.0f and 1.0f",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "float",
+ "name": "contrast"
+ }
+ ]
+ },
+ {
+ "name": "ColorAlpha",
+ "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "float",
+ "name": "alpha"
+ }
+ ]
+ },
+ {
+ "name": "ColorAlphaBlend",
+ "description": "Get src alpha-blended into dst color with tint",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "dst"
+ },
+ {
+ "type": "Color",
+ "name": "src"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "ColorLerp",
+ "description": "Get color lerp interpolation between two colors, factor [0.0f..1.0f]",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "Color",
+ "name": "color1"
+ },
+ {
+ "type": "Color",
+ "name": "color2"
+ },
+ {
+ "type": "float",
+ "name": "factor"
+ }
+ ]
+ },
+ {
+ "name": "GetColor",
+ "description": "Get Color structure from hexadecimal value",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "hexValue"
+ }
+ ]
+ },
+ {
+ "name": "GetPixelColor",
+ "description": "Get Color from a source pixel pointer of certain format",
+ "returnType": "Color",
+ "params": [
+ {
+ "type": "void *",
+ "name": "srcPtr"
+ },
+ {
+ "type": "int",
+ "name": "format"
+ }
+ ]
+ },
+ {
+ "name": "SetPixelColor",
+ "description": "Set color formatted into destination pixel pointer",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "void *",
+ "name": "dstPtr"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ },
+ {
+ "type": "int",
+ "name": "format"
+ }
+ ]
+ },
+ {
+ "name": "GetPixelDataSize",
+ "description": "Get pixel data size in bytes for certain format",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "int",
+ "name": "width"
+ },
+ {
+ "type": "int",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "format"
+ }
+ ]
+ },
+ {
+ "name": "GetFontDefault",
+ "description": "Get the default Font",
+ "returnType": "Font"
+ },
+ {
+ "name": "LoadFont",
+ "description": "Load font from file into GPU memory (VRAM)",
+ "returnType": "Font",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadFontEx",
+ "description": "Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height",
+ "returnType": "Font",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "const int *",
+ "name": "codepoints"
+ },
+ {
+ "type": "int",
+ "name": "codepointCount"
+ }
+ ]
+ },
+ {
+ "name": "LoadFontFromImage",
+ "description": "Load font from Image (XNA style)",
+ "returnType": "Font",
+ "params": [
+ {
+ "type": "Image",
+ "name": "image"
+ },
+ {
+ "type": "Color",
+ "name": "key"
+ },
+ {
+ "type": "int",
+ "name": "firstChar"
+ }
+ ]
+ },
+ {
+ "name": "LoadFontFromMemory",
+ "description": "Load font from memory buffer, fileType refers to extension: i.e. '.ttf'",
+ "returnType": "Font",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "const unsigned char *",
+ "name": "fileData"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "const int *",
+ "name": "codepoints"
+ },
+ {
+ "type": "int",
+ "name": "codepointCount"
+ }
+ ]
+ },
+ {
+ "name": "IsFontValid",
+ "description": "Check if a font is valid (font data loaded, WARNING: GPU texture not checked)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ }
+ ]
+ },
+ {
+ "name": "LoadFontData",
+ "description": "Load font data for further use",
+ "returnType": "GlyphInfo *",
+ "params": [
+ {
+ "type": "const unsigned char *",
+ "name": "fileData"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "const int *",
+ "name": "codepoints"
+ },
+ {
+ "type": "int",
+ "name": "codepointCount"
+ },
+ {
+ "type": "int",
+ "name": "type"
+ },
+ {
+ "type": "int *",
+ "name": "glyphCount"
+ }
+ ]
+ },
+ {
+ "name": "GenImageFontAtlas",
+ "description": "Generate image font atlas using chars info",
+ "returnType": "Image",
+ "params": [
+ {
+ "type": "const GlyphInfo *",
+ "name": "glyphs"
+ },
+ {
+ "type": "Rectangle **",
+ "name": "glyphRecs"
+ },
+ {
+ "type": "int",
+ "name": "glyphCount"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "int",
+ "name": "padding"
+ },
+ {
+ "type": "int",
+ "name": "packMethod"
+ }
+ ]
+ },
+ {
+ "name": "UnloadFontData",
+ "description": "Unload font chars info data (RAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "GlyphInfo *",
+ "name": "glyphs"
+ },
+ {
+ "type": "int",
+ "name": "glyphCount"
+ }
+ ]
+ },
+ {
+ "name": "UnloadFont",
+ "description": "Unload font from GPU memory (VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ }
+ ]
+ },
+ {
+ "name": "ExportFontAsCode",
+ "description": "Export font as code file, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "DrawFPS",
+ "description": "Draw current FPS",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ }
+ ]
+ },
+ {
+ "name": "DrawText",
+ "description": "Draw text (using default font)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "posX"
+ },
+ {
+ "type": "int",
+ "name": "posY"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextEx",
+ "description": "Draw text using font and additional parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextPro",
+ "description": "Draw text using Font and pro parameters (rotation)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "Vector2",
+ "name": "origin"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextCodepoint",
+ "description": "Draw one character (codepoint)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "int",
+ "name": "codepoint"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawTextCodepoints",
+ "description": "Draw multiple character (codepoint)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const int *",
+ "name": "codepoints"
+ },
+ {
+ "type": "int",
+ "name": "codepointCount"
+ },
+ {
+ "type": "Vector2",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "SetTextLineSpacing",
+ "description": "Set vertical line spacing when drawing with line-breaks",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "spacing"
+ }
+ ]
+ },
+ {
+ "name": "MeasureText",
+ "description": "Measure string width for default font",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "fontSize"
+ }
+ ]
+ },
+ {
+ "name": "MeasureTextEx",
+ "description": "Measure string size for Font",
+ "returnType": "Vector2",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "float",
+ "name": "fontSize"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ }
+ ]
+ },
+ {
+ "name": "GetGlyphIndex",
+ "description": "Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "int",
+ "name": "codepoint"
+ }
+ ]
+ },
+ {
+ "name": "GetGlyphInfo",
+ "description": "Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found",
+ "returnType": "GlyphInfo",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "int",
+ "name": "codepoint"
+ }
+ ]
+ },
+ {
+ "name": "GetGlyphAtlasRec",
+ "description": "Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found",
+ "returnType": "Rectangle",
+ "params": [
+ {
+ "type": "Font",
+ "name": "font"
+ },
+ {
+ "type": "int",
+ "name": "codepoint"
+ }
+ ]
+ },
+ {
+ "name": "LoadUTF8",
+ "description": "Load UTF-8 text encoded from codepoints array",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const int *",
+ "name": "codepoints"
+ },
+ {
+ "type": "int",
+ "name": "length"
+ }
+ ]
+ },
+ {
+ "name": "UnloadUTF8",
+ "description": "Unload UTF-8 text encoded from codepoints array",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "LoadCodepoints",
+ "description": "Load all codepoints from a UTF-8 text string, codepoints count returned by parameter",
+ "returnType": "int *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "UnloadCodepoints",
+ "description": "Unload codepoints data from memory",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int *",
+ "name": "codepoints"
+ }
+ ]
+ },
+ {
+ "name": "GetCodepointCount",
+ "description": "Get total number of codepoints in a UTF-8 encoded string",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "GetCodepoint",
+ "description": "Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "codepointSize"
+ }
+ ]
+ },
+ {
+ "name": "GetCodepointNext",
+ "description": "Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "codepointSize"
+ }
+ ]
+ },
+ {
+ "name": "GetCodepointPrevious",
+ "description": "Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "codepointSize"
+ }
+ ]
+ },
+ {
+ "name": "CodepointToUTF8",
+ "description": "Encode one codepoint into UTF-8 byte array (array length returned as parameter)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "int",
+ "name": "codepoint"
+ },
+ {
+ "type": "int *",
+ "name": "utf8Size"
+ }
+ ]
+ },
+ {
+ "name": "LoadTextLines",
+ "description": "Load text as separate lines ('\\n')",
+ "returnType": "char **",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int *",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "UnloadTextLines",
+ "description": "Unload text lines",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "char **",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "lineCount"
+ }
+ ]
+ },
+ {
+ "name": "TextCopy",
+ "description": "Copy one string to another, returns bytes copied",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "char *",
+ "name": "dst"
+ },
+ {
+ "type": "const char *",
+ "name": "src"
+ }
+ ]
+ },
+ {
+ "name": "TextIsEqual",
+ "description": "Check if two text string are equal",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text1"
+ },
+ {
+ "type": "const char *",
+ "name": "text2"
+ }
+ ]
+ },
+ {
+ "name": "TextLength",
+ "description": "Get text length, checks for '\\0' ending",
+ "returnType": "unsigned int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextFormat",
+ "description": "Text formatting with variables (sprintf() style)",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "...",
+ "name": "args"
+ }
+ ]
+ },
+ {
+ "name": "TextSubtext",
+ "description": "Get a piece of a text string",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "int",
+ "name": "position"
+ },
+ {
+ "type": "int",
+ "name": "length"
+ }
+ ]
+ },
+ {
+ "name": "TextRemoveSpaces",
+ "description": "Remove text spaces, concat words",
+ "returnType": "const char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "GetTextBetween",
+ "description": "Get text between two strings",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "begin"
+ },
+ {
+ "type": "const char *",
+ "name": "end"
+ }
+ ]
+ },
+ {
+ "name": "TextReplace",
+ "description": "Replace text string (WARNING: memory must be freed!)",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "search"
+ },
+ {
+ "type": "const char *",
+ "name": "replacement"
+ }
+ ]
+ },
+ {
+ "name": "TextReplaceBetween",
+ "description": "Replace text between two specific strings (WARNING: memory must be freed!)",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "begin"
+ },
+ {
+ "type": "const char *",
+ "name": "end"
+ },
+ {
+ "type": "const char *",
+ "name": "replacement"
+ }
+ ]
+ },
+ {
+ "name": "TextInsert",
+ "description": "Insert text in a position (WARNING: memory must be freed!)",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "insert"
+ },
+ {
+ "type": "int",
+ "name": "position"
+ }
+ ]
+ },
+ {
+ "name": "TextJoin",
+ "description": "Join text strings with delimiter",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "char **",
+ "name": "textList"
+ },
+ {
+ "type": "int",
+ "name": "count"
+ },
+ {
+ "type": "const char *",
+ "name": "delimiter"
+ }
+ ]
+ },
+ {
+ "name": "TextSplit",
+ "description": "Split text into multiple strings, using MAX_TEXTSPLIT_COUNT static strings",
+ "returnType": "char **",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "char",
+ "name": "delimiter"
+ },
+ {
+ "type": "int *",
+ "name": "count"
+ }
+ ]
+ },
+ {
+ "name": "TextAppend",
+ "description": "Append text at specific position and move cursor",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "append"
+ },
+ {
+ "type": "int *",
+ "name": "position"
+ }
+ ]
+ },
+ {
+ "name": "TextFindIndex",
+ "description": "Find first text occurrence within a string, -1 if not found",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ },
+ {
+ "type": "const char *",
+ "name": "search"
+ }
+ ]
+ },
+ {
+ "name": "TextToUpper",
+ "description": "Get upper case version of provided string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToLower",
+ "description": "Get lower case version of provided string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToPascal",
+ "description": "Get Pascal case notation version of provided string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToSnake",
+ "description": "Get Snake case notation version of provided string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToCamel",
+ "description": "Get Camel case notation version of provided string",
+ "returnType": "char *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToInteger",
+ "description": "Get integer value from text",
+ "returnType": "int",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "TextToFloat",
+ "description": "Get float value from text",
+ "returnType": "float",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "text"
+ }
+ ]
+ },
+ {
+ "name": "DrawLine3D",
+ "description": "Draw a line in 3D world space",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector3",
+ "name": "endPos"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPoint3D",
+ "description": "Draw a point in 3D space, actually a small line",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCircle3D",
+ "description": "Draw a circle in 3D world space",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Vector3",
+ "name": "rotationAxis"
+ },
+ {
+ "type": "float",
+ "name": "rotationAngle"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangle3D",
+ "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "v1"
+ },
+ {
+ "type": "Vector3",
+ "name": "v2"
+ },
+ {
+ "type": "Vector3",
+ "name": "v3"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawTriangleStrip3D",
+ "description": "Draw a triangle strip defined by points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "const Vector3 *",
+ "name": "points"
+ },
+ {
+ "type": "int",
+ "name": "pointCount"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCube",
+ "description": "Draw cube",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "width"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "length"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCubeV",
+ "description": "Draw cube (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCubeWires",
+ "description": "Draw cube wires",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "width"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "length"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCubeWiresV",
+ "description": "Draw cube wires (Vector version)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSphere",
+ "description": "Draw sphere",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "centerPos"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSphereEx",
+ "description": "Draw sphere with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "centerPos"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawSphereWires",
+ "description": "Draw sphere wires",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "centerPos"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCylinder",
+ "description": "Draw a cylinder/cone",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "radiusTop"
+ },
+ {
+ "type": "float",
+ "name": "radiusBottom"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCylinderEx",
+ "description": "Draw a cylinder with base at startPos and top at endPos",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector3",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "startRadius"
+ },
+ {
+ "type": "float",
+ "name": "endRadius"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCylinderWires",
+ "description": "Draw a cylinder/cone wires",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "radiusTop"
+ },
+ {
+ "type": "float",
+ "name": "radiusBottom"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCylinderWiresEx",
+ "description": "Draw a cylinder wires with base at startPos and top at endPos",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector3",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "startRadius"
+ },
+ {
+ "type": "float",
+ "name": "endRadius"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCapsule",
+ "description": "Draw a capsule with the center of its sphere caps at startPos and endPos",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector3",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawCapsuleWires",
+ "description": "Draw capsule wireframe with the center of its sphere caps at startPos and endPos",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "startPos"
+ },
+ {
+ "type": "Vector3",
+ "name": "endPos"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawPlane",
+ "description": "Draw a plane XZ",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "centerPos"
+ },
+ {
+ "type": "Vector2",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawRay",
+ "description": "Draw a ray line",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawGrid",
+ "description": "Draw a grid (centered at (0, 0, 0))",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "slices"
+ },
+ {
+ "type": "float",
+ "name": "spacing"
+ }
+ ]
+ },
+ {
+ "name": "LoadModel",
+ "description": "Load model from files (meshes and materials)",
+ "returnType": "Model",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadModelFromMesh",
+ "description": "Load model from generated mesh (default material)",
+ "returnType": "Model",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ }
+ ]
+ },
+ {
+ "name": "IsModelValid",
+ "description": "Check if a model is valid (loaded in GPU, VAO/VBOs)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ }
+ ]
+ },
+ {
+ "name": "UnloadModel",
+ "description": "Unload model (including meshes) from memory (RAM and/or VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ }
+ ]
+ },
+ {
+ "name": "GetModelBoundingBox",
+ "description": "Compute model bounding box limits (considers all meshes)",
+ "returnType": "BoundingBox",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ }
+ ]
+ },
+ {
+ "name": "DrawModel",
+ "description": "Draw a model (with texture if set)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawModelEx",
+ "description": "Draw a model with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "rotationAxis"
+ },
+ {
+ "type": "float",
+ "name": "rotationAngle"
+ },
+ {
+ "type": "Vector3",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawModelWires",
+ "description": "Draw a model wires (with texture if set)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawModelWiresEx",
+ "description": "Draw a model wires (with texture if set) with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "rotationAxis"
+ },
+ {
+ "type": "float",
+ "name": "rotationAngle"
+ },
+ {
+ "type": "Vector3",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawModelPoints",
+ "description": "Draw a model as points",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawModelPointsEx",
+ "description": "Draw a model as points with extended parameters",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "rotationAxis"
+ },
+ {
+ "type": "float",
+ "name": "rotationAngle"
+ },
+ {
+ "type": "Vector3",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawBoundingBox",
+ "description": "Draw bounding box (wires)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "BoundingBox",
+ "name": "box"
+ },
+ {
+ "type": "Color",
+ "name": "color"
+ }
+ ]
+ },
+ {
+ "name": "DrawBillboard",
+ "description": "Draw a billboard texture",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera",
+ "name": "camera"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "float",
+ "name": "scale"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawBillboardRec",
+ "description": "Draw a billboard texture defined by source",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera",
+ "name": "camera"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "source"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector2",
+ "name": "size"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "DrawBillboardPro",
+ "description": "Draw a billboard texture defined by source and rotation",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Camera",
+ "name": "camera"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ },
+ {
+ "type": "Rectangle",
+ "name": "source"
+ },
+ {
+ "type": "Vector3",
+ "name": "position"
+ },
+ {
+ "type": "Vector3",
+ "name": "up"
+ },
+ {
+ "type": "Vector2",
+ "name": "size"
+ },
+ {
+ "type": "Vector2",
+ "name": "origin"
+ },
+ {
+ "type": "float",
+ "name": "rotation"
+ },
+ {
+ "type": "Color",
+ "name": "tint"
+ }
+ ]
+ },
+ {
+ "name": "UploadMesh",
+ "description": "Upload mesh vertex data in GPU and provide VAO/VBO ids",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh *",
+ "name": "mesh"
+ },
+ {
+ "type": "bool",
+ "name": "dynamic"
+ }
+ ]
+ },
+ {
+ "name": "UpdateMeshBuffer",
+ "description": "Update mesh vertex data in GPU for a specific buffer index",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "int",
+ "name": "index"
+ },
+ {
+ "type": "const void *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ },
+ {
+ "type": "int",
+ "name": "offset"
+ }
+ ]
+ },
+ {
+ "name": "UnloadMesh",
+ "description": "Unload mesh data from CPU and GPU",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ }
+ ]
+ },
+ {
+ "name": "DrawMesh",
+ "description": "Draw a 3d mesh with material and transform",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "Material",
+ "name": "material"
+ },
+ {
+ "type": "Matrix",
+ "name": "transform"
+ }
+ ]
+ },
+ {
+ "name": "DrawMeshInstanced",
+ "description": "Draw multiple mesh instances with material and different transforms",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "Material",
+ "name": "material"
+ },
+ {
+ "type": "const Matrix *",
+ "name": "transforms"
+ },
+ {
+ "type": "int",
+ "name": "instances"
+ }
+ ]
+ },
+ {
+ "name": "GetMeshBoundingBox",
+ "description": "Compute mesh bounding box limits",
+ "returnType": "BoundingBox",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshTangents",
+ "description": "Compute mesh tangents",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Mesh *",
+ "name": "mesh"
+ }
+ ]
+ },
+ {
+ "name": "ExportMesh",
+ "description": "Export mesh data to file, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "ExportMeshAsCode",
+ "description": "Export mesh as code file (.h) defining multiple arrays of vertex attributes",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshPoly",
+ "description": "Generate polygonal mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "int",
+ "name": "sides"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshPlane",
+ "description": "Generate plane mesh (with subdivisions)",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "width"
+ },
+ {
+ "type": "float",
+ "name": "length"
+ },
+ {
+ "type": "int",
+ "name": "resX"
+ },
+ {
+ "type": "int",
+ "name": "resZ"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshCube",
+ "description": "Generate cuboid mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "width"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "float",
+ "name": "length"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshSphere",
+ "description": "Generate sphere mesh (standard sphere)",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshHemiSphere",
+ "description": "Generate half-sphere mesh (no bottom cap)",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "int",
+ "name": "rings"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshCylinder",
+ "description": "Generate cylinder mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshCone",
+ "description": "Generate cone/pyramid mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "height"
+ },
+ {
+ "type": "int",
+ "name": "slices"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshTorus",
+ "description": "Generate torus mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "size"
+ },
+ {
+ "type": "int",
+ "name": "radSeg"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshKnot",
+ "description": "Generate trefoil knot mesh",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "float",
+ "name": "radius"
+ },
+ {
+ "type": "float",
+ "name": "size"
+ },
+ {
+ "type": "int",
+ "name": "radSeg"
+ },
+ {
+ "type": "int",
+ "name": "sides"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshHeightmap",
+ "description": "Generate heightmap mesh from image data",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "Image",
+ "name": "heightmap"
+ },
+ {
+ "type": "Vector3",
+ "name": "size"
+ }
+ ]
+ },
+ {
+ "name": "GenMeshCubicmap",
+ "description": "Generate cubes-based map mesh from image data",
+ "returnType": "Mesh",
+ "params": [
+ {
+ "type": "Image",
+ "name": "cubicmap"
+ },
+ {
+ "type": "Vector3",
+ "name": "cubeSize"
+ }
+ ]
+ },
+ {
+ "name": "LoadMaterials",
+ "description": "Load materials from model file",
+ "returnType": "Material *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int *",
+ "name": "materialCount"
+ }
+ ]
+ },
+ {
+ "name": "LoadMaterialDefault",
+ "description": "Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)",
+ "returnType": "Material"
+ },
+ {
+ "name": "IsMaterialValid",
+ "description": "Check if a material is valid (shader assigned, map textures loaded in GPU)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Material",
+ "name": "material"
+ }
+ ]
+ },
+ {
+ "name": "UnloadMaterial",
+ "description": "Unload material from GPU memory (VRAM)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Material",
+ "name": "material"
+ }
+ ]
+ },
+ {
+ "name": "SetMaterialTexture",
+ "description": "Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Material *",
+ "name": "material"
+ },
+ {
+ "type": "int",
+ "name": "mapType"
+ },
+ {
+ "type": "Texture2D",
+ "name": "texture"
+ }
+ ]
+ },
+ {
+ "name": "SetModelMeshMaterial",
+ "description": "Set material for a mesh",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model *",
+ "name": "model"
+ },
+ {
+ "type": "int",
+ "name": "meshId"
+ },
+ {
+ "type": "int",
+ "name": "materialId"
+ }
+ ]
+ },
+ {
+ "name": "LoadModelAnimations",
+ "description": "Load model animations from file",
+ "returnType": "ModelAnimation *",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ },
+ {
+ "type": "int *",
+ "name": "animCount"
+ }
+ ]
+ },
+ {
+ "name": "UpdateModelAnimation",
+ "description": "Update model animation pose (CPU)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "ModelAnimation",
+ "name": "anim"
+ },
+ {
+ "type": "int",
+ "name": "frame"
+ }
+ ]
+ },
+ {
+ "name": "UpdateModelAnimationBones",
+ "description": "Update model animation mesh bone matrices (GPU skinning)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "ModelAnimation",
+ "name": "anim"
+ },
+ {
+ "type": "int",
+ "name": "frame"
+ }
+ ]
+ },
+ {
+ "name": "UnloadModelAnimation",
+ "description": "Unload animation data",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "ModelAnimation",
+ "name": "anim"
+ }
+ ]
+ },
+ {
+ "name": "UnloadModelAnimations",
+ "description": "Unload animation array data",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "ModelAnimation *",
+ "name": "animations"
+ },
+ {
+ "type": "int",
+ "name": "animCount"
+ }
+ ]
+ },
+ {
+ "name": "IsModelAnimationValid",
+ "description": "Check model animation skeleton match",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Model",
+ "name": "model"
+ },
+ {
+ "type": "ModelAnimation",
+ "name": "anim"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionSpheres",
+ "description": "Check collision between two spheres",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Vector3",
+ "name": "center1"
+ },
+ {
+ "type": "float",
+ "name": "radius1"
+ },
+ {
+ "type": "Vector3",
+ "name": "center2"
+ },
+ {
+ "type": "float",
+ "name": "radius2"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionBoxes",
+ "description": "Check collision between two bounding boxes",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "BoundingBox",
+ "name": "box1"
+ },
+ {
+ "type": "BoundingBox",
+ "name": "box2"
+ }
+ ]
+ },
+ {
+ "name": "CheckCollisionBoxSphere",
+ "description": "Check collision between box and sphere",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "BoundingBox",
+ "name": "box"
+ },
+ {
+ "type": "Vector3",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ }
+ ]
+ },
+ {
+ "name": "GetRayCollisionSphere",
+ "description": "Get collision info between ray and sphere",
+ "returnType": "RayCollision",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "Vector3",
+ "name": "center"
+ },
+ {
+ "type": "float",
+ "name": "radius"
+ }
+ ]
+ },
+ {
+ "name": "GetRayCollisionBox",
+ "description": "Get collision info between ray and box",
+ "returnType": "RayCollision",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "BoundingBox",
+ "name": "box"
+ }
+ ]
+ },
+ {
+ "name": "GetRayCollisionMesh",
+ "description": "Get collision info between ray and mesh",
+ "returnType": "RayCollision",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "Mesh",
+ "name": "mesh"
+ },
+ {
+ "type": "Matrix",
+ "name": "transform"
+ }
+ ]
+ },
+ {
+ "name": "GetRayCollisionTriangle",
+ "description": "Get collision info between ray and triangle",
+ "returnType": "RayCollision",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "Vector3",
+ "name": "p1"
+ },
+ {
+ "type": "Vector3",
+ "name": "p2"
+ },
+ {
+ "type": "Vector3",
+ "name": "p3"
+ }
+ ]
+ },
+ {
+ "name": "GetRayCollisionQuad",
+ "description": "Get collision info between ray and quad",
+ "returnType": "RayCollision",
+ "params": [
+ {
+ "type": "Ray",
+ "name": "ray"
+ },
+ {
+ "type": "Vector3",
+ "name": "p1"
+ },
+ {
+ "type": "Vector3",
+ "name": "p2"
+ },
+ {
+ "type": "Vector3",
+ "name": "p3"
+ },
+ {
+ "type": "Vector3",
+ "name": "p4"
+ }
+ ]
+ },
+ {
+ "name": "InitAudioDevice",
+ "description": "Initialize audio device and context",
+ "returnType": "void"
+ },
+ {
+ "name": "CloseAudioDevice",
+ "description": "Close the audio device and context",
+ "returnType": "void"
+ },
+ {
+ "name": "IsAudioDeviceReady",
+ "description": "Check if audio device has been initialized successfully",
+ "returnType": "bool"
+ },
+ {
+ "name": "SetMasterVolume",
+ "description": "Set master volume (listener)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "float",
+ "name": "volume"
+ }
+ ]
+ },
+ {
+ "name": "GetMasterVolume",
+ "description": "Get master volume (listener)",
+ "returnType": "float"
+ },
+ {
+ "name": "LoadWave",
+ "description": "Load wave data from file",
+ "returnType": "Wave",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadWaveFromMemory",
+ "description": "Load wave from memory buffer, fileType refers to extension: i.e. '.wav'",
+ "returnType": "Wave",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "const unsigned char *",
+ "name": "fileData"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "IsWaveValid",
+ "description": "Checks if wave data is valid (data loaded and parameters)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ }
+ ]
+ },
+ {
+ "name": "LoadSound",
+ "description": "Load sound from file",
+ "returnType": "Sound",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadSoundFromWave",
+ "description": "Load sound from wave data",
+ "returnType": "Sound",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ }
+ ]
+ },
+ {
+ "name": "LoadSoundAlias",
+ "description": "Create a new sound that shares the same sample data as the source sound, does not own the sound data",
+ "returnType": "Sound",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "source"
+ }
+ ]
+ },
+ {
+ "name": "IsSoundValid",
+ "description": "Checks if a sound is valid (data loaded and buffers initialized)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "UpdateSound",
+ "description": "Update sound buffer with new data (default data format: 32 bit float, stereo)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ },
+ {
+ "type": "const void *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "sampleCount"
+ }
+ ]
+ },
+ {
+ "name": "UnloadWave",
+ "description": "Unload wave data",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ }
+ ]
+ },
+ {
+ "name": "UnloadSound",
+ "description": "Unload sound",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "UnloadSoundAlias",
+ "description": "Unload a sound alias (does not deallocate sample data)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "alias"
+ }
+ ]
+ },
+ {
+ "name": "ExportWave",
+ "description": "Export wave data to file, returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "ExportWaveAsCode",
+ "description": "Export wave sample data to code (.h), returns true on success",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ },
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "PlaySound",
+ "description": "Play a sound",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "StopSound",
+ "description": "Stop playing a sound",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "PauseSound",
+ "description": "Pause a sound",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "ResumeSound",
+ "description": "Resume a paused sound",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "IsSoundPlaying",
+ "description": "Check if a sound is currently playing",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ }
+ ]
+ },
+ {
+ "name": "SetSoundVolume",
+ "description": "Set volume for a sound (1.0 is max level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ },
+ {
+ "type": "float",
+ "name": "volume"
+ }
+ ]
+ },
+ {
+ "name": "SetSoundPitch",
+ "description": "Set pitch for a sound (1.0 is base level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ },
+ {
+ "type": "float",
+ "name": "pitch"
+ }
+ ]
+ },
+ {
+ "name": "SetSoundPan",
+ "description": "Set pan for a sound (-1.0 left, 0.0 center, 1.0 right)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Sound",
+ "name": "sound"
+ },
+ {
+ "type": "float",
+ "name": "pan"
+ }
+ ]
+ },
+ {
+ "name": "WaveCopy",
+ "description": "Copy a wave to a new wave",
+ "returnType": "Wave",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ }
+ ]
+ },
+ {
+ "name": "WaveCrop",
+ "description": "Crop a wave to defined frames range",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Wave *",
+ "name": "wave"
+ },
+ {
+ "type": "int",
+ "name": "initFrame"
+ },
+ {
+ "type": "int",
+ "name": "finalFrame"
+ }
+ ]
+ },
+ {
+ "name": "WaveFormat",
+ "description": "Convert wave data to desired format",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Wave *",
+ "name": "wave"
+ },
+ {
+ "type": "int",
+ "name": "sampleRate"
+ },
+ {
+ "type": "int",
+ "name": "sampleSize"
+ },
+ {
+ "type": "int",
+ "name": "channels"
+ }
+ ]
+ },
+ {
+ "name": "LoadWaveSamples",
+ "description": "Load samples data from wave as a 32bit float data array",
+ "returnType": "float *",
+ "params": [
+ {
+ "type": "Wave",
+ "name": "wave"
+ }
+ ]
+ },
+ {
+ "name": "UnloadWaveSamples",
+ "description": "Unload samples data loaded with LoadWaveSamples()",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "float *",
+ "name": "samples"
+ }
+ ]
+ },
+ {
+ "name": "LoadMusicStream",
+ "description": "Load music stream from file",
+ "returnType": "Music",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileName"
+ }
+ ]
+ },
+ {
+ "name": "LoadMusicStreamFromMemory",
+ "description": "Load music stream from data",
+ "returnType": "Music",
+ "params": [
+ {
+ "type": "const char *",
+ "name": "fileType"
+ },
+ {
+ "type": "const unsigned char *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "dataSize"
+ }
+ ]
+ },
+ {
+ "name": "IsMusicValid",
+ "description": "Checks if a music stream is valid (context and buffers initialized)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "UnloadMusicStream",
+ "description": "Unload music stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "PlayMusicStream",
+ "description": "Start music playing",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "IsMusicStreamPlaying",
+ "description": "Check if music is playing",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "UpdateMusicStream",
+ "description": "Updates buffers for music streaming",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "StopMusicStream",
+ "description": "Stop music playing",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "PauseMusicStream",
+ "description": "Pause music playing",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "ResumeMusicStream",
+ "description": "Resume playing paused music",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "SeekMusicStream",
+ "description": "Seek music to a position (in seconds)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ },
+ {
+ "type": "float",
+ "name": "position"
+ }
+ ]
+ },
+ {
+ "name": "SetMusicVolume",
+ "description": "Set volume for music (1.0 is max level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ },
+ {
+ "type": "float",
+ "name": "volume"
+ }
+ ]
+ },
+ {
+ "name": "SetMusicPitch",
+ "description": "Set pitch for a music (1.0 is base level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ },
+ {
+ "type": "float",
+ "name": "pitch"
+ }
+ ]
+ },
+ {
+ "name": "SetMusicPan",
+ "description": "Set pan for a music (-1.0 left, 0.0 center, 1.0 right)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ },
+ {
+ "type": "float",
+ "name": "pan"
+ }
+ ]
+ },
+ {
+ "name": "GetMusicTimeLength",
+ "description": "Get music time length (in seconds)",
+ "returnType": "float",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "GetMusicTimePlayed",
+ "description": "Get current music time played (in seconds)",
+ "returnType": "float",
+ "params": [
+ {
+ "type": "Music",
+ "name": "music"
+ }
+ ]
+ },
+ {
+ "name": "LoadAudioStream",
+ "description": "Load audio stream (to stream raw audio pcm data)",
+ "returnType": "AudioStream",
+ "params": [
+ {
+ "type": "unsigned int",
+ "name": "sampleRate"
+ },
+ {
+ "type": "unsigned int",
+ "name": "sampleSize"
+ },
+ {
+ "type": "unsigned int",
+ "name": "channels"
+ }
+ ]
+ },
+ {
+ "name": "IsAudioStreamValid",
+ "description": "Checks if an audio stream is valid (buffers initialized)",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "UnloadAudioStream",
+ "description": "Unload audio stream and free memory",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "UpdateAudioStream",
+ "description": "Update audio stream buffers with data",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "const void *",
+ "name": "data"
+ },
+ {
+ "type": "int",
+ "name": "frameCount"
+ }
+ ]
+ },
+ {
+ "name": "IsAudioStreamProcessed",
+ "description": "Check if any audio stream buffers requires refill",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "PlayAudioStream",
+ "description": "Play audio stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "PauseAudioStream",
+ "description": "Pause audio stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "ResumeAudioStream",
+ "description": "Resume audio stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "IsAudioStreamPlaying",
+ "description": "Check if audio stream is playing",
+ "returnType": "bool",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "StopAudioStream",
+ "description": "Stop audio stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ }
+ ]
+ },
+ {
+ "name": "SetAudioStreamVolume",
+ "description": "Set volume for audio stream (1.0 is max level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "float",
+ "name": "volume"
+ }
+ ]
+ },
+ {
+ "name": "SetAudioStreamPitch",
+ "description": "Set pitch for audio stream (1.0 is base level)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "float",
+ "name": "pitch"
+ }
+ ]
+ },
+ {
+ "name": "SetAudioStreamPan",
+ "description": "Set pan for audio stream (0.5 is centered)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "float",
+ "name": "pan"
+ }
+ ]
+ },
+ {
+ "name": "SetAudioStreamBufferSizeDefault",
+ "description": "Default size for new audio streams",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "int",
+ "name": "size"
+ }
+ ]
+ },
+ {
+ "name": "SetAudioStreamCallback",
+ "description": "Audio thread callback to request new data",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "AudioCallback",
+ "name": "callback"
+ }
+ ]
+ },
+ {
+ "name": "AttachAudioStreamProcessor",
+ "description": "Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "AudioCallback",
+ "name": "processor"
+ }
+ ]
+ },
+ {
+ "name": "DetachAudioStreamProcessor",
+ "description": "Detach audio stream processor from stream",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioStream",
+ "name": "stream"
+ },
+ {
+ "type": "AudioCallback",
+ "name": "processor"
+ }
+ ]
+ },
+ {
+ "name": "AttachAudioMixedProcessor",
+ "description": "Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo)",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioCallback",
+ "name": "processor"
+ }
+ ]
+ },
+ {
+ "name": "DetachAudioMixedProcessor",
+ "description": "Detach audio stream processor from the entire audio pipeline",
+ "returnType": "void",
+ "params": [
+ {
+ "type": "AudioCallback",
+ "name": "processor"
+ }
+ ]
+ }
+ ]
+}
diff --git a/wasm-runtime/api/stringyvalue.go b/wasm-runtime/api/stringyvalue.go
new file mode 100644
index 0000000..4176fec
--- /dev/null
+++ b/wasm-runtime/api/stringyvalue.go
@@ -0,0 +1,28 @@
+package api
+
+import "encoding/json"
+
+type StringyValue string
+
+// convert the json type to a string.
+func (s *StringyValue) UnmarshalJSON(b []byte) error {
+ // null
+ if string(b) == "null" {
+ *s = ""
+ return nil
+ }
+
+ // quoted string
+ if len(b) > 0 && b[0] == '"' {
+ var v string
+ if err := json.Unmarshal(b, &v); err != nil {
+ return err
+ }
+ *s = StringyValue(v)
+ return nil
+ }
+
+ // number / bare token → keep textual form
+ *s = StringyValue(b)
+ return nil
+}
diff --git a/wasm-runtime/go.mod b/wasm-runtime/go.mod
new file mode 100644
index 0000000..9e29a39
--- /dev/null
+++ b/wasm-runtime/go.mod
@@ -0,0 +1,3 @@
+module github.com/BrownNPC/Raylib-Go-Wasm/wasm-runtime
+
+go 1.26.1
diff --git a/wasm-runtime/rl/.gitkeep b/wasm-runtime/rl/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/wasm-runtime/rl/aliases_gen_formatted.go b/wasm-runtime/rl/aliases_gen_formatted.go
new file mode 100644
index 0000000..85f4693
--- /dev/null
+++ b/wasm-runtime/rl/aliases_gen_formatted.go
@@ -0,0 +1,20 @@
+// AUTOGENERATED FILE. DO NOT EDIT
+
+//go:build js
+
+package rl
+
+// Quaternion, 4 components (Vector4 alias)
+type Quaternion = Vector4
+
+// Texture2D, same as Texture
+type Texture2D = Texture
+
+// TextureCubemap, same as Texture
+type TextureCubemap = Texture
+
+// RenderTexture2D, same as RenderTexture
+type RenderTexture2D = RenderTexture
+
+// Camera type fallback, defaults to Camera3D
+type Camera = Camera3D
diff --git a/wasm-runtime/rl/defines_gen_formatted.go b/wasm-runtime/rl/defines_gen_formatted.go
new file mode 100644
index 0000000..5005057
--- /dev/null
+++ b/wasm-runtime/rl/defines_gen_formatted.go
@@ -0,0 +1,121 @@
+// AUTOGENERATED FILE. DO NOT EDIT
+
+//go:build js
+
+package rl
+
+const RaylibVersionMajor = 5
+
+const RaylibVersionMinor = 6
+
+const RaylibVersionPatch = 0
+
+const RaylibVersion = "5.6-dev"
+
+const Pi = 3.14159265358979323846
+
+const Deg2Rad = (Pi / 180.0)
+
+const Rad2Deg = (180.0 / Pi)
+
+//Light Gray
+var Lightgray = Color{200, 200, 200, 255}
+
+//Gray
+var Gray = Color{130, 130, 130, 255}
+
+//Dark Gray
+var Darkgray = Color{80, 80, 80, 255}
+
+//Yellow
+var Yellow = Color{253, 249, 0, 255}
+
+//Gold
+var Gold = Color{255, 203, 0, 255}
+
+//Orange
+var Orange = Color{255, 161, 0, 255}
+
+//Pink
+var Pink = Color{255, 109, 194, 255}
+
+//Red
+var Red = Color{230, 41, 55, 255}
+
+//Maroon
+var Maroon = Color{190, 33, 55, 255}
+
+//Green
+var Green = Color{0, 228, 48, 255}
+
+//Lime
+var Lime = Color{0, 158, 47, 255}
+
+//Dark Green
+var DarkGreen = Color{0, 117, 44, 255}
+
+//Sky Blue
+var Skyblue = Color{102, 191, 255, 255}
+
+//Blue
+var Blue = Color{0, 121, 241, 255}
+
+//Dark Blue
+var Darkblue = Color{0, 82, 172, 255}
+
+//Purple
+var Purple = Color{200, 122, 255, 255}
+
+//Violet
+var Violet = Color{135, 60, 190, 255}
+
+//Dark Purple
+var Darkpurple = Color{112, 31, 126, 255}
+
+//Beige
+var Beige = Color{211, 176, 131, 255}
+
+//Brown
+var Brown = Color{127, 106, 79, 255}
+
+//Dark Brown
+var Darkbrown = Color{76, 63, 47, 255}
+
+//White
+var White = Color{255, 255, 255, 255}
+
+//Black
+var Black = Color{0, 0, 0, 255}
+
+//Blank (Transparent)
+var Blank = Color{0, 0, 0, 0}
+
+//Magenta
+var Magenta = Color{255, 0, 255, 255}
+
+//My own White (raylib logo)
+var Raywhite = Color{245, 245, 245, 255}
+
+//
+const MouseLeftButton = MouseButtonLeft
+
+//
+const MouseRightButton = MouseButtonRight
+
+//
+const MouseMiddleButton = MouseButtonMiddle
+
+//
+const MaterialMapDiffuse = MaterialMapAlbedo
+
+//
+const MaterialMapSpecular = MaterialMapMetalness
+
+//
+const ShaderLocMapDiffuse = ShaderLocMapAlbedo
+
+//
+const ShaderLocMapSpecular = ShaderLocMapMetalness
+
+//Compatibility hack for previous raylib versions
+var GetMouseRay = GetScreenToWorldRay
diff --git a/wasm-runtime/rl/enums_gen_formatted.go b/wasm-runtime/rl/enums_gen_formatted.go
new file mode 100644
index 0000000..303b8d2
--- /dev/null
+++ b/wasm-runtime/rl/enums_gen_formatted.go
@@ -0,0 +1,741 @@
+// AUTOGENERATED FILE. DO NOT EDIT
+
+//go:build js
+
+package rl
+
+// System/Window config flags
+type ConfigFlags = int32
+
+const (
+ // Set to try enabling V-Sync on GPU
+ FlagVsyncHint = 64
+ // Set to run program in fullscreen
+ FlagFullscreenMode = 2
+ // Set to allow resizable window
+ FlagWindowResizable = 4
+ // Set to disable window decoration (frame and buttons)
+ FlagWindowUndecorated = 8
+ // Set to hide window
+ FlagWindowHidden = 128
+ // Set to minimize window (iconify)
+ FlagWindowMinimized = 512
+ // Set to maximize window (expanded to monitor)
+ FlagWindowMaximized = 1024
+ // Set to window non focused
+ FlagWindowUnfocused = 2048
+ // Set to window always on top
+ FlagWindowTopmost = 4096
+ // Set to allow windows running while minimized
+ FlagWindowAlwaysRun = 256
+ // Set to allow transparent framebuffer
+ FlagWindowTransparent = 16
+ // Set to support HighDPI
+ FlagWindowHighdpi = 8192
+ // Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED
+ FlagWindowMousePassthrough = 16384
+ // Set to run program in borderless windowed mode
+ FlagBorderlessWindowedMode = 32768
+ // Set to try enabling MSAA 4X
+ FlagMsaa4XHint = 32
+ // Set to try enabling interlaced video format (for V3D)
+ FlagInterlacedHint = 65536
+)
+
+// Trace log level
+type TraceLogLevel = int32
+
+const (
+ // Display all logs
+ LogAll = 0
+ // Trace logging, intended for internal use only
+ LogTrace = 1
+ // Debug logging, used for internal debugging, it should be disabled on release builds
+ LogDebug = 2
+ // Info logging, used for program execution info
+ LogInfo = 3
+ // Warning logging, used on recoverable failures
+ LogWarning = 4
+ // Error logging, used on unrecoverable failures
+ LogError = 5
+ // Fatal logging, used to abort program: exit(EXIT_FAILURE)
+ LogFatal = 6
+ // Disable logging
+ LogNone = 7
+)
+
+// Keyboard keys (US keyboard layout)
+type KeyboardKey = int32
+
+const (
+ // Key: NULL, used for no key pressed
+ KeyNull = 0
+ // Key: '
+ KeyApostrophe = 39
+ // Key: ,
+ KeyComma = 44
+ // Key: -
+ KeyMinus = 45
+ // Key: .
+ KeyPeriod = 46
+ // Key: /
+ KeySlash = 47
+ // Key: 0
+ KeyZero = 48
+ // Key: 1
+ KeyOne = 49
+ // Key: 2
+ KeyTwo = 50
+ // Key: 3
+ KeyThree = 51
+ // Key: 4
+ KeyFour = 52
+ // Key: 5
+ KeyFive = 53
+ // Key: 6
+ KeySix = 54
+ // Key: 7
+ KeySeven = 55
+ // Key: 8
+ KeyEight = 56
+ // Key: 9
+ KeyNine = 57
+ // Key: ;
+ KeySemicolon = 59
+ // Key: =
+ KeyEqual = 61
+ // Key: A | a
+ KeyA = 65
+ // Key: B | b
+ KeyB = 66
+ // Key: C | c
+ KeyC = 67
+ // Key: D | d
+ KeyD = 68
+ // Key: E | e
+ KeyE = 69
+ // Key: F | f
+ KeyF = 70
+ // Key: G | g
+ KeyG = 71
+ // Key: H | h
+ KeyH = 72
+ // Key: I | i
+ KeyI = 73
+ // Key: J | j
+ KeyJ = 74
+ // Key: K | k
+ KeyK = 75
+ // Key: L | l
+ KeyL = 76
+ // Key: M | m
+ KeyM = 77
+ // Key: N | n
+ KeyN = 78
+ // Key: O | o
+ KeyO = 79
+ // Key: P | p
+ KeyP = 80
+ // Key: Q | q
+ KeyQ = 81
+ // Key: R | r
+ KeyR = 82
+ // Key: S | s
+ KeyS = 83
+ // Key: T | t
+ KeyT = 84
+ // Key: U | u
+ KeyU = 85
+ // Key: V | v
+ KeyV = 86
+ // Key: W | w
+ KeyW = 87
+ // Key: X | x
+ KeyX = 88
+ // Key: Y | y
+ KeyY = 89
+ // Key: Z | z
+ KeyZ = 90
+ // Key: [
+ KeyLeftBracket = 91
+ // Key: '\'
+ KeyBackslash = 92
+ // Key: ]
+ KeyRightBracket = 93
+ // Key: `
+ KeyGrave = 96
+ // Key: Space
+ KeySpace = 32
+ // Key: Esc
+ KeyEscape = 256
+ // Key: Enter
+ KeyEnter = 257
+ // Key: Tab
+ KeyTab = 258
+ // Key: Backspace
+ KeyBackspace = 259
+ // Key: Ins
+ KeyInsert = 260
+ // Key: Del
+ KeyDelete = 261
+ // Key: Cursor right
+ KeyRight = 262
+ // Key: Cursor left
+ KeyLeft = 263
+ // Key: Cursor down
+ KeyDown = 264
+ // Key: Cursor up
+ KeyUp = 265
+ // Key: Page up
+ KeyPageUp = 266
+ // Key: Page down
+ KeyPageDown = 267
+ // Key: Home
+ KeyHome = 268
+ // Key: End
+ KeyEnd = 269
+ // Key: Caps lock
+ KeyCapsLock = 280
+ // Key: Scroll down
+ KeyScrollLock = 281
+ // Key: Num lock
+ KeyNumLock = 282
+ // Key: Print screen
+ KeyPrintScreen = 283
+ // Key: Pause
+ KeyPause = 284
+ // Key: F1
+ KeyF1 = 290
+ // Key: F2
+ KeyF2 = 291
+ // Key: F3
+ KeyF3 = 292
+ // Key: F4
+ KeyF4 = 293
+ // Key: F5
+ KeyF5 = 294
+ // Key: F6
+ KeyF6 = 295
+ // Key: F7
+ KeyF7 = 296
+ // Key: F8
+ KeyF8 = 297
+ // Key: F9
+ KeyF9 = 298
+ // Key: F10
+ KeyF10 = 299
+ // Key: F11
+ KeyF11 = 300
+ // Key: F12
+ KeyF12 = 301
+ // Key: Shift left
+ KeyLeftShift = 340
+ // Key: Control left
+ KeyLeftControl = 341
+ // Key: Alt left
+ KeyLeftAlt = 342
+ // Key: Super left
+ KeyLeftSuper = 343
+ // Key: Shift right
+ KeyRightShift = 344
+ // Key: Control right
+ KeyRightControl = 345
+ // Key: Alt right
+ KeyRightAlt = 346
+ // Key: Super right
+ KeyRightSuper = 347
+ // Key: KB menu
+ KeyKbMenu = 348
+ // Key: Keypad 0
+ KeyKp0 = 320
+ // Key: Keypad 1
+ KeyKp1 = 321
+ // Key: Keypad 2
+ KeyKp2 = 322
+ // Key: Keypad 3
+ KeyKp3 = 323
+ // Key: Keypad 4
+ KeyKp4 = 324
+ // Key: Keypad 5
+ KeyKp5 = 325
+ // Key: Keypad 6
+ KeyKp6 = 326
+ // Key: Keypad 7
+ KeyKp7 = 327
+ // Key: Keypad 8
+ KeyKp8 = 328
+ // Key: Keypad 9
+ KeyKp9 = 329
+ // Key: Keypad .
+ KeyKpDecimal = 330
+ // Key: Keypad /
+ KeyKpDivide = 331
+ // Key: Keypad *
+ KeyKpMultiply = 332
+ // Key: Keypad -
+ KeyKpSubtract = 333
+ // Key: Keypad +
+ KeyKpAdd = 334
+ // Key: Keypad Enter
+ KeyKpEnter = 335
+ // Key: Keypad =
+ KeyKpEqual = 336
+ // Key: Android back button
+ KeyBack = 4
+ // Key: Android menu button
+ KeyMenu = 5
+ // Key: Android volume up button
+ KeyVolumeUp = 24
+ // Key: Android volume down button
+ KeyVolumeDown = 25
+)
+
+// Mouse buttons
+type MouseButton = int32
+
+const (
+ // Mouse button left
+ MouseButtonLeft = 0
+ // Mouse button right
+ MouseButtonRight = 1
+ // Mouse button middle (pressed wheel)
+ MouseButtonMiddle = 2
+ // Mouse button side (advanced mouse device)
+ MouseButtonSide = 3
+ // Mouse button extra (advanced mouse device)
+ MouseButtonExtra = 4
+ // Mouse button forward (advanced mouse device)
+ MouseButtonForward = 5
+ // Mouse button back (advanced mouse device)
+ MouseButtonBack = 6
+)
+
+// Mouse cursor
+type MouseCursor = int32
+
+const (
+ // Default pointer shape
+ MouseCursorDefault = 0
+ // Arrow shape
+ MouseCursorArrow = 1
+ // Text writing cursor shape
+ MouseCursorIbeam = 2
+ // Cross shape
+ MouseCursorCrosshair = 3
+ // Pointing hand cursor
+ MouseCursorPointingHand = 4
+ // Horizontal resize/move arrow shape
+ MouseCursorResizeEw = 5
+ // Vertical resize/move arrow shape
+ MouseCursorResizeNs = 6
+ // Top-left to bottom-right diagonal resize/move arrow shape
+ MouseCursorResizeNwse = 7
+ // The top-right to bottom-left diagonal resize/move arrow shape
+ MouseCursorResizeNesw = 8
+ // The omnidirectional resize/move cursor shape
+ MouseCursorResizeAll = 9
+ // The operation-not-allowed shape
+ MouseCursorNotAllowed = 10
+)
+
+// Gamepad buttons
+type GamepadButton = int32
+
+const (
+ // Unknown button, just for error checking
+ GamepadButtonUnknown = 0
+ // Gamepad left DPAD up button
+ GamepadButtonLeftFaceUp = 1
+ // Gamepad left DPAD right button
+ GamepadButtonLeftFaceRight = 2
+ // Gamepad left DPAD down button
+ GamepadButtonLeftFaceDown = 3
+ // Gamepad left DPAD left button
+ GamepadButtonLeftFaceLeft = 4
+ // Gamepad right button up (i.e. PS3: Triangle, Xbox: Y)
+ GamepadButtonRightFaceUp = 5
+ // Gamepad right button right (i.e. PS3: Circle, Xbox: B)
+ GamepadButtonRightFaceRight = 6
+ // Gamepad right button down (i.e. PS3: Cross, Xbox: A)
+ GamepadButtonRightFaceDown = 7
+ // Gamepad right button left (i.e. PS3: Square, Xbox: X)
+ GamepadButtonRightFaceLeft = 8
+ // Gamepad top/back trigger left (first), it could be a trailing button
+ GamepadButtonLeftTrigger1 = 9
+ // Gamepad top/back trigger left (second), it could be a trailing button
+ GamepadButtonLeftTrigger2 = 10
+ // Gamepad top/back trigger right (first), it could be a trailing button
+ GamepadButtonRightTrigger1 = 11
+ // Gamepad top/back trigger right (second), it could be a trailing button
+ GamepadButtonRightTrigger2 = 12
+ // Gamepad center buttons, left one (i.e. PS3: Select)
+ GamepadButtonMiddleLeft = 13
+ // Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX)
+ GamepadButtonMiddle = 14
+ // Gamepad center buttons, right one (i.e. PS3: Start)
+ GamepadButtonMiddleRight = 15
+ // Gamepad joystick pressed button left
+ GamepadButtonLeftThumb = 16
+ // Gamepad joystick pressed button right
+ GamepadButtonRightThumb = 17
+)
+
+// Gamepad axes
+type GamepadAxis = int32
+
+const (
+ // Gamepad left stick X axis
+ GamepadAxisLeftX = 0
+ // Gamepad left stick Y axis
+ GamepadAxisLeftY = 1
+ // Gamepad right stick X axis
+ GamepadAxisRightX = 2
+ // Gamepad right stick Y axis
+ GamepadAxisRightY = 3
+ // Gamepad back trigger left, pressure level: [1..-1]
+ GamepadAxisLeftTrigger = 4
+ // Gamepad back trigger right, pressure level: [1..-1]
+ GamepadAxisRightTrigger = 5
+)
+
+// Material map index
+type MaterialMapIndex = int32
+
+const (
+ // Albedo material (same as: MATERIAL_MAP_DIFFUSE)
+ MaterialMapAlbedo = 0
+ // Metalness material (same as: MATERIAL_MAP_SPECULAR)
+ MaterialMapMetalness = 1
+ // Normal material
+ MaterialMapNormal = 2
+ // Roughness material
+ MaterialMapRoughness = 3
+ // Ambient occlusion material
+ MaterialMapOcclusion = 4
+ // Emission material
+ MaterialMapEmission = 5
+ // Heightmap material
+ MaterialMapHeight = 6
+ // Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+ MaterialMapCubemap = 7
+ // Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+ MaterialMapIrradiance = 8
+ // Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP)
+ MaterialMapPrefilter = 9
+ // Brdf material
+ MaterialMapBrdf = 10
+)
+
+// Shader location index
+type ShaderLocationIndex = int32
+
+const (
+ // Shader location: vertex attribute: position
+ ShaderLocVertexPosition = 0
+ // Shader location: vertex attribute: texcoord01
+ ShaderLocVertexTexcoord01 = 1
+ // Shader location: vertex attribute: texcoord02
+ ShaderLocVertexTexcoord02 = 2
+ // Shader location: vertex attribute: normal
+ ShaderLocVertexNormal = 3
+ // Shader location: vertex attribute: tangent
+ ShaderLocVertexTangent = 4
+ // Shader location: vertex attribute: color
+ ShaderLocVertexColor = 5
+ // Shader location: matrix uniform: model-view-projection
+ ShaderLocMatrixMvp = 6
+ // Shader location: matrix uniform: view (camera transform)
+ ShaderLocMatrixView = 7
+ // Shader location: matrix uniform: projection
+ ShaderLocMatrixProjection = 8
+ // Shader location: matrix uniform: model (transform)
+ ShaderLocMatrixModel = 9
+ // Shader location: matrix uniform: normal
+ ShaderLocMatrixNormal = 10
+ // Shader location: vector uniform: view
+ ShaderLocVectorView = 11
+ // Shader location: vector uniform: diffuse color
+ ShaderLocColorDiffuse = 12
+ // Shader location: vector uniform: specular color
+ ShaderLocColorSpecular = 13
+ // Shader location: vector uniform: ambient color
+ ShaderLocColorAmbient = 14
+ // Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE)
+ ShaderLocMapAlbedo = 15
+ // Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR)
+ ShaderLocMapMetalness = 16
+ // Shader location: sampler2d texture: normal
+ ShaderLocMapNormal = 17
+ // Shader location: sampler2d texture: roughness
+ ShaderLocMapRoughness = 18
+ // Shader location: sampler2d texture: occlusion
+ ShaderLocMapOcclusion = 19
+ // Shader location: sampler2d texture: emission
+ ShaderLocMapEmission = 20
+ // Shader location: sampler2d texture: height
+ ShaderLocMapHeight = 21
+ // Shader location: samplerCube texture: cubemap
+ ShaderLocMapCubemap = 22
+ // Shader location: samplerCube texture: irradiance
+ ShaderLocMapIrradiance = 23
+ // Shader location: samplerCube texture: prefilter
+ ShaderLocMapPrefilter = 24
+ // Shader location: sampler2d texture: brdf
+ ShaderLocMapBrdf = 25
+ // Shader location: vertex attribute: boneIds
+ ShaderLocVertexBoneids = 26
+ // Shader location: vertex attribute: boneWeights
+ ShaderLocVertexBoneweights = 27
+ // Shader location: array of matrices uniform: boneMatrices
+ ShaderLocBoneMatrices = 28
+ // Shader location: vertex attribute: instanceTransform
+ ShaderLocVertexInstanceTx = 29
+)
+
+// Shader uniform data type
+type ShaderUniformDataType = int32
+
+const (
+ // Shader uniform type: float
+ ShaderUniformFloat = 0
+ // Shader uniform type: vec2 (2 float)
+ ShaderUniformVec2 = 1
+ // Shader uniform type: vec3 (3 float)
+ ShaderUniformVec3 = 2
+ // Shader uniform type: vec4 (4 float)
+ ShaderUniformVec4 = 3
+ // Shader uniform type: int
+ ShaderUniformInt = 4
+ // Shader uniform type: ivec2 (2 int)
+ ShaderUniformIvec2 = 5
+ // Shader uniform type: ivec3 (3 int)
+ ShaderUniformIvec3 = 6
+ // Shader uniform type: ivec4 (4 int)
+ ShaderUniformIvec4 = 7
+ // Shader uniform type: unsigned int
+ ShaderUniformUint = 8
+ // Shader uniform type: uivec2 (2 unsigned int)
+ ShaderUniformUivec2 = 9
+ // Shader uniform type: uivec3 (3 unsigned int)
+ ShaderUniformUivec3 = 10
+ // Shader uniform type: uivec4 (4 unsigned int)
+ ShaderUniformUivec4 = 11
+ // Shader uniform type: sampler2d
+ ShaderUniformSampler2D = 12
+)
+
+// Shader attribute data types
+type ShaderAttributeDataType = int32
+
+const (
+ // Shader attribute type: float
+ ShaderAttribFloat = 0
+ // Shader attribute type: vec2 (2 float)
+ ShaderAttribVec2 = 1
+ // Shader attribute type: vec3 (3 float)
+ ShaderAttribVec3 = 2
+ // Shader attribute type: vec4 (4 float)
+ ShaderAttribVec4 = 3
+)
+
+// Pixel formats
+type PixelFormat = int32
+
+const (
+ // 8 bit per pixel (no alpha)
+ PixelformatUncompressedGrayscale = 1
+ // 8*2 bpp (2 channels)
+ PixelformatUncompressedGrayAlpha = 2
+ // 16 bpp
+ PixelformatUncompressedR5G6B5 = 3
+ // 24 bpp
+ PixelformatUncompressedR8G8B8 = 4
+ // 16 bpp (1 bit alpha)
+ PixelformatUncompressedR5G5B5A1 = 5
+ // 16 bpp (4 bit alpha)
+ PixelformatUncompressedR4G4B4A4 = 6
+ // 32 bpp
+ PixelformatUncompressedR8G8B8A8 = 7
+ // 32 bpp (1 channel - float)
+ PixelformatUncompressedR32 = 8
+ // 32*3 bpp (3 channels - float)
+ PixelformatUncompressedR32G32B32 = 9
+ // 32*4 bpp (4 channels - float)
+ PixelformatUncompressedR32G32B32A32 = 10
+ // 16 bpp (1 channel - half float)
+ PixelformatUncompressedR16 = 11
+ // 16*3 bpp (3 channels - half float)
+ PixelformatUncompressedR16G16B16 = 12
+ // 16*4 bpp (4 channels - half float)
+ PixelformatUncompressedR16G16B16A16 = 13
+ // 4 bpp (no alpha)
+ PixelformatCompressedDxt1Rgb = 14
+ // 4 bpp (1 bit alpha)
+ PixelformatCompressedDxt1Rgba = 15
+ // 8 bpp
+ PixelformatCompressedDxt3Rgba = 16
+ // 8 bpp
+ PixelformatCompressedDxt5Rgba = 17
+ // 4 bpp
+ PixelformatCompressedEtc1Rgb = 18
+ // 4 bpp
+ PixelformatCompressedEtc2Rgb = 19
+ // 8 bpp
+ PixelformatCompressedEtc2EacRgba = 20
+ // 4 bpp
+ PixelformatCompressedPvrtRgb = 21
+ // 4 bpp
+ PixelformatCompressedPvrtRgba = 22
+ // 8 bpp
+ PixelformatCompressedAstc4X4Rgba = 23
+ // 2 bpp
+ PixelformatCompressedAstc8X8Rgba = 24
+)
+
+// Texture parameters: filter mode
+type TextureFilter = int32
+
+const (
+ // No filter, just pixel approximation
+ TextureFilterPoint = 0
+ // Linear filtering
+ TextureFilterBilinear = 1
+ // Trilinear filtering (linear with mipmaps)
+ TextureFilterTrilinear = 2
+ // Anisotropic filtering 4x
+ TextureFilterAnisotropic4X = 3
+ // Anisotropic filtering 8x
+ TextureFilterAnisotropic8X = 4
+ // Anisotropic filtering 16x
+ TextureFilterAnisotropic16X = 5
+)
+
+// Texture parameters: wrap mode
+type TextureWrap = int32
+
+const (
+ // Repeats texture in tiled mode
+ TextureWrapRepeat = 0
+ // Clamps texture to edge pixel in tiled mode
+ TextureWrapClamp = 1
+ // Mirrors and repeats the texture in tiled mode
+ TextureWrapMirrorRepeat = 2
+ // Mirrors and clamps to border the texture in tiled mode
+ TextureWrapMirrorClamp = 3
+)
+
+// Cubemap layouts
+type CubemapLayout = int32
+
+const (
+ // Automatically detect layout type
+ CubemapLayoutAutoDetect = 0
+ // Layout is defined by a vertical line with faces
+ CubemapLayoutLineVertical = 1
+ // Layout is defined by a horizontal line with faces
+ CubemapLayoutLineHorizontal = 2
+ // Layout is defined by a 3x4 cross with cubemap faces
+ CubemapLayoutCrossThreeByFour = 3
+ // Layout is defined by a 4x3 cross with cubemap faces
+ CubemapLayoutCrossFourByThree = 4
+)
+
+// Font type, defines generation method
+type FontType = int32
+
+const (
+ // Default font generation, anti-aliased
+ FontDefault = 0
+ // Bitmap font generation, no anti-aliasing
+ FontBitmap = 1
+ // SDF font generation, requires external shader
+ FontSdf = 2
+)
+
+// Color blending modes (pre-defined)
+type BlendMode = int32
+
+const (
+ // Blend textures considering alpha (default)
+ BlendAlpha = 0
+ // Blend textures adding colors
+ BlendAdditive = 1
+ // Blend textures multiplying colors
+ BlendMultiplied = 2
+ // Blend textures adding colors (alternative)
+ BlendAddColors = 3
+ // Blend textures subtracting colors (alternative)
+ BlendSubtractColors = 4
+ // Blend premultiplied textures considering alpha
+ BlendAlphaPremultiply = 5
+ // Blend textures using custom src/dst factors (use rlSetBlendFactors())
+ BlendCustom = 6
+ // Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate())
+ BlendCustomSeparate = 7
+)
+
+// Gesture
+type Gesture = int32
+
+const (
+ // No gesture
+ GestureNone = 0
+ // Tap gesture
+ GestureTap = 1
+ // Double tap gesture
+ GestureDoubletap = 2
+ // Hold gesture
+ GestureHold = 4
+ // Drag gesture
+ GestureDrag = 8
+ // Swipe right gesture
+ GestureSwipeRight = 16
+ // Swipe left gesture
+ GestureSwipeLeft = 32
+ // Swipe up gesture
+ GestureSwipeUp = 64
+ // Swipe down gesture
+ GestureSwipeDown = 128
+ // Pinch in gesture
+ GesturePinchIn = 256
+ // Pinch out gesture
+ GesturePinchOut = 512
+)
+
+// Camera system modes
+type CameraMode = int32
+
+const (
+ // Camera custom, controlled by user (UpdateCamera() does nothing)
+ CameraCustom = 0
+ // Camera free mode
+ CameraFree = 1
+ // Camera orbital, around target, zoom supported
+ CameraOrbital = 2
+ // Camera first person
+ CameraFirstPerson = 3
+ // Camera third person
+ CameraThirdPerson = 4
+)
+
+// Camera projection
+type CameraProjection = int32
+
+const (
+ // Perspective projection
+ CameraPerspective = 0
+ // Orthographic projection
+ CameraOrthographic = 1
+)
+
+// N-patch layout
+type NPatchLayout = int32
+
+const (
+ // Npatch layout: 3x3 tiles
+ NpatchNinePatch = 0
+ // Npatch layout: 1x3 tiles
+ NpatchThreePatchVertical = 1
+ // Npatch layout: 3x1 tiles
+ NpatchThreePatchHorizontal = 2
+)
diff --git a/wasm-runtime/rl/funcimport_gen_unformatted.go b/wasm-runtime/rl/funcimport_gen_unformatted.go
new file mode 100644
index 0000000..a4e5b1a
--- /dev/null
+++ b/wasm-runtime/rl/funcimport_gen_unformatted.go
@@ -0,0 +1,4589 @@
+// AUTOGENERATED FILE. DO NOT EDIT
+
+//go:build js
+
+package rl
+
+//go:wasmimport _raylib _InitWindow
+//go:noescape
+func initWindow(
+ Width int32,
+ Height int32,
+ Title cptr,
+)
+
+//go:wasmimport _raylib _CloseWindow
+//go:noescape
+func closeWindow()
+
+//go:wasmimport _raylib _WindowShouldClose
+//go:noescape
+func windowShouldClose(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowReady
+//go:noescape
+func isWindowReady(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowFullscreen
+//go:noescape
+func isWindowFullscreen(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowHidden
+//go:noescape
+func isWindowHidden(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowMinimized
+//go:noescape
+func isWindowMinimized(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowMaximized
+//go:noescape
+func isWindowMaximized(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowFocused
+//go:noescape
+func isWindowFocused(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowResized
+//go:noescape
+func isWindowResized(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsWindowState
+//go:noescape
+func isWindowState(
+ ret cptr,
+ Flag uint32,
+)
+
+//go:wasmimport _raylib _SetWindowState
+//go:noescape
+func setWindowState(
+ Flags uint32,
+)
+
+//go:wasmimport _raylib _ClearWindowState
+//go:noescape
+func clearWindowState(
+ Flags uint32,
+)
+
+//go:wasmimport _raylib _ToggleFullscreen
+//go:noescape
+func toggleFullscreen()
+
+//go:wasmimport _raylib _ToggleBorderlessWindowed
+//go:noescape
+func toggleBorderlessWindowed()
+
+//go:wasmimport _raylib _MaximizeWindow
+//go:noescape
+func maximizeWindow()
+
+//go:wasmimport _raylib _MinimizeWindow
+//go:noescape
+func minimizeWindow()
+
+//go:wasmimport _raylib _RestoreWindow
+//go:noescape
+func restoreWindow()
+
+//go:wasmimport _raylib _SetWindowIcon
+//go:noescape
+func setWindowIcon(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _SetWindowIcons
+//go:noescape
+func setWindowIcons(
+ Images cptr,
+ Count int32,
+)
+
+//go:wasmimport _raylib _SetWindowTitle
+//go:noescape
+func setWindowTitle(
+ Title cptr,
+)
+
+//go:wasmimport _raylib _SetWindowPosition
+//go:noescape
+func setWindowPosition(
+ X int32,
+ Y int32,
+)
+
+//go:wasmimport _raylib _SetWindowMonitor
+//go:noescape
+func setWindowMonitor(
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _SetWindowMinSize
+//go:noescape
+func setWindowMinSize(
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _SetWindowMaxSize
+//go:noescape
+func setWindowMaxSize(
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _SetWindowSize
+//go:noescape
+func setWindowSize(
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _SetWindowOpacity
+//go:noescape
+func setWindowOpacity(
+ Opacity float32,
+)
+
+//go:wasmimport _raylib _SetWindowFocused
+//go:noescape
+func setWindowFocused()
+
+//go:wasmimport _raylib _GetWindowHandle
+//go:noescape
+func getWindowHandle(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetScreenWidth
+//go:noescape
+func getScreenWidth(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetScreenHeight
+//go:noescape
+func getScreenHeight(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetRenderWidth
+//go:noescape
+func getRenderWidth(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetRenderHeight
+//go:noescape
+func getRenderHeight(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetMonitorCount
+//go:noescape
+func getMonitorCount(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetCurrentMonitor
+//go:noescape
+func getCurrentMonitor(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetMonitorPosition
+//go:noescape
+func getMonitorPosition(
+ ret cptr,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetMonitorWidth
+//go:noescape
+func getMonitorWidth(
+ ret int32,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetMonitorHeight
+//go:noescape
+func getMonitorHeight(
+ ret int32,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetMonitorPhysicalWidth
+//go:noescape
+func getMonitorPhysicalWidth(
+ ret int32,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetMonitorPhysicalHeight
+//go:noescape
+func getMonitorPhysicalHeight(
+ ret int32,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetMonitorRefreshRate
+//go:noescape
+func getMonitorRefreshRate(
+ ret int32,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _GetWindowPosition
+//go:noescape
+func getWindowPosition(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetWindowScaleDPI
+//go:noescape
+func getWindowScaleDPI(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetMonitorName
+//go:noescape
+func getMonitorName(
+ ret cptr,
+ Monitor int32,
+)
+
+//go:wasmimport _raylib _SetClipboardText
+//go:noescape
+func setClipboardText(
+ Text cptr,
+)
+
+//go:wasmimport _raylib _GetClipboardText
+//go:noescape
+func getClipboardText(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetClipboardImage
+//go:noescape
+func getClipboardImage(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _EnableEventWaiting
+//go:noescape
+func enableEventWaiting()
+
+//go:wasmimport _raylib _DisableEventWaiting
+//go:noescape
+func disableEventWaiting()
+
+//go:wasmimport _raylib _ShowCursor
+//go:noescape
+func showCursor()
+
+//go:wasmimport _raylib _HideCursor
+//go:noescape
+func hideCursor()
+
+//go:wasmimport _raylib _IsCursorHidden
+//go:noescape
+func isCursorHidden(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _EnableCursor
+//go:noescape
+func enableCursor()
+
+//go:wasmimport _raylib _DisableCursor
+//go:noescape
+func disableCursor()
+
+//go:wasmimport _raylib _IsCursorOnScreen
+//go:noescape
+func isCursorOnScreen(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _ClearBackground
+//go:noescape
+func clearBackground(
+ Color cptr,
+)
+
+//go:wasmimport _raylib _BeginDrawing
+//go:noescape
+func beginDrawing()
+
+//go:wasmimport _raylib _EndDrawing
+//go:noescape
+func endDrawing()
+
+//go:wasmimport _raylib _BeginMode2D
+//go:noescape
+func beginMode2D(
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _EndMode2D
+//go:noescape
+func endMode2D()
+
+//go:wasmimport _raylib _BeginMode3D
+//go:noescape
+func beginMode3D(
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _EndMode3D
+//go:noescape
+func endMode3D()
+
+//go:wasmimport _raylib _BeginTextureMode
+//go:noescape
+func beginTextureMode(
+ Target cptr,
+)
+
+//go:wasmimport _raylib _EndTextureMode
+//go:noescape
+func endTextureMode()
+
+//go:wasmimport _raylib _BeginShaderMode
+//go:noescape
+func beginShaderMode(
+ Shader cptr,
+)
+
+//go:wasmimport _raylib _EndShaderMode
+//go:noescape
+func endShaderMode()
+
+//go:wasmimport _raylib _BeginBlendMode
+//go:noescape
+func beginBlendMode(
+ Mode int32,
+)
+
+//go:wasmimport _raylib _EndBlendMode
+//go:noescape
+func endBlendMode()
+
+//go:wasmimport _raylib _BeginScissorMode
+//go:noescape
+func beginScissorMode(
+ X int32,
+ Y int32,
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _EndScissorMode
+//go:noescape
+func endScissorMode()
+
+//go:wasmimport _raylib _BeginVrStereoMode
+//go:noescape
+func beginVrStereoMode(
+ Config cptr,
+)
+
+//go:wasmimport _raylib _EndVrStereoMode
+//go:noescape
+func endVrStereoMode()
+
+//go:wasmimport _raylib _LoadVrStereoConfig
+//go:noescape
+func loadVrStereoConfig(
+ ret cptr,
+ Device cptr,
+)
+
+//go:wasmimport _raylib _UnloadVrStereoConfig
+//go:noescape
+func unloadVrStereoConfig(
+ Config cptr,
+)
+
+//go:wasmimport _raylib _LoadShader
+//go:noescape
+func loadShader(
+ ret cptr,
+ VsFileName cptr,
+ FsFileName cptr,
+)
+
+//go:wasmimport _raylib _LoadShaderFromMemory
+//go:noescape
+func loadShaderFromMemory(
+ ret cptr,
+ VsCode cptr,
+ FsCode cptr,
+)
+
+//go:wasmimport _raylib _IsShaderValid
+//go:noescape
+func isShaderValid(
+ ret cptr,
+ Shader cptr,
+)
+
+//go:wasmimport _raylib _GetShaderLocation
+//go:noescape
+func getShaderLocation(
+ ret int32,
+ Shader cptr,
+ UniformName cptr,
+)
+
+//go:wasmimport _raylib _GetShaderLocationAttrib
+//go:noescape
+func getShaderLocationAttrib(
+ ret int32,
+ Shader cptr,
+ AttribName cptr,
+)
+
+//go:wasmimport _raylib _SetShaderValue
+//go:noescape
+func setShaderValue(
+ Shader cptr,
+ LocIndex int32,
+ Value cptr,
+ UniformType int32,
+)
+
+//go:wasmimport _raylib _SetShaderValueV
+//go:noescape
+func setShaderValueV(
+ Shader cptr,
+ LocIndex int32,
+ Value cptr,
+ UniformType int32,
+ Count int32,
+)
+
+//go:wasmimport _raylib _SetShaderValueMatrix
+//go:noescape
+func setShaderValueMatrix(
+ Shader cptr,
+ LocIndex int32,
+ Mat cptr,
+)
+
+//go:wasmimport _raylib _SetShaderValueTexture
+//go:noescape
+func setShaderValueTexture(
+ Shader cptr,
+ LocIndex int32,
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _UnloadShader
+//go:noescape
+func unloadShader(
+ Shader cptr,
+)
+
+//go:wasmimport _raylib _GetScreenToWorldRay
+//go:noescape
+func getScreenToWorldRay(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _GetScreenToWorldRayEx
+//go:noescape
+func getScreenToWorldRayEx(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _GetWorldToScreen
+//go:noescape
+func getWorldToScreen(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _GetWorldToScreenEx
+//go:noescape
+func getWorldToScreenEx(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _GetWorldToScreen2D
+//go:noescape
+func getWorldToScreen2D(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _GetScreenToWorld2D
+//go:noescape
+func getScreenToWorld2D(
+ ret cptr,
+ Position cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _GetCameraMatrix
+//go:noescape
+func getCameraMatrix(
+ ret cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _GetCameraMatrix2D
+//go:noescape
+func getCameraMatrix2D(
+ ret cptr,
+ Camera cptr,
+)
+
+//go:wasmimport _raylib _SetTargetFPS
+//go:noescape
+func setTargetFPS(
+ Fps int32,
+)
+
+//go:wasmimport _raylib _GetFrameTime
+//go:noescape
+func getFrameTime(
+ ret float32,
+)
+
+//go:wasmimport _raylib _GetTime
+//go:noescape
+func getTime(
+ ret float64,
+)
+
+//go:wasmimport _raylib _GetFPS
+//go:noescape
+func getFPS(
+ ret int32,
+)
+
+//go:wasmimport _raylib _SwapScreenBuffer
+//go:noescape
+func swapScreenBuffer()
+
+//go:wasmimport _raylib _PollInputEvents
+//go:noescape
+func pollInputEvents()
+
+//go:wasmimport _raylib _WaitTime
+//go:noescape
+func waitTime(
+ Seconds float64,
+)
+
+//go:wasmimport _raylib _SetRandomSeed
+//go:noescape
+func setRandomSeed(
+ Seed uint32,
+)
+
+//go:wasmimport _raylib _GetRandomValue
+//go:noescape
+func getRandomValue(
+ ret int32,
+ Min int32,
+ Max int32,
+)
+
+//go:wasmimport _raylib _LoadRandomSequence
+//go:noescape
+func loadRandomSequence(
+ ret cptr,
+ Count uint32,
+ Min int32,
+ Max int32,
+)
+
+//go:wasmimport _raylib _UnloadRandomSequence
+//go:noescape
+func unloadRandomSequence(
+ Sequence cptr,
+)
+
+//go:wasmimport _raylib _TakeScreenshot
+//go:noescape
+func takeScreenshot(
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _SetConfigFlags
+//go:noescape
+func setConfigFlags(
+ Flags uint32,
+)
+
+//go:wasmimport _raylib _OpenURL
+//go:noescape
+func openURL(
+ Url cptr,
+)
+
+//go:wasmimport _raylib _SetTraceLogLevel
+//go:noescape
+func setTraceLogLevel(
+ LogLevel int32,
+)
+
+//go:wasmimport _raylib _TraceLog
+//go:noescape
+func traceLog(
+ LogLevel int32,
+ Text cptr,
+ Args cptr,
+)
+
+//go:wasmimport _raylib _SetTraceLogCallback
+//go:noescape
+func setTraceLogCallback(
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _MemAlloc
+//go:noescape
+func memAlloc(
+ ret cptr,
+ Size uint32,
+)
+
+//go:wasmimport _raylib _MemRealloc
+//go:noescape
+func memRealloc(
+ ret cptr,
+ Ptr cptr,
+ Size uint32,
+)
+
+//go:wasmimport _raylib _MemFree
+//go:noescape
+func memFree(
+ Ptr cptr,
+)
+
+//go:wasmimport _raylib _LoadFileData
+//go:noescape
+func loadFileData(
+ ret cptr,
+ FileName cptr,
+ DataSize cptr,
+)
+
+//go:wasmimport _raylib _UnloadFileData
+//go:noescape
+func unloadFileData(
+ Data cptr,
+)
+
+//go:wasmimport _raylib _SaveFileData
+//go:noescape
+func saveFileData(
+ ret cptr,
+ FileName cptr,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _ExportDataAsCode
+//go:noescape
+func exportDataAsCode(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadFileText
+//go:noescape
+func loadFileText(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _UnloadFileText
+//go:noescape
+func unloadFileText(
+ Text cptr,
+)
+
+//go:wasmimport _raylib _SaveFileText
+//go:noescape
+func saveFileText(
+ ret cptr,
+ FileName cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _SetLoadFileDataCallback
+//go:noescape
+func setLoadFileDataCallback(
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _SetSaveFileDataCallback
+//go:noescape
+func setSaveFileDataCallback(
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _SetLoadFileTextCallback
+//go:noescape
+func setLoadFileTextCallback(
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _SetSaveFileTextCallback
+//go:noescape
+func setSaveFileTextCallback(
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _FileRename
+//go:noescape
+func fileRename(
+ ret int32,
+ FileName cptr,
+ FileRename cptr,
+)
+
+//go:wasmimport _raylib _FileRemove
+//go:noescape
+func fileRemove(
+ ret int32,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _FileCopy
+//go:noescape
+func fileCopy(
+ ret int32,
+ SrcPath cptr,
+ DstPath cptr,
+)
+
+//go:wasmimport _raylib _FileMove
+//go:noescape
+func fileMove(
+ ret int32,
+ SrcPath cptr,
+ DstPath cptr,
+)
+
+//go:wasmimport _raylib _FileTextReplace
+//go:noescape
+func fileTextReplace(
+ ret int32,
+ FileName cptr,
+ Search cptr,
+ Replacement cptr,
+)
+
+//go:wasmimport _raylib _FileTextFindIndex
+//go:noescape
+func fileTextFindIndex(
+ ret int32,
+ FileName cptr,
+ Search cptr,
+)
+
+//go:wasmimport _raylib _FileExists
+//go:noescape
+func fileExists(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _DirectoryExists
+//go:noescape
+func directoryExists(
+ ret cptr,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _IsFileExtension
+//go:noescape
+func isFileExtension(
+ ret cptr,
+ FileName cptr,
+ Ext cptr,
+)
+
+//go:wasmimport _raylib _GetFileLength
+//go:noescape
+func getFileLength(
+ ret int32,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _GetFileModTime
+//go:noescape
+func getFileModTime(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _GetFileExtension
+//go:noescape
+func getFileExtension(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _GetFileName
+//go:noescape
+func getFileName(
+ ret cptr,
+ FilePath cptr,
+)
+
+//go:wasmimport _raylib _GetFileNameWithoutExt
+//go:noescape
+func getFileNameWithoutExt(
+ ret cptr,
+ FilePath cptr,
+)
+
+//go:wasmimport _raylib _GetDirectoryPath
+//go:noescape
+func getDirectoryPath(
+ ret cptr,
+ FilePath cptr,
+)
+
+//go:wasmimport _raylib _GetPrevDirectoryPath
+//go:noescape
+func getPrevDirectoryPath(
+ ret cptr,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _GetWorkingDirectory
+//go:noescape
+func getWorkingDirectory(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetApplicationDirectory
+//go:noescape
+func getApplicationDirectory(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _MakeDirectory
+//go:noescape
+func makeDirectory(
+ ret int32,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _ChangeDirectory
+//go:noescape
+func changeDirectory(
+ ret cptr,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _IsPathFile
+//go:noescape
+func isPathFile(
+ ret cptr,
+ Path cptr,
+)
+
+//go:wasmimport _raylib _IsFileNameValid
+//go:noescape
+func isFileNameValid(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadDirectoryFiles
+//go:noescape
+func loadDirectoryFiles(
+ ret cptr,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _LoadDirectoryFilesEx
+//go:noescape
+func loadDirectoryFilesEx(
+ ret cptr,
+ BasePath cptr,
+ Filter cptr,
+ ScanSubdirs cptr,
+)
+
+//go:wasmimport _raylib _UnloadDirectoryFiles
+//go:noescape
+func unloadDirectoryFiles(
+ Files cptr,
+)
+
+//go:wasmimport _raylib _IsFileDropped
+//go:noescape
+func isFileDropped(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _LoadDroppedFiles
+//go:noescape
+func loadDroppedFiles(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _UnloadDroppedFiles
+//go:noescape
+func unloadDroppedFiles(
+ Files cptr,
+)
+
+//go:wasmimport _raylib _GetDirectoryFileCount
+//go:noescape
+func getDirectoryFileCount(
+ ret uint32,
+ DirPath cptr,
+)
+
+//go:wasmimport _raylib _GetDirectoryFileCountEx
+//go:noescape
+func getDirectoryFileCountEx(
+ ret uint32,
+ BasePath cptr,
+ Filter cptr,
+ ScanSubdirs cptr,
+)
+
+//go:wasmimport _raylib _CompressData
+//go:noescape
+func compressData(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+ CompDataSize cptr,
+)
+
+//go:wasmimport _raylib _DecompressData
+//go:noescape
+func decompressData(
+ ret cptr,
+ CompData cptr,
+ CompDataSize int32,
+ DataSize cptr,
+)
+
+//go:wasmimport _raylib _EncodeDataBase64
+//go:noescape
+func encodeDataBase64(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+ OutputSize cptr,
+)
+
+//go:wasmimport _raylib _DecodeDataBase64
+//go:noescape
+func decodeDataBase64(
+ ret cptr,
+ Text cptr,
+ OutputSize cptr,
+)
+
+//go:wasmimport _raylib _ComputeCRC32
+//go:noescape
+func computeCRC32(
+ ret uint32,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _ComputeMD5
+//go:noescape
+func computeMD5(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _ComputeSHA1
+//go:noescape
+func computeSHA1(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _ComputeSHA256
+//go:noescape
+func computeSHA256(
+ ret cptr,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _LoadAutomationEventList
+//go:noescape
+func loadAutomationEventList(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _UnloadAutomationEventList
+//go:noescape
+func unloadAutomationEventList(
+ List cptr,
+)
+
+//go:wasmimport _raylib _ExportAutomationEventList
+//go:noescape
+func exportAutomationEventList(
+ ret cptr,
+ List cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _SetAutomationEventList
+//go:noescape
+func setAutomationEventList(
+ List cptr,
+)
+
+//go:wasmimport _raylib _SetAutomationEventBaseFrame
+//go:noescape
+func setAutomationEventBaseFrame(
+ Frame int32,
+)
+
+//go:wasmimport _raylib _StartAutomationEventRecording
+//go:noescape
+func startAutomationEventRecording()
+
+//go:wasmimport _raylib _StopAutomationEventRecording
+//go:noescape
+func stopAutomationEventRecording()
+
+//go:wasmimport _raylib _PlayAutomationEvent
+//go:noescape
+func playAutomationEvent(
+ Event cptr,
+)
+
+//go:wasmimport _raylib _IsKeyPressed
+//go:noescape
+func isKeyPressed(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _IsKeyPressedRepeat
+//go:noescape
+func isKeyPressedRepeat(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _IsKeyDown
+//go:noescape
+func isKeyDown(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _IsKeyReleased
+//go:noescape
+func isKeyReleased(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _IsKeyUp
+//go:noescape
+func isKeyUp(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _GetKeyPressed
+//go:noescape
+func getKeyPressed(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetCharPressed
+//go:noescape
+func getCharPressed(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetKeyName
+//go:noescape
+func getKeyName(
+ ret cptr,
+ Key int32,
+)
+
+//go:wasmimport _raylib _SetExitKey
+//go:noescape
+func setExitKey(
+ Key int32,
+)
+
+//go:wasmimport _raylib _IsGamepadAvailable
+//go:noescape
+func isGamepadAvailable(
+ ret cptr,
+ Gamepad int32,
+)
+
+//go:wasmimport _raylib _GetGamepadName
+//go:noescape
+func getGamepadName(
+ ret cptr,
+ Gamepad int32,
+)
+
+//go:wasmimport _raylib _IsGamepadButtonPressed
+//go:noescape
+func isGamepadButtonPressed(
+ ret cptr,
+ Gamepad int32,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsGamepadButtonDown
+//go:noescape
+func isGamepadButtonDown(
+ ret cptr,
+ Gamepad int32,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsGamepadButtonReleased
+//go:noescape
+func isGamepadButtonReleased(
+ ret cptr,
+ Gamepad int32,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsGamepadButtonUp
+//go:noescape
+func isGamepadButtonUp(
+ ret cptr,
+ Gamepad int32,
+ Button int32,
+)
+
+//go:wasmimport _raylib _GetGamepadButtonPressed
+//go:noescape
+func getGamepadButtonPressed(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetGamepadAxisCount
+//go:noescape
+func getGamepadAxisCount(
+ ret int32,
+ Gamepad int32,
+)
+
+//go:wasmimport _raylib _GetGamepadAxisMovement
+//go:noescape
+func getGamepadAxisMovement(
+ ret float32,
+ Gamepad int32,
+ Axis int32,
+)
+
+//go:wasmimport _raylib _SetGamepadMappings
+//go:noescape
+func setGamepadMappings(
+ ret int32,
+ Mappings cptr,
+)
+
+//go:wasmimport _raylib _SetGamepadVibration
+//go:noescape
+func setGamepadVibration(
+ Gamepad int32,
+ LeftMotor float32,
+ RightMotor float32,
+ Duration float32,
+)
+
+//go:wasmimport _raylib _IsMouseButtonPressed
+//go:noescape
+func isMouseButtonPressed(
+ ret cptr,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsMouseButtonDown
+//go:noescape
+func isMouseButtonDown(
+ ret cptr,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsMouseButtonReleased
+//go:noescape
+func isMouseButtonReleased(
+ ret cptr,
+ Button int32,
+)
+
+//go:wasmimport _raylib _IsMouseButtonUp
+//go:noescape
+func isMouseButtonUp(
+ ret cptr,
+ Button int32,
+)
+
+//go:wasmimport _raylib _GetMouseX
+//go:noescape
+func getMouseX(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetMouseY
+//go:noescape
+func getMouseY(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetMousePosition
+//go:noescape
+func getMousePosition(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetMouseDelta
+//go:noescape
+func getMouseDelta(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _SetMousePosition
+//go:noescape
+func setMousePosition(
+ X int32,
+ Y int32,
+)
+
+//go:wasmimport _raylib _SetMouseOffset
+//go:noescape
+func setMouseOffset(
+ OffsetX int32,
+ OffsetY int32,
+)
+
+//go:wasmimport _raylib _SetMouseScale
+//go:noescape
+func setMouseScale(
+ ScaleX float32,
+ ScaleY float32,
+)
+
+//go:wasmimport _raylib _GetMouseWheelMove
+//go:noescape
+func getMouseWheelMove(
+ ret float32,
+)
+
+//go:wasmimport _raylib _GetMouseWheelMoveV
+//go:noescape
+func getMouseWheelMoveV(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _SetMouseCursor
+//go:noescape
+func setMouseCursor(
+ Cursor int32,
+)
+
+//go:wasmimport _raylib _GetTouchX
+//go:noescape
+func getTouchX(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetTouchY
+//go:noescape
+func getTouchY(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetTouchPosition
+//go:noescape
+func getTouchPosition(
+ ret cptr,
+ Index int32,
+)
+
+//go:wasmimport _raylib _GetTouchPointId
+//go:noescape
+func getTouchPointId(
+ ret int32,
+ Index int32,
+)
+
+//go:wasmimport _raylib _GetTouchPointCount
+//go:noescape
+func getTouchPointCount(
+ ret int32,
+)
+
+//go:wasmimport _raylib _SetGesturesEnabled
+//go:noescape
+func setGesturesEnabled(
+ Flags uint32,
+)
+
+//go:wasmimport _raylib _IsGestureDetected
+//go:noescape
+func isGestureDetected(
+ ret cptr,
+ Gesture uint32,
+)
+
+//go:wasmimport _raylib _GetGestureDetected
+//go:noescape
+func getGestureDetected(
+ ret int32,
+)
+
+//go:wasmimport _raylib _GetGestureHoldDuration
+//go:noescape
+func getGestureHoldDuration(
+ ret float32,
+)
+
+//go:wasmimport _raylib _GetGestureDragVector
+//go:noescape
+func getGestureDragVector(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetGestureDragAngle
+//go:noescape
+func getGestureDragAngle(
+ ret float32,
+)
+
+//go:wasmimport _raylib _GetGesturePinchVector
+//go:noescape
+func getGesturePinchVector(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetGesturePinchAngle
+//go:noescape
+func getGesturePinchAngle(
+ ret float32,
+)
+
+//go:wasmimport _raylib _UpdateCamera
+//go:noescape
+func updateCamera(
+ Camera cptr,
+ Mode int32,
+)
+
+//go:wasmimport _raylib _UpdateCameraPro
+//go:noescape
+func updateCameraPro(
+ Camera cptr,
+ Movement cptr,
+ Rotation cptr,
+ Zoom float32,
+)
+
+//go:wasmimport _raylib _SetShapesTexture
+//go:noescape
+func setShapesTexture(
+ Texture cptr,
+ Source cptr,
+)
+
+//go:wasmimport _raylib _GetShapesTexture
+//go:noescape
+func getShapesTexture(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _GetShapesTextureRectangle
+//go:noescape
+func getShapesTextureRectangle(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _DrawPixel
+//go:noescape
+func drawPixel(
+ PosX int32,
+ PosY int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPixelV
+//go:noescape
+func drawPixelV(
+ Position cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLine
+//go:noescape
+func drawLine(
+ StartPosX int32,
+ StartPosY int32,
+ EndPosX int32,
+ EndPosY int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLineV
+//go:noescape
+func drawLineV(
+ StartPos cptr,
+ EndPos cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLineEx
+//go:noescape
+func drawLineEx(
+ StartPos cptr,
+ EndPos cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLineStrip
+//go:noescape
+func drawLineStrip(
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLineBezier
+//go:noescape
+func drawLineBezier(
+ StartPos cptr,
+ EndPos cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawLineDashed
+//go:noescape
+func drawLineDashed(
+ StartPos cptr,
+ EndPos cptr,
+ DashSize int32,
+ SpaceSize int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircle
+//go:noescape
+func drawCircle(
+ CenterX int32,
+ CenterY int32,
+ Radius float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleSector
+//go:noescape
+func drawCircleSector(
+ Center cptr,
+ Radius float32,
+ StartAngle float32,
+ EndAngle float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleSectorLines
+//go:noescape
+func drawCircleSectorLines(
+ Center cptr,
+ Radius float32,
+ StartAngle float32,
+ EndAngle float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleGradient
+//go:noescape
+func drawCircleGradient(
+ CenterX int32,
+ CenterY int32,
+ Radius float32,
+ Inner cptr,
+ Outer cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleV
+//go:noescape
+func drawCircleV(
+ Center cptr,
+ Radius float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleLines
+//go:noescape
+func drawCircleLines(
+ CenterX int32,
+ CenterY int32,
+ Radius float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircleLinesV
+//go:noescape
+func drawCircleLinesV(
+ Center cptr,
+ Radius float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawEllipse
+//go:noescape
+func drawEllipse(
+ CenterX int32,
+ CenterY int32,
+ RadiusH float32,
+ RadiusV float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawEllipseV
+//go:noescape
+func drawEllipseV(
+ Center cptr,
+ RadiusH float32,
+ RadiusV float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawEllipseLines
+//go:noescape
+func drawEllipseLines(
+ CenterX int32,
+ CenterY int32,
+ RadiusH float32,
+ RadiusV float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawEllipseLinesV
+//go:noescape
+func drawEllipseLinesV(
+ Center cptr,
+ RadiusH float32,
+ RadiusV float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRing
+//go:noescape
+func drawRing(
+ Center cptr,
+ InnerRadius float32,
+ OuterRadius float32,
+ StartAngle float32,
+ EndAngle float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRingLines
+//go:noescape
+func drawRingLines(
+ Center cptr,
+ InnerRadius float32,
+ OuterRadius float32,
+ StartAngle float32,
+ EndAngle float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangle
+//go:noescape
+func drawRectangle(
+ PosX int32,
+ PosY int32,
+ Width int32,
+ Height int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleV
+//go:noescape
+func drawRectangleV(
+ Position cptr,
+ Size cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleRec
+//go:noescape
+func drawRectangleRec(
+ Rec cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectanglePro
+//go:noescape
+func drawRectanglePro(
+ Rec cptr,
+ Origin cptr,
+ Rotation float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleGradientV
+//go:noescape
+func drawRectangleGradientV(
+ PosX int32,
+ PosY int32,
+ Width int32,
+ Height int32,
+ Top cptr,
+ Bottom cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleGradientH
+//go:noescape
+func drawRectangleGradientH(
+ PosX int32,
+ PosY int32,
+ Width int32,
+ Height int32,
+ Left cptr,
+ Right cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleGradientEx
+//go:noescape
+func drawRectangleGradientEx(
+ Rec cptr,
+ TopLeft cptr,
+ BottomLeft cptr,
+ BottomRight cptr,
+ TopRight cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleLines
+//go:noescape
+func drawRectangleLines(
+ PosX int32,
+ PosY int32,
+ Width int32,
+ Height int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleLinesEx
+//go:noescape
+func drawRectangleLinesEx(
+ Rec cptr,
+ LineThick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleRounded
+//go:noescape
+func drawRectangleRounded(
+ Rec cptr,
+ Roundness float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleRoundedLines
+//go:noescape
+func drawRectangleRoundedLines(
+ Rec cptr,
+ Roundness float32,
+ Segments int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRectangleRoundedLinesEx
+//go:noescape
+func drawRectangleRoundedLinesEx(
+ Rec cptr,
+ Roundness float32,
+ Segments int32,
+ LineThick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangle
+//go:noescape
+func drawTriangle(
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangleLines
+//go:noescape
+func drawTriangleLines(
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangleFan
+//go:noescape
+func drawTriangleFan(
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangleStrip
+//go:noescape
+func drawTriangleStrip(
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPoly
+//go:noescape
+func drawPoly(
+ Center cptr,
+ Sides int32,
+ Radius float32,
+ Rotation float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPolyLines
+//go:noescape
+func drawPolyLines(
+ Center cptr,
+ Sides int32,
+ Radius float32,
+ Rotation float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPolyLinesEx
+//go:noescape
+func drawPolyLinesEx(
+ Center cptr,
+ Sides int32,
+ Radius float32,
+ Rotation float32,
+ LineThick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineLinear
+//go:noescape
+func drawSplineLinear(
+ Points cptr,
+ PointCount int32,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineBasis
+//go:noescape
+func drawSplineBasis(
+ Points cptr,
+ PointCount int32,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineCatmullRom
+//go:noescape
+func drawSplineCatmullRom(
+ Points cptr,
+ PointCount int32,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineBezierQuadratic
+//go:noescape
+func drawSplineBezierQuadratic(
+ Points cptr,
+ PointCount int32,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineBezierCubic
+//go:noescape
+func drawSplineBezierCubic(
+ Points cptr,
+ PointCount int32,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineSegmentLinear
+//go:noescape
+func drawSplineSegmentLinear(
+ P1 cptr,
+ P2 cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineSegmentBasis
+//go:noescape
+func drawSplineSegmentBasis(
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+ P4 cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineSegmentCatmullRom
+//go:noescape
+func drawSplineSegmentCatmullRom(
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+ P4 cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineSegmentBezierQuadratic
+//go:noescape
+func drawSplineSegmentBezierQuadratic(
+ P1 cptr,
+ C2 cptr,
+ P3 cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSplineSegmentBezierCubic
+//go:noescape
+func drawSplineSegmentBezierCubic(
+ P1 cptr,
+ C2 cptr,
+ C3 cptr,
+ P4 cptr,
+ Thick float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _GetSplinePointLinear
+//go:noescape
+func getSplinePointLinear(
+ ret cptr,
+ StartPos cptr,
+ EndPos cptr,
+ T float32,
+)
+
+//go:wasmimport _raylib _GetSplinePointBasis
+//go:noescape
+func getSplinePointBasis(
+ ret cptr,
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+ P4 cptr,
+ T float32,
+)
+
+//go:wasmimport _raylib _GetSplinePointCatmullRom
+//go:noescape
+func getSplinePointCatmullRom(
+ ret cptr,
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+ P4 cptr,
+ T float32,
+)
+
+//go:wasmimport _raylib _GetSplinePointBezierQuad
+//go:noescape
+func getSplinePointBezierQuad(
+ ret cptr,
+ P1 cptr,
+ C2 cptr,
+ P3 cptr,
+ T float32,
+)
+
+//go:wasmimport _raylib _GetSplinePointBezierCubic
+//go:noescape
+func getSplinePointBezierCubic(
+ ret cptr,
+ P1 cptr,
+ C2 cptr,
+ C3 cptr,
+ P4 cptr,
+ T float32,
+)
+
+//go:wasmimport _raylib _CheckCollisionRecs
+//go:noescape
+func checkCollisionRecs(
+ ret cptr,
+ Rec1 cptr,
+ Rec2 cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionCircles
+//go:noescape
+func checkCollisionCircles(
+ ret cptr,
+ Center1 cptr,
+ Radius1 float32,
+ Center2 cptr,
+ Radius2 float32,
+)
+
+//go:wasmimport _raylib _CheckCollisionCircleRec
+//go:noescape
+func checkCollisionCircleRec(
+ ret cptr,
+ Center cptr,
+ Radius float32,
+ Rec cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionCircleLine
+//go:noescape
+func checkCollisionCircleLine(
+ ret cptr,
+ Center cptr,
+ Radius float32,
+ P1 cptr,
+ P2 cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionPointRec
+//go:noescape
+func checkCollisionPointRec(
+ ret cptr,
+ Point cptr,
+ Rec cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionPointCircle
+//go:noescape
+func checkCollisionPointCircle(
+ ret cptr,
+ Point cptr,
+ Center cptr,
+ Radius float32,
+)
+
+//go:wasmimport _raylib _CheckCollisionPointTriangle
+//go:noescape
+func checkCollisionPointTriangle(
+ ret cptr,
+ Point cptr,
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionPointLine
+//go:noescape
+func checkCollisionPointLine(
+ ret cptr,
+ Point cptr,
+ P1 cptr,
+ P2 cptr,
+ Threshold int32,
+)
+
+//go:wasmimport _raylib _CheckCollisionPointPoly
+//go:noescape
+func checkCollisionPointPoly(
+ ret cptr,
+ Point cptr,
+ Points cptr,
+ PointCount int32,
+)
+
+//go:wasmimport _raylib _CheckCollisionLines
+//go:noescape
+func checkCollisionLines(
+ ret cptr,
+ StartPos1 cptr,
+ EndPos1 cptr,
+ StartPos2 cptr,
+ EndPos2 cptr,
+ CollisionPoint cptr,
+)
+
+//go:wasmimport _raylib _GetCollisionRec
+//go:noescape
+func getCollisionRec(
+ ret cptr,
+ Rec1 cptr,
+ Rec2 cptr,
+)
+
+//go:wasmimport _raylib _LoadImage
+//go:noescape
+func loadImage(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadImageRaw
+//go:noescape
+func loadImageRaw(
+ ret cptr,
+ FileName cptr,
+ Width int32,
+ Height int32,
+ Format int32,
+ HeaderSize int32,
+)
+
+//go:wasmimport _raylib _LoadImageAnim
+//go:noescape
+func loadImageAnim(
+ ret cptr,
+ FileName cptr,
+ Frames cptr,
+)
+
+//go:wasmimport _raylib _LoadImageAnimFromMemory
+//go:noescape
+func loadImageAnimFromMemory(
+ ret cptr,
+ FileType cptr,
+ FileData cptr,
+ DataSize int32,
+ Frames cptr,
+)
+
+//go:wasmimport _raylib _LoadImageFromMemory
+//go:noescape
+func loadImageFromMemory(
+ ret cptr,
+ FileType cptr,
+ FileData cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _LoadImageFromTexture
+//go:noescape
+func loadImageFromTexture(
+ ret cptr,
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _LoadImageFromScreen
+//go:noescape
+func loadImageFromScreen(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsImageValid
+//go:noescape
+func isImageValid(
+ ret cptr,
+ Image cptr,
+)
+
+//go:wasmimport _raylib _UnloadImage
+//go:noescape
+func unloadImage(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ExportImage
+//go:noescape
+func exportImage(
+ ret cptr,
+ Image cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _ExportImageToMemory
+//go:noescape
+func exportImageToMemory(
+ ret cptr,
+ Image cptr,
+ FileType cptr,
+ FileSize cptr,
+)
+
+//go:wasmimport _raylib _ExportImageAsCode
+//go:noescape
+func exportImageAsCode(
+ ret cptr,
+ Image cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _GenImageColor
+//go:noescape
+func genImageColor(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _GenImageGradientLinear
+//go:noescape
+func genImageGradientLinear(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Direction int32,
+ Start cptr,
+ End cptr,
+)
+
+//go:wasmimport _raylib _GenImageGradientRadial
+//go:noescape
+func genImageGradientRadial(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Density float32,
+ Inner cptr,
+ Outer cptr,
+)
+
+//go:wasmimport _raylib _GenImageGradientSquare
+//go:noescape
+func genImageGradientSquare(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Density float32,
+ Inner cptr,
+ Outer cptr,
+)
+
+//go:wasmimport _raylib _GenImageChecked
+//go:noescape
+func genImageChecked(
+ ret cptr,
+ Width int32,
+ Height int32,
+ ChecksX int32,
+ ChecksY int32,
+ Col1 cptr,
+ Col2 cptr,
+)
+
+//go:wasmimport _raylib _GenImageWhiteNoise
+//go:noescape
+func genImageWhiteNoise(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Factor float32,
+)
+
+//go:wasmimport _raylib _GenImagePerlinNoise
+//go:noescape
+func genImagePerlinNoise(
+ ret cptr,
+ Width int32,
+ Height int32,
+ OffsetX int32,
+ OffsetY int32,
+ Scale float32,
+)
+
+//go:wasmimport _raylib _GenImageCellular
+//go:noescape
+func genImageCellular(
+ ret cptr,
+ Width int32,
+ Height int32,
+ TileSize int32,
+)
+
+//go:wasmimport _raylib _GenImageText
+//go:noescape
+func genImageText(
+ ret cptr,
+ Width int32,
+ Height int32,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _ImageCopy
+//go:noescape
+func imageCopy(
+ ret cptr,
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageFromImage
+//go:noescape
+func imageFromImage(
+ ret cptr,
+ Image cptr,
+ Rec cptr,
+)
+
+//go:wasmimport _raylib _ImageFromChannel
+//go:noescape
+func imageFromChannel(
+ ret cptr,
+ Image cptr,
+ SelectedChannel int32,
+)
+
+//go:wasmimport _raylib _ImageText
+//go:noescape
+func imageText(
+ ret cptr,
+ Text cptr,
+ FontSize int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageTextEx
+//go:noescape
+func imageTextEx(
+ ret cptr,
+ Font cptr,
+ Text cptr,
+ FontSize float32,
+ Spacing float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _ImageFormat
+//go:noescape
+func imageFormat(
+ Image cptr,
+ NewFormat int32,
+)
+
+//go:wasmimport _raylib _ImageToPOT
+//go:noescape
+func imageToPOT(
+ Image cptr,
+ Fill cptr,
+)
+
+//go:wasmimport _raylib _ImageCrop
+//go:noescape
+func imageCrop(
+ Image cptr,
+ Crop cptr,
+)
+
+//go:wasmimport _raylib _ImageAlphaCrop
+//go:noescape
+func imageAlphaCrop(
+ Image cptr,
+ Threshold float32,
+)
+
+//go:wasmimport _raylib _ImageAlphaClear
+//go:noescape
+func imageAlphaClear(
+ Image cptr,
+ Color cptr,
+ Threshold float32,
+)
+
+//go:wasmimport _raylib _ImageAlphaMask
+//go:noescape
+func imageAlphaMask(
+ Image cptr,
+ AlphaMask cptr,
+)
+
+//go:wasmimport _raylib _ImageAlphaPremultiply
+//go:noescape
+func imageAlphaPremultiply(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageBlurGaussian
+//go:noescape
+func imageBlurGaussian(
+ Image cptr,
+ BlurSize int32,
+)
+
+//go:wasmimport _raylib _ImageKernelConvolution
+//go:noescape
+func imageKernelConvolution(
+ Image cptr,
+ Kernel cptr,
+ KernelSize int32,
+)
+
+//go:wasmimport _raylib _ImageResize
+//go:noescape
+func imageResize(
+ Image cptr,
+ NewWidth int32,
+ NewHeight int32,
+)
+
+//go:wasmimport _raylib _ImageResizeNN
+//go:noescape
+func imageResizeNN(
+ Image cptr,
+ NewWidth int32,
+ NewHeight int32,
+)
+
+//go:wasmimport _raylib _ImageResizeCanvas
+//go:noescape
+func imageResizeCanvas(
+ Image cptr,
+ NewWidth int32,
+ NewHeight int32,
+ OffsetX int32,
+ OffsetY int32,
+ Fill cptr,
+)
+
+//go:wasmimport _raylib _ImageMipmaps
+//go:noescape
+func imageMipmaps(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageDither
+//go:noescape
+func imageDither(
+ Image cptr,
+ RBpp int32,
+ GBpp int32,
+ BBpp int32,
+ ABpp int32,
+)
+
+//go:wasmimport _raylib _ImageFlipVertical
+//go:noescape
+func imageFlipVertical(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageFlipHorizontal
+//go:noescape
+func imageFlipHorizontal(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageRotate
+//go:noescape
+func imageRotate(
+ Image cptr,
+ Degrees int32,
+)
+
+//go:wasmimport _raylib _ImageRotateCW
+//go:noescape
+func imageRotateCW(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageRotateCCW
+//go:noescape
+func imageRotateCCW(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageColorTint
+//go:noescape
+func imageColorTint(
+ Image cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageColorInvert
+//go:noescape
+func imageColorInvert(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageColorGrayscale
+//go:noescape
+func imageColorGrayscale(
+ Image cptr,
+)
+
+//go:wasmimport _raylib _ImageColorContrast
+//go:noescape
+func imageColorContrast(
+ Image cptr,
+ Contrast float32,
+)
+
+//go:wasmimport _raylib _ImageColorBrightness
+//go:noescape
+func imageColorBrightness(
+ Image cptr,
+ Brightness int32,
+)
+
+//go:wasmimport _raylib _ImageColorReplace
+//go:noescape
+func imageColorReplace(
+ Image cptr,
+ Color cptr,
+ Replace cptr,
+)
+
+//go:wasmimport _raylib _LoadImageColors
+//go:noescape
+func loadImageColors(
+ ret cptr,
+ Image cptr,
+)
+
+//go:wasmimport _raylib _LoadImagePalette
+//go:noescape
+func loadImagePalette(
+ ret cptr,
+ Image cptr,
+ MaxPaletteSize int32,
+ ColorCount cptr,
+)
+
+//go:wasmimport _raylib _UnloadImageColors
+//go:noescape
+func unloadImageColors(
+ Colors cptr,
+)
+
+//go:wasmimport _raylib _UnloadImagePalette
+//go:noescape
+func unloadImagePalette(
+ Colors cptr,
+)
+
+//go:wasmimport _raylib _GetImageAlphaBorder
+//go:noescape
+func getImageAlphaBorder(
+ ret cptr,
+ Image cptr,
+ Threshold float32,
+)
+
+//go:wasmimport _raylib _GetImageColor
+//go:noescape
+func getImageColor(
+ ret cptr,
+ Image cptr,
+ X int32,
+ Y int32,
+)
+
+//go:wasmimport _raylib _ImageClearBackground
+//go:noescape
+func imageClearBackground(
+ Dst cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawPixel
+//go:noescape
+func imageDrawPixel(
+ Dst cptr,
+ PosX int32,
+ PosY int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawPixelV
+//go:noescape
+func imageDrawPixelV(
+ Dst cptr,
+ Position cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawLine
+//go:noescape
+func imageDrawLine(
+ Dst cptr,
+ StartPosX int32,
+ StartPosY int32,
+ EndPosX int32,
+ EndPosY int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawLineV
+//go:noescape
+func imageDrawLineV(
+ Dst cptr,
+ Start cptr,
+ End cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawLineEx
+//go:noescape
+func imageDrawLineEx(
+ Dst cptr,
+ Start cptr,
+ End cptr,
+ Thick int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawCircle
+//go:noescape
+func imageDrawCircle(
+ Dst cptr,
+ CenterX int32,
+ CenterY int32,
+ Radius int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawCircleV
+//go:noescape
+func imageDrawCircleV(
+ Dst cptr,
+ Center cptr,
+ Radius int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawCircleLines
+//go:noescape
+func imageDrawCircleLines(
+ Dst cptr,
+ CenterX int32,
+ CenterY int32,
+ Radius int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawCircleLinesV
+//go:noescape
+func imageDrawCircleLinesV(
+ Dst cptr,
+ Center cptr,
+ Radius int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawRectangle
+//go:noescape
+func imageDrawRectangle(
+ Dst cptr,
+ PosX int32,
+ PosY int32,
+ Width int32,
+ Height int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawRectangleV
+//go:noescape
+func imageDrawRectangleV(
+ Dst cptr,
+ Position cptr,
+ Size cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawRectangleRec
+//go:noescape
+func imageDrawRectangleRec(
+ Dst cptr,
+ Rec cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawRectangleLines
+//go:noescape
+func imageDrawRectangleLines(
+ Dst cptr,
+ Rec cptr,
+ Thick int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTriangle
+//go:noescape
+func imageDrawTriangle(
+ Dst cptr,
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTriangleEx
+//go:noescape
+func imageDrawTriangleEx(
+ Dst cptr,
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ C1 cptr,
+ C2 cptr,
+ C3 cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTriangleLines
+//go:noescape
+func imageDrawTriangleLines(
+ Dst cptr,
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTriangleFan
+//go:noescape
+func imageDrawTriangleFan(
+ Dst cptr,
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTriangleStrip
+//go:noescape
+func imageDrawTriangleStrip(
+ Dst cptr,
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDraw
+//go:noescape
+func imageDraw(
+ Dst cptr,
+ Src cptr,
+ SrcRec cptr,
+ DstRec cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawText
+//go:noescape
+func imageDrawText(
+ Dst cptr,
+ Text cptr,
+ PosX int32,
+ PosY int32,
+ FontSize int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ImageDrawTextEx
+//go:noescape
+func imageDrawTextEx(
+ Dst cptr,
+ Font cptr,
+ Text cptr,
+ Position cptr,
+ FontSize float32,
+ Spacing float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _LoadTexture
+//go:noescape
+func loadTexture(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadTextureFromImage
+//go:noescape
+func loadTextureFromImage(
+ ret cptr,
+ Image cptr,
+)
+
+//go:wasmimport _raylib _LoadTextureCubemap
+//go:noescape
+func loadTextureCubemap(
+ ret cptr,
+ Image cptr,
+ Layout int32,
+)
+
+//go:wasmimport _raylib _LoadRenderTexture
+//go:noescape
+func loadRenderTexture(
+ ret cptr,
+ Width int32,
+ Height int32,
+)
+
+//go:wasmimport _raylib _IsTextureValid
+//go:noescape
+func isTextureValid(
+ ret cptr,
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _UnloadTexture
+//go:noescape
+func unloadTexture(
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _IsRenderTextureValid
+//go:noescape
+func isRenderTextureValid(
+ ret cptr,
+ Target cptr,
+)
+
+//go:wasmimport _raylib _UnloadRenderTexture
+//go:noescape
+func unloadRenderTexture(
+ Target cptr,
+)
+
+//go:wasmimport _raylib _UpdateTexture
+//go:noescape
+func updateTexture(
+ Texture cptr,
+ Pixels cptr,
+)
+
+//go:wasmimport _raylib _UpdateTextureRec
+//go:noescape
+func updateTextureRec(
+ Texture cptr,
+ Rec cptr,
+ Pixels cptr,
+)
+
+//go:wasmimport _raylib _GenTextureMipmaps
+//go:noescape
+func genTextureMipmaps(
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _SetTextureFilter
+//go:noescape
+func setTextureFilter(
+ Texture cptr,
+ Filter int32,
+)
+
+//go:wasmimport _raylib _SetTextureWrap
+//go:noescape
+func setTextureWrap(
+ Texture cptr,
+ Wrap int32,
+)
+
+//go:wasmimport _raylib _DrawTexture
+//go:noescape
+func drawTexture(
+ Texture cptr,
+ PosX int32,
+ PosY int32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextureV
+//go:noescape
+func drawTextureV(
+ Texture cptr,
+ Position cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextureEx
+//go:noescape
+func drawTextureEx(
+ Texture cptr,
+ Position cptr,
+ Rotation float32,
+ Scale float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextureRec
+//go:noescape
+func drawTextureRec(
+ Texture cptr,
+ Source cptr,
+ Position cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTexturePro
+//go:noescape
+func drawTexturePro(
+ Texture cptr,
+ Source cptr,
+ Dest cptr,
+ Origin cptr,
+ Rotation float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextureNPatch
+//go:noescape
+func drawTextureNPatch(
+ Texture cptr,
+ NPatchInfo cptr,
+ Dest cptr,
+ Origin cptr,
+ Rotation float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _ColorIsEqual
+//go:noescape
+func colorIsEqual(
+ ret cptr,
+ Col1 cptr,
+ Col2 cptr,
+)
+
+//go:wasmimport _raylib _Fade
+//go:noescape
+func fade(
+ ret cptr,
+ Color cptr,
+ Alpha float32,
+)
+
+//go:wasmimport _raylib _ColorToInt
+//go:noescape
+func colorToInt(
+ ret int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ColorNormalize
+//go:noescape
+func colorNormalize(
+ ret cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ColorFromNormalized
+//go:noescape
+func colorFromNormalized(
+ ret cptr,
+ Normalized cptr,
+)
+
+//go:wasmimport _raylib _ColorToHSV
+//go:noescape
+func colorToHSV(
+ ret cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _ColorFromHSV
+//go:noescape
+func colorFromHSV(
+ ret cptr,
+ Hue float32,
+ Saturation float32,
+ Value float32,
+)
+
+//go:wasmimport _raylib _ColorTint
+//go:noescape
+func colorTint(
+ ret cptr,
+ Color cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _ColorBrightness
+//go:noescape
+func colorBrightness(
+ ret cptr,
+ Color cptr,
+ Factor float32,
+)
+
+//go:wasmimport _raylib _ColorContrast
+//go:noescape
+func colorContrast(
+ ret cptr,
+ Color cptr,
+ Contrast float32,
+)
+
+//go:wasmimport _raylib _ColorAlpha
+//go:noescape
+func colorAlpha(
+ ret cptr,
+ Color cptr,
+ Alpha float32,
+)
+
+//go:wasmimport _raylib _ColorAlphaBlend
+//go:noescape
+func colorAlphaBlend(
+ ret cptr,
+ Dst cptr,
+ Src cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _ColorLerp
+//go:noescape
+func colorLerp(
+ ret cptr,
+ Color1 cptr,
+ Color2 cptr,
+ Factor float32,
+)
+
+//go:wasmimport _raylib _GetColor
+//go:noescape
+func getColor(
+ ret cptr,
+ HexValue uint32,
+)
+
+//go:wasmimport _raylib _GetPixelColor
+//go:noescape
+func getPixelColor(
+ ret cptr,
+ SrcPtr cptr,
+ Format int32,
+)
+
+//go:wasmimport _raylib _SetPixelColor
+//go:noescape
+func setPixelColor(
+ DstPtr cptr,
+ Color cptr,
+ Format int32,
+)
+
+//go:wasmimport _raylib _GetPixelDataSize
+//go:noescape
+func getPixelDataSize(
+ ret int32,
+ Width int32,
+ Height int32,
+ Format int32,
+)
+
+//go:wasmimport _raylib _GetFontDefault
+//go:noescape
+func getFontDefault(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _LoadFont
+//go:noescape
+func loadFont(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadFontEx
+//go:noescape
+func loadFontEx(
+ ret cptr,
+ FileName cptr,
+ FontSize int32,
+ Codepoints cptr,
+ CodepointCount int32,
+)
+
+//go:wasmimport _raylib _LoadFontFromImage
+//go:noescape
+func loadFontFromImage(
+ ret cptr,
+ Image cptr,
+ Key cptr,
+ FirstChar int32,
+)
+
+//go:wasmimport _raylib _LoadFontFromMemory
+//go:noescape
+func loadFontFromMemory(
+ ret cptr,
+ FileType cptr,
+ FileData cptr,
+ DataSize int32,
+ FontSize int32,
+ Codepoints cptr,
+ CodepointCount int32,
+)
+
+//go:wasmimport _raylib _IsFontValid
+//go:noescape
+func isFontValid(
+ ret cptr,
+ Font cptr,
+)
+
+//go:wasmimport _raylib _LoadFontData
+//go:noescape
+func loadFontData(
+ ret cptr,
+ FileData cptr,
+ DataSize int32,
+ FontSize int32,
+ Codepoints cptr,
+ CodepointCount int32,
+ Type int32,
+ GlyphCount cptr,
+)
+
+//go:wasmimport _raylib _GenImageFontAtlas
+//go:noescape
+func genImageFontAtlas(
+ ret cptr,
+ Glyphs cptr,
+ GlyphRecs cptr,
+ GlyphCount int32,
+ FontSize int32,
+ Padding int32,
+ PackMethod int32,
+)
+
+//go:wasmimport _raylib _UnloadFontData
+//go:noescape
+func unloadFontData(
+ Glyphs cptr,
+ GlyphCount int32,
+)
+
+//go:wasmimport _raylib _UnloadFont
+//go:noescape
+func unloadFont(
+ Font cptr,
+)
+
+//go:wasmimport _raylib _ExportFontAsCode
+//go:noescape
+func exportFontAsCode(
+ ret cptr,
+ Font cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _DrawFPS
+//go:noescape
+func drawFPS(
+ PosX int32,
+ PosY int32,
+)
+
+//go:wasmimport _raylib _DrawText
+//go:noescape
+func drawText(
+ Text cptr,
+ PosX int32,
+ PosY int32,
+ FontSize int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTextEx
+//go:noescape
+func drawTextEx(
+ Font cptr,
+ Text cptr,
+ Position cptr,
+ FontSize float32,
+ Spacing float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextPro
+//go:noescape
+func drawTextPro(
+ Font cptr,
+ Text cptr,
+ Position cptr,
+ Origin cptr,
+ Rotation float32,
+ FontSize float32,
+ Spacing float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextCodepoint
+//go:noescape
+func drawTextCodepoint(
+ Font cptr,
+ Codepoint int32,
+ Position cptr,
+ FontSize float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawTextCodepoints
+//go:noescape
+func drawTextCodepoints(
+ Font cptr,
+ Codepoints cptr,
+ CodepointCount int32,
+ Position cptr,
+ FontSize float32,
+ Spacing float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _SetTextLineSpacing
+//go:noescape
+func setTextLineSpacing(
+ Spacing int32,
+)
+
+//go:wasmimport _raylib _MeasureText
+//go:noescape
+func measureText(
+ ret int32,
+ Text cptr,
+ FontSize int32,
+)
+
+//go:wasmimport _raylib _MeasureTextEx
+//go:noescape
+func measureTextEx(
+ ret cptr,
+ Font cptr,
+ Text cptr,
+ FontSize float32,
+ Spacing float32,
+)
+
+//go:wasmimport _raylib _GetGlyphIndex
+//go:noescape
+func getGlyphIndex(
+ ret int32,
+ Font cptr,
+ Codepoint int32,
+)
+
+//go:wasmimport _raylib _GetGlyphInfo
+//go:noescape
+func getGlyphInfo(
+ ret cptr,
+ Font cptr,
+ Codepoint int32,
+)
+
+//go:wasmimport _raylib _GetGlyphAtlasRec
+//go:noescape
+func getGlyphAtlasRec(
+ ret cptr,
+ Font cptr,
+ Codepoint int32,
+)
+
+//go:wasmimport _raylib _LoadUTF8
+//go:noescape
+func loadUTF8(
+ ret cptr,
+ Codepoints cptr,
+ Length int32,
+)
+
+//go:wasmimport _raylib _UnloadUTF8
+//go:noescape
+func unloadUTF8(
+ Text cptr,
+)
+
+//go:wasmimport _raylib _LoadCodepoints
+//go:noescape
+func loadCodepoints(
+ ret cptr,
+ Text cptr,
+ Count cptr,
+)
+
+//go:wasmimport _raylib _UnloadCodepoints
+//go:noescape
+func unloadCodepoints(
+ Codepoints cptr,
+)
+
+//go:wasmimport _raylib _GetCodepointCount
+//go:noescape
+func getCodepointCount(
+ ret int32,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _GetCodepoint
+//go:noescape
+func getCodepoint(
+ ret int32,
+ Text cptr,
+ CodepointSize cptr,
+)
+
+//go:wasmimport _raylib _GetCodepointNext
+//go:noescape
+func getCodepointNext(
+ ret int32,
+ Text cptr,
+ CodepointSize cptr,
+)
+
+//go:wasmimport _raylib _GetCodepointPrevious
+//go:noescape
+func getCodepointPrevious(
+ ret int32,
+ Text cptr,
+ CodepointSize cptr,
+)
+
+//go:wasmimport _raylib _CodepointToUTF8
+//go:noescape
+func codepointToUTF8(
+ ret cptr,
+ Codepoint int32,
+ Utf8Size cptr,
+)
+
+//go:wasmimport _raylib _LoadTextLines
+//go:noescape
+func loadTextLines(
+ ret cptr,
+ Text cptr,
+ Count cptr,
+)
+
+//go:wasmimport _raylib _UnloadTextLines
+//go:noescape
+func unloadTextLines(
+ Text cptr,
+ LineCount int32,
+)
+
+//go:wasmimport _raylib _TextCopy
+//go:noescape
+func textCopy(
+ ret int32,
+ Dst cptr,
+ Src cptr,
+)
+
+//go:wasmimport _raylib _TextIsEqual
+//go:noescape
+func textIsEqual(
+ ret cptr,
+ Text1 cptr,
+ Text2 cptr,
+)
+
+//go:wasmimport _raylib _TextLength
+//go:noescape
+func textLength(
+ ret uint32,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextFormat
+//go:noescape
+func textFormat(
+ ret cptr,
+ Text cptr,
+ Args cptr,
+)
+
+//go:wasmimport _raylib _TextSubtext
+//go:noescape
+func textSubtext(
+ ret cptr,
+ Text cptr,
+ Position int32,
+ Length int32,
+)
+
+//go:wasmimport _raylib _TextRemoveSpaces
+//go:noescape
+func textRemoveSpaces(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _GetTextBetween
+//go:noescape
+func getTextBetween(
+ ret cptr,
+ Text cptr,
+ Begin cptr,
+ End cptr,
+)
+
+//go:wasmimport _raylib _TextReplace
+//go:noescape
+func textReplace(
+ ret cptr,
+ Text cptr,
+ Search cptr,
+ Replacement cptr,
+)
+
+//go:wasmimport _raylib _TextReplaceBetween
+//go:noescape
+func textReplaceBetween(
+ ret cptr,
+ Text cptr,
+ Begin cptr,
+ End cptr,
+ Replacement cptr,
+)
+
+//go:wasmimport _raylib _TextInsert
+//go:noescape
+func textInsert(
+ ret cptr,
+ Text cptr,
+ Insert cptr,
+ Position int32,
+)
+
+//go:wasmimport _raylib _TextJoin
+//go:noescape
+func textJoin(
+ ret cptr,
+ TextList cptr,
+ Count int32,
+ Delimiter cptr,
+)
+
+//go:wasmimport _raylib _TextSplit
+//go:noescape
+func textSplit(
+ ret cptr,
+ Text cptr,
+ Delimiter byte,
+ Count cptr,
+)
+
+//go:wasmimport _raylib _TextAppend
+//go:noescape
+func textAppend(
+ Text cptr,
+ Append cptr,
+ Position cptr,
+)
+
+//go:wasmimport _raylib _TextFindIndex
+//go:noescape
+func textFindIndex(
+ ret int32,
+ Text cptr,
+ Search cptr,
+)
+
+//go:wasmimport _raylib _TextToUpper
+//go:noescape
+func textToUpper(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToLower
+//go:noescape
+func textToLower(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToPascal
+//go:noescape
+func textToPascal(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToSnake
+//go:noescape
+func textToSnake(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToCamel
+//go:noescape
+func textToCamel(
+ ret cptr,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToInteger
+//go:noescape
+func textToInteger(
+ ret int32,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _TextToFloat
+//go:noescape
+func textToFloat(
+ ret float32,
+ Text cptr,
+)
+
+//go:wasmimport _raylib _DrawLine3D
+//go:noescape
+func drawLine3D(
+ StartPos cptr,
+ EndPos cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPoint3D
+//go:noescape
+func drawPoint3D(
+ Position cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCircle3D
+//go:noescape
+func drawCircle3D(
+ Center cptr,
+ Radius float32,
+ RotationAxis cptr,
+ RotationAngle float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangle3D
+//go:noescape
+func drawTriangle3D(
+ V1 cptr,
+ V2 cptr,
+ V3 cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawTriangleStrip3D
+//go:noescape
+func drawTriangleStrip3D(
+ Points cptr,
+ PointCount int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCube
+//go:noescape
+func drawCube(
+ Position cptr,
+ Width float32,
+ Height float32,
+ Length float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCubeV
+//go:noescape
+func drawCubeV(
+ Position cptr,
+ Size cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCubeWires
+//go:noescape
+func drawCubeWires(
+ Position cptr,
+ Width float32,
+ Height float32,
+ Length float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCubeWiresV
+//go:noescape
+func drawCubeWiresV(
+ Position cptr,
+ Size cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSphere
+//go:noescape
+func drawSphere(
+ CenterPos cptr,
+ Radius float32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSphereEx
+//go:noescape
+func drawSphereEx(
+ CenterPos cptr,
+ Radius float32,
+ Rings int32,
+ Slices int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawSphereWires
+//go:noescape
+func drawSphereWires(
+ CenterPos cptr,
+ Radius float32,
+ Rings int32,
+ Slices int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCylinder
+//go:noescape
+func drawCylinder(
+ Position cptr,
+ RadiusTop float32,
+ RadiusBottom float32,
+ Height float32,
+ Slices int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCylinderEx
+//go:noescape
+func drawCylinderEx(
+ StartPos cptr,
+ EndPos cptr,
+ StartRadius float32,
+ EndRadius float32,
+ Sides int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCylinderWires
+//go:noescape
+func drawCylinderWires(
+ Position cptr,
+ RadiusTop float32,
+ RadiusBottom float32,
+ Height float32,
+ Slices int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCylinderWiresEx
+//go:noescape
+func drawCylinderWiresEx(
+ StartPos cptr,
+ EndPos cptr,
+ StartRadius float32,
+ EndRadius float32,
+ Sides int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCapsule
+//go:noescape
+func drawCapsule(
+ StartPos cptr,
+ EndPos cptr,
+ Radius float32,
+ Slices int32,
+ Rings int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawCapsuleWires
+//go:noescape
+func drawCapsuleWires(
+ StartPos cptr,
+ EndPos cptr,
+ Radius float32,
+ Slices int32,
+ Rings int32,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawPlane
+//go:noescape
+func drawPlane(
+ CenterPos cptr,
+ Size cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawRay
+//go:noescape
+func drawRay(
+ Ray cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawGrid
+//go:noescape
+func drawGrid(
+ Slices int32,
+ Spacing float32,
+)
+
+//go:wasmimport _raylib _LoadModel
+//go:noescape
+func loadModel(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadModelFromMesh
+//go:noescape
+func loadModelFromMesh(
+ ret cptr,
+ Mesh cptr,
+)
+
+//go:wasmimport _raylib _IsModelValid
+//go:noescape
+func isModelValid(
+ ret cptr,
+ Model cptr,
+)
+
+//go:wasmimport _raylib _UnloadModel
+//go:noescape
+func unloadModel(
+ Model cptr,
+)
+
+//go:wasmimport _raylib _GetModelBoundingBox
+//go:noescape
+func getModelBoundingBox(
+ ret cptr,
+ Model cptr,
+)
+
+//go:wasmimport _raylib _DrawModel
+//go:noescape
+func drawModel(
+ Model cptr,
+ Position cptr,
+ Scale float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawModelEx
+//go:noescape
+func drawModelEx(
+ Model cptr,
+ Position cptr,
+ RotationAxis cptr,
+ RotationAngle float32,
+ Scale cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawModelWires
+//go:noescape
+func drawModelWires(
+ Model cptr,
+ Position cptr,
+ Scale float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawModelWiresEx
+//go:noescape
+func drawModelWiresEx(
+ Model cptr,
+ Position cptr,
+ RotationAxis cptr,
+ RotationAngle float32,
+ Scale cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawModelPoints
+//go:noescape
+func drawModelPoints(
+ Model cptr,
+ Position cptr,
+ Scale float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawModelPointsEx
+//go:noescape
+func drawModelPointsEx(
+ Model cptr,
+ Position cptr,
+ RotationAxis cptr,
+ RotationAngle float32,
+ Scale cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawBoundingBox
+//go:noescape
+func drawBoundingBox(
+ Box cptr,
+ Color cptr,
+)
+
+//go:wasmimport _raylib _DrawBillboard
+//go:noescape
+func drawBillboard(
+ Camera cptr,
+ Texture cptr,
+ Position cptr,
+ Scale float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawBillboardRec
+//go:noescape
+func drawBillboardRec(
+ Camera cptr,
+ Texture cptr,
+ Source cptr,
+ Position cptr,
+ Size cptr,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _DrawBillboardPro
+//go:noescape
+func drawBillboardPro(
+ Camera cptr,
+ Texture cptr,
+ Source cptr,
+ Position cptr,
+ Up cptr,
+ Size cptr,
+ Origin cptr,
+ Rotation float32,
+ Tint cptr,
+)
+
+//go:wasmimport _raylib _UploadMesh
+//go:noescape
+func uploadMesh(
+ Mesh cptr,
+ Dynamic cptr,
+)
+
+//go:wasmimport _raylib _UpdateMeshBuffer
+//go:noescape
+func updateMeshBuffer(
+ Mesh cptr,
+ Index int32,
+ Data cptr,
+ DataSize int32,
+ Offset int32,
+)
+
+//go:wasmimport _raylib _UnloadMesh
+//go:noescape
+func unloadMesh(
+ Mesh cptr,
+)
+
+//go:wasmimport _raylib _DrawMesh
+//go:noescape
+func drawMesh(
+ Mesh cptr,
+ Material cptr,
+ Transform cptr,
+)
+
+//go:wasmimport _raylib _DrawMeshInstanced
+//go:noescape
+func drawMeshInstanced(
+ Mesh cptr,
+ Material cptr,
+ Transforms cptr,
+ Instances int32,
+)
+
+//go:wasmimport _raylib _GetMeshBoundingBox
+//go:noescape
+func getMeshBoundingBox(
+ ret cptr,
+ Mesh cptr,
+)
+
+//go:wasmimport _raylib _GenMeshTangents
+//go:noescape
+func genMeshTangents(
+ Mesh cptr,
+)
+
+//go:wasmimport _raylib _ExportMesh
+//go:noescape
+func exportMesh(
+ ret cptr,
+ Mesh cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _ExportMeshAsCode
+//go:noescape
+func exportMeshAsCode(
+ ret cptr,
+ Mesh cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _GenMeshPoly
+//go:noescape
+func genMeshPoly(
+ ret cptr,
+ Sides int32,
+ Radius float32,
+)
+
+//go:wasmimport _raylib _GenMeshPlane
+//go:noescape
+func genMeshPlane(
+ ret cptr,
+ Width float32,
+ Length float32,
+ ResX int32,
+ ResZ int32,
+)
+
+//go:wasmimport _raylib _GenMeshCube
+//go:noescape
+func genMeshCube(
+ ret cptr,
+ Width float32,
+ Height float32,
+ Length float32,
+)
+
+//go:wasmimport _raylib _GenMeshSphere
+//go:noescape
+func genMeshSphere(
+ ret cptr,
+ Radius float32,
+ Rings int32,
+ Slices int32,
+)
+
+//go:wasmimport _raylib _GenMeshHemiSphere
+//go:noescape
+func genMeshHemiSphere(
+ ret cptr,
+ Radius float32,
+ Rings int32,
+ Slices int32,
+)
+
+//go:wasmimport _raylib _GenMeshCylinder
+//go:noescape
+func genMeshCylinder(
+ ret cptr,
+ Radius float32,
+ Height float32,
+ Slices int32,
+)
+
+//go:wasmimport _raylib _GenMeshCone
+//go:noescape
+func genMeshCone(
+ ret cptr,
+ Radius float32,
+ Height float32,
+ Slices int32,
+)
+
+//go:wasmimport _raylib _GenMeshTorus
+//go:noescape
+func genMeshTorus(
+ ret cptr,
+ Radius float32,
+ Size float32,
+ RadSeg int32,
+ Sides int32,
+)
+
+//go:wasmimport _raylib _GenMeshKnot
+//go:noescape
+func genMeshKnot(
+ ret cptr,
+ Radius float32,
+ Size float32,
+ RadSeg int32,
+ Sides int32,
+)
+
+//go:wasmimport _raylib _GenMeshHeightmap
+//go:noescape
+func genMeshHeightmap(
+ ret cptr,
+ Heightmap cptr,
+ Size cptr,
+)
+
+//go:wasmimport _raylib _GenMeshCubicmap
+//go:noescape
+func genMeshCubicmap(
+ ret cptr,
+ Cubicmap cptr,
+ CubeSize cptr,
+)
+
+//go:wasmimport _raylib _LoadMaterials
+//go:noescape
+func loadMaterials(
+ ret cptr,
+ FileName cptr,
+ MaterialCount cptr,
+)
+
+//go:wasmimport _raylib _LoadMaterialDefault
+//go:noescape
+func loadMaterialDefault(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _IsMaterialValid
+//go:noescape
+func isMaterialValid(
+ ret cptr,
+ Material cptr,
+)
+
+//go:wasmimport _raylib _UnloadMaterial
+//go:noescape
+func unloadMaterial(
+ Material cptr,
+)
+
+//go:wasmimport _raylib _SetMaterialTexture
+//go:noescape
+func setMaterialTexture(
+ Material cptr,
+ MapType int32,
+ Texture cptr,
+)
+
+//go:wasmimport _raylib _SetModelMeshMaterial
+//go:noescape
+func setModelMeshMaterial(
+ Model cptr,
+ MeshId int32,
+ MaterialId int32,
+)
+
+//go:wasmimport _raylib _LoadModelAnimations
+//go:noescape
+func loadModelAnimations(
+ ret cptr,
+ FileName cptr,
+ AnimCount cptr,
+)
+
+//go:wasmimport _raylib _UpdateModelAnimation
+//go:noescape
+func updateModelAnimation(
+ Model cptr,
+ Anim cptr,
+ Frame int32,
+)
+
+//go:wasmimport _raylib _UpdateModelAnimationBones
+//go:noescape
+func updateModelAnimationBones(
+ Model cptr,
+ Anim cptr,
+ Frame int32,
+)
+
+//go:wasmimport _raylib _UnloadModelAnimation
+//go:noescape
+func unloadModelAnimation(
+ Anim cptr,
+)
+
+//go:wasmimport _raylib _UnloadModelAnimations
+//go:noescape
+func unloadModelAnimations(
+ Animations cptr,
+ AnimCount int32,
+)
+
+//go:wasmimport _raylib _IsModelAnimationValid
+//go:noescape
+func isModelAnimationValid(
+ ret cptr,
+ Model cptr,
+ Anim cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionSpheres
+//go:noescape
+func checkCollisionSpheres(
+ ret cptr,
+ Center1 cptr,
+ Radius1 float32,
+ Center2 cptr,
+ Radius2 float32,
+)
+
+//go:wasmimport _raylib _CheckCollisionBoxes
+//go:noescape
+func checkCollisionBoxes(
+ ret cptr,
+ Box1 cptr,
+ Box2 cptr,
+)
+
+//go:wasmimport _raylib _CheckCollisionBoxSphere
+//go:noescape
+func checkCollisionBoxSphere(
+ ret cptr,
+ Box cptr,
+ Center cptr,
+ Radius float32,
+)
+
+//go:wasmimport _raylib _GetRayCollisionSphere
+//go:noescape
+func getRayCollisionSphere(
+ ret cptr,
+ Ray cptr,
+ Center cptr,
+ Radius float32,
+)
+
+//go:wasmimport _raylib _GetRayCollisionBox
+//go:noescape
+func getRayCollisionBox(
+ ret cptr,
+ Ray cptr,
+ Box cptr,
+)
+
+//go:wasmimport _raylib _GetRayCollisionMesh
+//go:noescape
+func getRayCollisionMesh(
+ ret cptr,
+ Ray cptr,
+ Mesh cptr,
+ Transform cptr,
+)
+
+//go:wasmimport _raylib _GetRayCollisionTriangle
+//go:noescape
+func getRayCollisionTriangle(
+ ret cptr,
+ Ray cptr,
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+)
+
+//go:wasmimport _raylib _GetRayCollisionQuad
+//go:noescape
+func getRayCollisionQuad(
+ ret cptr,
+ Ray cptr,
+ P1 cptr,
+ P2 cptr,
+ P3 cptr,
+ P4 cptr,
+)
+
+//go:wasmimport _raylib _InitAudioDevice
+//go:noescape
+func initAudioDevice()
+
+//go:wasmimport _raylib _CloseAudioDevice
+//go:noescape
+func closeAudioDevice()
+
+//go:wasmimport _raylib _IsAudioDeviceReady
+//go:noescape
+func isAudioDeviceReady(
+ ret cptr,
+)
+
+//go:wasmimport _raylib _SetMasterVolume
+//go:noescape
+func setMasterVolume(
+ Volume float32,
+)
+
+//go:wasmimport _raylib _GetMasterVolume
+//go:noescape
+func getMasterVolume(
+ ret float32,
+)
+
+//go:wasmimport _raylib _LoadWave
+//go:noescape
+func loadWave(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadWaveFromMemory
+//go:noescape
+func loadWaveFromMemory(
+ ret cptr,
+ FileType cptr,
+ FileData cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _IsWaveValid
+//go:noescape
+func isWaveValid(
+ ret cptr,
+ Wave cptr,
+)
+
+//go:wasmimport _raylib _LoadSound
+//go:noescape
+func loadSound(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadSoundFromWave
+//go:noescape
+func loadSoundFromWave(
+ ret cptr,
+ Wave cptr,
+)
+
+//go:wasmimport _raylib _LoadSoundAlias
+//go:noescape
+func loadSoundAlias(
+ ret cptr,
+ Source cptr,
+)
+
+//go:wasmimport _raylib _IsSoundValid
+//go:noescape
+func isSoundValid(
+ ret cptr,
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _UpdateSound
+//go:noescape
+func updateSound(
+ Sound cptr,
+ Data cptr,
+ SampleCount int32,
+)
+
+//go:wasmimport _raylib _UnloadWave
+//go:noescape
+func unloadWave(
+ Wave cptr,
+)
+
+//go:wasmimport _raylib _UnloadSound
+//go:noescape
+func unloadSound(
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _UnloadSoundAlias
+//go:noescape
+func unloadSoundAlias(
+ Alias cptr,
+)
+
+//go:wasmimport _raylib _ExportWave
+//go:noescape
+func exportWave(
+ ret cptr,
+ Wave cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _ExportWaveAsCode
+//go:noescape
+func exportWaveAsCode(
+ ret cptr,
+ Wave cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _PlaySound
+//go:noescape
+func playSound(
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _StopSound
+//go:noescape
+func stopSound(
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _PauseSound
+//go:noescape
+func pauseSound(
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _ResumeSound
+//go:noescape
+func resumeSound(
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _IsSoundPlaying
+//go:noescape
+func isSoundPlaying(
+ ret cptr,
+ Sound cptr,
+)
+
+//go:wasmimport _raylib _SetSoundVolume
+//go:noescape
+func setSoundVolume(
+ Sound cptr,
+ Volume float32,
+)
+
+//go:wasmimport _raylib _SetSoundPitch
+//go:noescape
+func setSoundPitch(
+ Sound cptr,
+ Pitch float32,
+)
+
+//go:wasmimport _raylib _SetSoundPan
+//go:noescape
+func setSoundPan(
+ Sound cptr,
+ Pan float32,
+)
+
+//go:wasmimport _raylib _WaveCopy
+//go:noescape
+func waveCopy(
+ ret cptr,
+ Wave cptr,
+)
+
+//go:wasmimport _raylib _WaveCrop
+//go:noescape
+func waveCrop(
+ Wave cptr,
+ InitFrame int32,
+ FinalFrame int32,
+)
+
+//go:wasmimport _raylib _WaveFormat
+//go:noescape
+func waveFormat(
+ Wave cptr,
+ SampleRate int32,
+ SampleSize int32,
+ Channels int32,
+)
+
+//go:wasmimport _raylib _LoadWaveSamples
+//go:noescape
+func loadWaveSamples(
+ ret cptr,
+ Wave cptr,
+)
+
+//go:wasmimport _raylib _UnloadWaveSamples
+//go:noescape
+func unloadWaveSamples(
+ Samples cptr,
+)
+
+//go:wasmimport _raylib _LoadMusicStream
+//go:noescape
+func loadMusicStream(
+ ret cptr,
+ FileName cptr,
+)
+
+//go:wasmimport _raylib _LoadMusicStreamFromMemory
+//go:noescape
+func loadMusicStreamFromMemory(
+ ret cptr,
+ FileType cptr,
+ Data cptr,
+ DataSize int32,
+)
+
+//go:wasmimport _raylib _IsMusicValid
+//go:noescape
+func isMusicValid(
+ ret cptr,
+ Music cptr,
+)
+
+//go:wasmimport _raylib _UnloadMusicStream
+//go:noescape
+func unloadMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _PlayMusicStream
+//go:noescape
+func playMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _IsMusicStreamPlaying
+//go:noescape
+func isMusicStreamPlaying(
+ ret cptr,
+ Music cptr,
+)
+
+//go:wasmimport _raylib _UpdateMusicStream
+//go:noescape
+func updateMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _StopMusicStream
+//go:noescape
+func stopMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _PauseMusicStream
+//go:noescape
+func pauseMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _ResumeMusicStream
+//go:noescape
+func resumeMusicStream(
+ Music cptr,
+)
+
+//go:wasmimport _raylib _SeekMusicStream
+//go:noescape
+func seekMusicStream(
+ Music cptr,
+ Position float32,
+)
+
+//go:wasmimport _raylib _SetMusicVolume
+//go:noescape
+func setMusicVolume(
+ Music cptr,
+ Volume float32,
+)
+
+//go:wasmimport _raylib _SetMusicPitch
+//go:noescape
+func setMusicPitch(
+ Music cptr,
+ Pitch float32,
+)
+
+//go:wasmimport _raylib _SetMusicPan
+//go:noescape
+func setMusicPan(
+ Music cptr,
+ Pan float32,
+)
+
+//go:wasmimport _raylib _GetMusicTimeLength
+//go:noescape
+func getMusicTimeLength(
+ ret float32,
+ Music cptr,
+)
+
+//go:wasmimport _raylib _GetMusicTimePlayed
+//go:noescape
+func getMusicTimePlayed(
+ ret float32,
+ Music cptr,
+)
+
+//go:wasmimport _raylib _LoadAudioStream
+//go:noescape
+func loadAudioStream(
+ ret cptr,
+ SampleRate uint32,
+ SampleSize uint32,
+ Channels uint32,
+)
+
+//go:wasmimport _raylib _IsAudioStreamValid
+//go:noescape
+func isAudioStreamValid(
+ ret cptr,
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _UnloadAudioStream
+//go:noescape
+func unloadAudioStream(
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _UpdateAudioStream
+//go:noescape
+func updateAudioStream(
+ Stream cptr,
+ Data cptr,
+ FrameCount int32,
+)
+
+//go:wasmimport _raylib _IsAudioStreamProcessed
+//go:noescape
+func isAudioStreamProcessed(
+ ret cptr,
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _PlayAudioStream
+//go:noescape
+func playAudioStream(
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _PauseAudioStream
+//go:noescape
+func pauseAudioStream(
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _ResumeAudioStream
+//go:noescape
+func resumeAudioStream(
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _IsAudioStreamPlaying
+//go:noescape
+func isAudioStreamPlaying(
+ ret cptr,
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _StopAudioStream
+//go:noescape
+func stopAudioStream(
+ Stream cptr,
+)
+
+//go:wasmimport _raylib _SetAudioStreamVolume
+//go:noescape
+func setAudioStreamVolume(
+ Stream cptr,
+ Volume float32,
+)
+
+//go:wasmimport _raylib _SetAudioStreamPitch
+//go:noescape
+func setAudioStreamPitch(
+ Stream cptr,
+ Pitch float32,
+)
+
+//go:wasmimport _raylib _SetAudioStreamPan
+//go:noescape
+func setAudioStreamPan(
+ Stream cptr,
+ Pan float32,
+)
+
+//go:wasmimport _raylib _SetAudioStreamBufferSizeDefault
+//go:noescape
+func setAudioStreamBufferSizeDefault(
+ Size int32,
+)
+
+//go:wasmimport _raylib _SetAudioStreamCallback
+//go:noescape
+func setAudioStreamCallback(
+ Stream cptr,
+ Callback cptr,
+)
+
+//go:wasmimport _raylib _AttachAudioStreamProcessor
+//go:noescape
+func attachAudioStreamProcessor(
+ Stream cptr,
+ Processor cptr,
+)
+
+//go:wasmimport _raylib _DetachAudioStreamProcessor
+//go:noescape
+func detachAudioStreamProcessor(
+ Stream cptr,
+ Processor cptr,
+)
+
+//go:wasmimport _raylib _AttachAudioMixedProcessor
+//go:noescape
+func attachAudioMixedProcessor(
+ Processor cptr,
+)
+
+//go:wasmimport _raylib _DetachAudioMixedProcessor
+//go:noescape
+func detachAudioMixedProcessor(
+ Processor cptr,
+)
diff --git a/wasm-runtime/rl/go.mod b/wasm-runtime/rl/go.mod
new file mode 100644
index 0000000..2556a58
--- /dev/null
+++ b/wasm-runtime/rl/go.mod
@@ -0,0 +1,4 @@
+module rl
+
+go 1.25.6
+
diff --git a/wasm-runtime/rl/structs_gen_formatted.go b/wasm-runtime/rl/structs_gen_formatted.go
new file mode 100644
index 0000000..a10fb6d
--- /dev/null
+++ b/wasm-runtime/rl/structs_gen_formatted.go
@@ -0,0 +1,307 @@
+// AUTOGENERATED FILE. DO NOT EDIT
+
+//go:build js
+
+package rl
+
+// Vector2, 2 components
+type Vector2 struct {
+ X float32 // Vector x component
+ Y float32 // Vector y component
+}
+
+// Vector3, 3 components
+type Vector3 struct {
+ X float32 // Vector x component
+ Y float32 // Vector y component
+ Z float32 // Vector z component
+}
+
+// Vector4, 4 components
+type Vector4 struct {
+ X float32 // Vector x component
+ Y float32 // Vector y component
+ Z float32 // Vector z component
+ W float32 // Vector w component
+}
+
+// Matrix, 4x4 components, column major, OpenGL style, right-handed
+type Matrix struct {
+ M0 float32 // Matrix first row (4 components)
+ M4 float32 // Matrix first row (4 components)
+ M8 float32 // Matrix first row (4 components)
+ M12 float32 // Matrix first row (4 components)
+ M1 float32 // Matrix second row (4 components)
+ M5 float32 // Matrix second row (4 components)
+ M9 float32 // Matrix second row (4 components)
+ M13 float32 // Matrix second row (4 components)
+ M2 float32 // Matrix third row (4 components)
+ M6 float32 // Matrix third row (4 components)
+ M10 float32 // Matrix third row (4 components)
+ M14 float32 // Matrix third row (4 components)
+ M3 float32 // Matrix fourth row (4 components)
+ M7 float32 // Matrix fourth row (4 components)
+ M11 float32 // Matrix fourth row (4 components)
+ M15 float32 // Matrix fourth row (4 components)
+}
+
+// Color, 4 components, R8G8B8A8 (32bit)
+type Color struct {
+ R byte // Color red value
+ G byte // Color green value
+ B byte // Color blue value
+ A byte // Color alpha value
+}
+
+// Rectangle, 4 components
+type Rectangle struct {
+ X float32 // Rectangle top-left corner position x
+ Y float32 // Rectangle top-left corner position y
+ Width float32 // Rectangle width
+ Height float32 // Rectangle height
+}
+
+// Image, pixel data stored in CPU memory (RAM)
+type Image struct {
+ Data cptr // Image raw data
+ Width int32 // Image base width
+ Height int32 // Image base height
+ Mipmaps int32 // Mipmap levels, 1 by default
+ Format int32 // Data format (PixelFormat type)
+}
+
+// Texture, tex data stored in GPU memory (VRAM)
+type Texture struct {
+ Id uint32 // OpenGL texture id
+ Width int32 // Texture base width
+ Height int32 // Texture base height
+ Mipmaps int32 // Mipmap levels, 1 by default
+ Format int32 // Data format (PixelFormat type)
+}
+
+// RenderTexture, fbo for texture rendering
+type RenderTexture struct {
+ Id uint32 // OpenGL framebuffer object id
+ Texture Texture // Color buffer attachment texture
+ Depth Texture // Depth buffer attachment texture
+}
+
+// NPatchInfo, n-patch layout info
+type NPatchInfo struct {
+ Source Rectangle // Texture source rectangle
+ Left int32 // Left border offset
+ Top int32 // Top border offset
+ Right int32 // Right border offset
+ Bottom int32 // Bottom border offset
+ Layout int32 // Layout of the n-patch: 3x3, 1x3 or 3x1
+}
+
+// GlyphInfo, font characters glyphs info
+type GlyphInfo struct {
+ Value int32 // Character value (Unicode)
+ OffsetX int32 // Character offset X when drawing
+ OffsetY int32 // Character offset Y when drawing
+ AdvanceX int32 // Character advance position X
+ Image Image // Character image data
+}
+
+// Font, font texture and GlyphInfo array data
+type Font struct {
+ BaseSize int32 // Base size (default chars height)
+ GlyphCount int32 // Number of glyph characters
+ GlyphPadding int32 // Padding around the glyph characters
+ Texture Texture2D // Texture atlas containing the glyphs
+ Recs cptr // Rectangles in texture for the glyphs
+ Glyphs cptr // Glyphs info data
+}
+
+// Camera, defines position/orientation in 3d space
+type Camera3D struct {
+ Position Vector3 // Camera position
+ Target Vector3 // Camera target it looks-at
+ Up Vector3 // Camera up vector (rotation over its axis)
+ Fovy float32 // Camera field-of-view aperture in Y (degrees) in perspective, used as near plane height in world units in orthographic
+ Projection int32 // Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
+}
+
+// Camera2D, defines position/orientation in 2d space
+type Camera2D struct {
+ Offset Vector2 // Camera offset (screen space offset from window origin)
+ Target Vector2 // Camera target (world space target point that is mapped to screen space offset)
+ Rotation float32 // Camera rotation in degrees (pivots around target)
+ Zoom float32 // Camera zoom (scaling around target), must not be set to 0, set to 1.0f for no scale
+}
+
+// Mesh, vertex data and vao/vbo
+type Mesh struct {
+ VertexCount int32 // Number of vertices stored in arrays
+ TriangleCount int32 // Number of triangles stored (indexed or not)
+ Vertices cptr // Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
+ Texcoords cptr // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
+ Texcoords2 cptr // Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)
+ Normals cptr // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
+ Tangents cptr // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
+ Colors cptr // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
+ Indices cptr // Vertex indices (in case vertex data comes indexed)
+ AnimVertices cptr // Animated vertex positions (after bones transformations)
+ AnimNormals cptr // Animated normals (after bones transformations)
+ BoneIds cptr // Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning) (shader-location = 6)
+ BoneWeights cptr // Vertex bone weight, up to 4 bones influence by vertex (skinning) (shader-location = 7)
+ BoneMatrices cptr // Bones animated transformation matrices
+ BoneCount int32 // Number of bones
+ VaoId uint32 // OpenGL Vertex Array Object id
+ VboId cptr // OpenGL Vertex Buffer Objects id (default vertex data)
+}
+
+// Shader
+type Shader struct {
+ Id uint32 // Shader program id
+ Locs cptr // Shader locations array (RL_MAX_SHADER_LOCATIONS)
+}
+
+// MaterialMap
+type MaterialMap struct {
+ Texture Texture2D // Material map texture
+ Color Color // Material map color
+ Value float32 // Material map value
+}
+
+// Material, includes shader and maps
+type Material struct {
+ Shader Shader // Material shader
+ Maps cptr // Material maps array (MAX_MATERIAL_MAPS)
+ Params [4]float32 // Material generic parameters (if required)
+}
+
+// Transform, vertex transformation data
+type Transform struct {
+ Translation Vector3 // Translation
+ Rotation Quaternion // Rotation
+ Scale Vector3 // Scale
+}
+
+// Bone, skeletal animation bone
+type BoneInfo struct {
+ Name [32]byte // Bone name
+ Parent int32 // Bone parent
+}
+
+// Model, meshes, materials and animation data
+type Model struct {
+ Transform Matrix // Local transform matrix
+ MeshCount int32 // Number of meshes
+ MaterialCount int32 // Number of materials
+ Meshes cptr // Meshes array
+ Materials cptr // Materials array
+ MeshMaterial cptr // Mesh material number
+ BoneCount int32 // Number of bones
+ Bones cptr // Bones information (skeleton)
+ BindPose cptr // Bones base transformation (pose)
+}
+
+// ModelAnimation
+type ModelAnimation struct {
+ BoneCount int32 // Number of bones
+ FrameCount int32 // Number of animation frames
+ Bones cptr // Bones information (skeleton)
+ FramePoses cptr // Poses array by frame
+ Name [32]byte // Animation name
+}
+
+// Ray, ray for raycasting
+type Ray struct {
+ Position Vector3 // Ray position (origin)
+ Direction Vector3 // Ray direction (normalized)
+}
+
+// RayCollision, ray hit information
+type RayCollision struct {
+ Hit bool // Did the ray hit something?
+ Distance float32 // Distance to the nearest hit
+ Point Vector3 // Point of the nearest hit
+ Normal Vector3 // Surface normal of hit
+}
+
+// BoundingBox
+type BoundingBox struct {
+ Min Vector3 // Minimum vertex box-corner
+ Max Vector3 // Maximum vertex box-corner
+}
+
+// Wave, audio wave data
+type Wave struct {
+ FrameCount uint32 // Total number of frames (considering channels)
+ SampleRate uint32 // Frequency (samples per second)
+ SampleSize uint32 // Bit depth (bits per sample): 8, 16, 32 (24 not supported)
+ Channels uint32 // Number of channels (1-mono, 2-stereo, ...)
+ Data cptr // Buffer data pointer
+}
+
+// AudioStream, custom audio stream
+type AudioStream struct {
+ Buffer cptr // Pointer to internal data used by the audio system
+ Processor cptr // Pointer to internal data processor, useful for audio effects
+ SampleRate uint32 // Frequency (samples per second)
+ SampleSize uint32 // Bit depth (bits per sample): 8, 16, 32 (24 not supported)
+ Channels uint32 // Number of channels (1-mono, 2-stereo, ...)
+}
+
+// Sound
+type Sound struct {
+ Stream AudioStream // Audio stream
+ FrameCount uint32 // Total number of frames (considering channels)
+}
+
+// Music, audio stream, anything longer than ~10 seconds should be streamed
+type Music struct {
+ Stream AudioStream // Audio stream
+ FrameCount uint32 // Total number of frames (considering channels)
+ Looping bool // Music looping enable
+ CtxType int32 // Type of music context (audio filetype)
+ CtxData cptr // Audio context data, depends on type
+}
+
+// VrDeviceInfo, Head-Mounted-Display device parameters
+type VrDeviceInfo struct {
+ HResolution int32 // Horizontal resolution in pixels
+ VResolution int32 // Vertical resolution in pixels
+ HScreenSize float32 // Horizontal size in meters
+ VScreenSize float32 // Vertical size in meters
+ EyeToScreenDistance float32 // Distance between eye and display in meters
+ LensSeparationDistance float32 // Lens separation distance in meters
+ InterpupillaryDistance float32 // IPD (distance between pupils) in meters
+ LensDistortionValues [4]float32 // Lens distortion constant parameters
+ ChromaAbCorrection [4]float32 // Chromatic aberration correction parameters
+}
+
+// VrStereoConfig, VR stereo rendering configuration for simulator
+type VrStereoConfig struct {
+ Projection [2]Matrix // VR projection matrices (per eye)
+ ViewOffset [2]Matrix // VR view offset matrices (per eye)
+ LeftLensCenter [2]float32 // VR left lens center
+ RightLensCenter [2]float32 // VR right lens center
+ LeftScreenCenter [2]float32 // VR left screen center
+ RightScreenCenter [2]float32 // VR right screen center
+ Scale [2]float32 // VR distortion scale
+ ScaleIn [2]float32 // VR distortion scale in
+}
+
+// File path list
+type FilePathList struct {
+ Count uint32 // Filepaths entries count
+ Paths cptr // Filepaths entries
+}
+
+// Automation event
+type AutomationEvent struct {
+ Frame uint32 // Event frame
+ Type uint32 // Event type (AutomationEventType)
+ Params [4]int32 // Event parameters (if required)
+}
+
+// Automation event list
+type AutomationEventList struct {
+ Capacity uint32 // Events max entries (MAX_AUTOMATION_EVENTS)
+ Count uint32 // Events entries count
+ Events cptr // Events entries
+}
diff --git a/wasm-runtime/templates/aliases.go.gotmpl b/wasm-runtime/templates/aliases.go.gotmpl
new file mode 100644
index 0000000..717f967
--- /dev/null
+++ b/wasm-runtime/templates/aliases.go.gotmpl
@@ -0,0 +1,16 @@
+{{- $root := . -}}
+
+// AUTOGENERATED FILE. DO NOT EDIT
+{{if .BuildTags}}
+//go:build {{.BuildTags}}
+{{end}}
+package rl
+
+{{- range .Imports }}
+import {{ . }}
+{{- end }}
+
+{{- range .Aliases}}
+// {{ .Description}}
+type {{ .Name}} = {{.Type}}
+{{- end}}
diff --git a/wasm-runtime/templates/defines.go.gotmpl b/wasm-runtime/templates/defines.go.gotmpl
new file mode 100644
index 0000000..56513eb
--- /dev/null
+++ b/wasm-runtime/templates/defines.go.gotmpl
@@ -0,0 +1,30 @@
+{{- $root := . -}}
+
+// AUTOGENERATED FILE. DO NOT EDIT
+{{if .BuildTags}}
+//go:build {{.BuildTags}}
+{{end}}
+package rl
+
+{{- range .Imports }}
+import {{ . }}
+{{- end }}
+
+
+{{- range .Defines}}
+{{if contains .Type "INT" "FLOAT" "FLOAT_MATH" "STRING" }}
+ {{if .Description}}
+ // {{- .Description}}
+ {{- end}}
+ const {{.Name}} = {{.Value}}
+{{- end}}
+{{if contains .Type "COLOR"}}
+ //{{- .Description}}
+ var {{.Name}} = {{.Value}}
+{{- end}}
+
+{{if contains .Type "UNKNOWN"}}
+ // {{- .Description}}
+ {{.Value}}
+{{- end}}
+{{- end}}
diff --git a/wasm-runtime/templates/enums.go.gotmpl b/wasm-runtime/templates/enums.go.gotmpl
new file mode 100644
index 0000000..f06dd4b
--- /dev/null
+++ b/wasm-runtime/templates/enums.go.gotmpl
@@ -0,0 +1,23 @@
+
+{{- $root := . -}}
+
+// AUTOGENERATED FILE. DO NOT EDIT
+{{if .BuildTags}}
+//go:build {{.BuildTags}}
+{{end}}
+package rl
+
+{{- range .Imports }}
+import {{ . }}
+{{- end }}
+
+{{- range .Enums}}
+// {{ .Description}}
+type {{ .Name}} = int32
+const (
+ {{- range .Values}}
+ // {{.Description}}
+ {{.Name}} = {{.Value}}
+ {{- end}}
+)
+{{- end}}
diff --git a/wasm-runtime/templates/funcimport.go.gotmpl b/wasm-runtime/templates/funcimport.go.gotmpl
new file mode 100644
index 0000000..0571118
--- /dev/null
+++ b/wasm-runtime/templates/funcimport.go.gotmpl
@@ -0,0 +1,20 @@
+{{- $root := . -}}
+
+// AUTOGENERATED FILE. DO NOT EDIT
+{{if .BuildTags}}
+//go:build {{.BuildTags}}
+{{end}}
+package rl
+
+{{- range .Imports }}
+import {{ . }}
+{{- end }}
+
+{{- range .FuncImports}}
+{{ .Description}}
+func {{.Name}} (
+ {{- range .Params}}
+ {{.Name}} {{.Type}},
+ {{- end}}
+)
+{{- end}}
diff --git a/wasm-runtime/templates/structs.go.gotmpl b/wasm-runtime/templates/structs.go.gotmpl
new file mode 100644
index 0000000..46f641b
--- /dev/null
+++ b/wasm-runtime/templates/structs.go.gotmpl
@@ -0,0 +1,22 @@
+{{- $root := . -}}
+
+// AUTOGENERATED FILE. DO NOT EDIT
+{{if .BuildTags}}
+//go:build {{.BuildTags}}
+{{end}}
+package rl
+
+{{- range .Imports }}
+import {{ . }}
+{{- end }}
+
+{{- range .Structs}}
+
+// {{ .Description}}
+type {{ .Name}} struct {
+ {{- range .Fields }}
+ {{ .Name }} {{ .Type }} // {{.Description}}
+ {{- end }}
+}
+
+{{- end}}
diff --git a/wasm-runtime/templates/templates.go b/wasm-runtime/templates/templates.go
new file mode 100644
index 0000000..3600221
--- /dev/null
+++ b/wasm-runtime/templates/templates.go
@@ -0,0 +1,57 @@
+package templates
+
+import (
+ "bytes"
+ _ "embed"
+ "fmt"
+ "go/format"
+ "os"
+ "text/template"
+)
+
+// LoadTemplate takes in a gotempl as a string and a name for the template.
+// It panics if template could not be parsed.
+func LoadTemplate(templ, name string) *template.Template {
+ return template.Must(template.New(name).
+ Parse(templ))
+}
+
+// LoadTemplate takes in a gotempl as a string and a name for the template.
+// It panics if template could not be parsed.
+func LoadTemplateFuncs(templ, name string, funcs template.FuncMap) *template.Template {
+ return template.Must(template.New(name).
+ Funcs(funcs).
+ Parse(templ))
+}
+
+// GenerateCode will generate the template using model. and write a file to disk in the format:
+// rl/{name}_gen_unformatted.go
+func GenerateCode(model any, templ string, name string, funcs template.FuncMap) {
+ structs := LoadTemplateFuncs(templ, name, funcs)
+ var buf bytes.Buffer
+ if err := structs.Execute(&buf, model); err != nil {
+ panic(err)
+ }
+ if err := os.WriteFile(fmt.Sprintf("rl/%s_gen_unformatted.go", name), buf.Bytes(), 0644); err != nil {
+ panic(err)
+ }
+}
+
+// GenerateCode will generate the template using model. and write a file to disk in the format:
+// rl/{name}_gen_formatted.go
+func GenerateCodeFormatted(model any, templ string, name string, funcs template.FuncMap) {
+ structs := LoadTemplateFuncs(templ, name, funcs)
+ var buf bytes.Buffer
+ if err := structs.Execute(&buf, model); err != nil {
+ panic(err)
+ }
+
+ formatted, err := format.Source(buf.Bytes())
+ if err != nil {
+ panic(err)
+ }
+
+ if err := os.WriteFile(fmt.Sprintf("rl/%s_gen_formatted.go", name), formatted, 0644); err != nil {
+ panic(err)
+ }
+}
diff --git a/wasm-runtime/wasm.go b/wasm-runtime/wasm.go
new file mode 100644
index 0000000..2078a90
--- /dev/null
+++ b/wasm-runtime/wasm.go
@@ -0,0 +1,170 @@
+//go:build js
+
+package wasm
+
+import (
+ "reflect"
+ "syscall/js"
+ "unsafe"
+)
+
+// Ptr is a pointer to raylib wasm memory
+type Ptr = uint32
+
+const PTR_SIZE = 4 // bytes
+
+// Allocates memory on raylib heap
+//
+//go:wasmimport raylib _malloc
+//go:noescape
+func malloc(size Ptr) Ptr
+
+// malloc the size of V
+func MallocV[T any]() (Ptr, func()) {
+ ptr := malloc(Ptr(reflect.TypeFor[T]().Size()))
+ return ptr, func() { Free(ptr) }
+}
+
+// Free memory allocated on raylib heap
+//
+//go:wasmimport raylib _free
+//go:noescape
+func Free(Ptr)
+
+// _copyToC copies a Go type/struct to C memory. Useful for copying slices and structs.
+//
+// Destination C array must have enough space.
+//
+// NOTE: Value must be a type, it cannot be a slice.
+// To pass a slice, use [unsafe.SliceData]
+//
+//go:wasmimport gojs CopyToC
+//go:noescape
+func _copyToC(Value unsafe.Pointer, srcSize, dstCptr Ptr)
+
+// copies C memory to a Go pointer. Useful for copying C structs into Go structs
+//
+// example usage:
+//
+// type Person struct{
+// Age int32
+// }
+//
+// var cPtrToPersonInCHeap cptr = ...
+//
+// var p Person
+// CopyToGo(unsafe.Pointer(&p),unsafe.SizeOf(p),cPtrToPersonInCHeap)
+//
+// p.Age == (whatever it was in C)
+//
+//go:wasmimport gojs CopyToGo
+//go:noescape
+func _copyToGo(dstGoPtr unsafe.Pointer, size Ptr, src Ptr)
+
+// Copies the src value to the dst cptr
+func CopyToC[T any](src *T, dst Ptr) {
+ size := Ptr(reflect.TypeFor[T]().Size())
+ _copyToC(unsafe.Pointer(src), size, dst)
+}
+
+// Copies srcSize bytes from src into dst.
+func CopyToGo[T any](src Ptr, srcSize Ptr, dst *T) {
+ _copyToGo(unsafe.Pointer(dst), srcSize, src)
+}
+
+// The allocated C string lives on the raylib heap and must be free()'d
+//
+//go:wasmimport gojs CStringFromGoString
+//go:noescape
+func CString(string) Ptr
+
+// Scan for null terminator and return length excluding the null terminator.
+//
+//go:wasmimport gojs CStringGetLength
+//go:noescape
+func _cStringGetLength(cstr Ptr) Ptr
+
+// Scan for null terminator and return length excluding the null terminator.
+//
+//go:wasmimport gojs CStringArrayGetLength
+//go:noescape
+func CStringArrayGetLength(cstrArray Ptr) Ptr
+
+// Copies a C string to Go memory without freeing the C string.
+func GoString(cstr Ptr) string {
+ size := _cStringGetLength(cstr)
+ dstStr := make([]byte, size)
+ CopySliceToGo(cstr, dstStr)
+ return string(dstStr)
+}
+
+// Convert boolean to int32
+func BtoI(v bool) int32 {
+ if v == true {
+ return 1
+ } else {
+ return 0
+ }
+}
+
+// CopyValueToC copies a value to C and returns a pointer to it.
+//
+// NOTE: Value cannot be a slice. For a slice, use [CopySliceToC]
+func CopyValueToC[T any](srcValue *T) (Ptr, func()) {
+ dst, free := MallocV[T]()
+ CopyToC(srcValue, dst)
+ return dst, free
+}
+
+// CopySliceToC allocates a copy of a slice in C memory and returns a cptr to it.
+//
+// NOTE: Value MUST be a slice
+func CopySliceToC[Slice ~[]E, E any](s Slice) (Ptr, func()) {
+ // size of the slice's underlying array in bytes
+ sliceSize := Ptr(unsafe.Sizeof(s[:1][0])) * Ptr(len(s))
+ // allocate C array to hold Value
+ dstCptr := malloc(sliceSize)
+ // copy underlying array memory to C
+ _copyToC(unsafe.Pointer(unsafe.SliceData(s)), sliceSize, dstCptr)
+ return dstCptr, func() { Free(dstCptr) }
+}
+
+// CopyValueToGo copies a value from C memory to Go memory.
+// Useful for copying structs
+//
+// NOTE: Slices are not supported. Use [CopySliceToGo]
+func CopyValueToGo[T any](src Ptr, dst *T) {
+ size := Ptr(unsafe.Sizeof(*dst))
+ _copyToGo(unsafe.Pointer(dst), size, src)
+}
+
+// CopySliceToGo copies a C array into a Go Slice.
+//
+// It copies bytes to the underlying array of the slice.
+func CopySliceToGo[Slice ~[]E, E any](src Ptr, dst Slice) {
+ // size of underlying array
+ var occupiedSize = len(dst)
+ if occupiedSize == 0 {
+ occupiedSize = cap(dst)
+ }
+ size := Ptr(unsafe.Sizeof(dst[0])) * Ptr(occupiedSize)
+ dstPtr := unsafe.SliceData(dst)
+ _copyToGo(unsafe.Pointer(dstPtr), size, src)
+}
+
+//go:wasmimport gojs Alert
+//go:noescape
+func Alert(string)
+
+// Use this instead of a for loop on web platform
+// Everything that you would do inside the for-loop must be done inside UpdateAndDrawFrame
+func SetMain(UpdateAndDrawFrame func()) {
+ var updateLoop js.Func
+ updateLoop = js.FuncOf(func(this js.Value, args []js.Value) any {
+ UpdateAndDrawFrame()
+ js.Global().Call("requestAnimationFrame", updateLoop)
+ return nil
+ })
+ js.Global().Call("requestAnimationFrame", updateLoop)
+ select {}
+}