From 01f77a2e4bd42efb0b3e7cdcea5e14afae68b368 Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Wed, 10 Jan 2024 23:45:31 +0200 Subject: [PATCH] clone raylib.zig into libs --- .gitmodules | 3 + libs/raylib/.gitignore | 58 + libs/raylib/LICENSE | 21 + libs/raylib/README.md | 116 + libs/raylib/bindings.json | 17829 +++++++++++++++++++++++++ libs/raylib/build.zig | 144 + libs/raylib/emscripten/entry.c | 24 + libs/raylib/emscripten/minshell.html | 96 + libs/raylib/emscripten/shell.html | 328 + libs/raylib/generate.zig | 529 + libs/raylib/gui_icons.h | 547 + libs/raylib/inject.c | 5 + libs/raylib/inject.h | 12 + libs/raylib/inject.zig | 999 ++ libs/raylib/intermediate.zig | 48 + libs/raylib/logo.png | Bin 0 -> 1087 bytes libs/raylib/marshal.c | 4035 ++++++ libs/raylib/marshal.h | 2429 ++++ libs/raylib/raylib | 1 + libs/raylib/raylib.json | 11660 ++++++++++++++++ libs/raylib/raylib.zig | 12171 +++++++++++++++++ libs/raylib/raylib_parser.zig | 6 + libs/raylib/raymath.json | 1954 +++ libs/raylib/rlgl.json | 3928 ++++++ libs/raylib/type_mapping.zig | 691 + 25 files changed, 57634 insertions(+) create mode 100644 libs/raylib/.gitignore create mode 100644 libs/raylib/LICENSE create mode 100644 libs/raylib/README.md create mode 100644 libs/raylib/bindings.json create mode 100644 libs/raylib/build.zig create mode 100644 libs/raylib/emscripten/entry.c create mode 100644 libs/raylib/emscripten/minshell.html create mode 100644 libs/raylib/emscripten/shell.html create mode 100644 libs/raylib/generate.zig create mode 100644 libs/raylib/gui_icons.h create mode 100644 libs/raylib/inject.c create mode 100644 libs/raylib/inject.h create mode 100644 libs/raylib/inject.zig create mode 100644 libs/raylib/intermediate.zig create mode 100644 libs/raylib/logo.png create mode 100644 libs/raylib/marshal.c create mode 100644 libs/raylib/marshal.h create mode 160000 libs/raylib/raylib create mode 100644 libs/raylib/raylib.json create mode 100644 libs/raylib/raylib.zig create mode 100644 libs/raylib/raylib_parser.zig create mode 100644 libs/raylib/raymath.json create mode 100644 libs/raylib/rlgl.json create mode 100644 libs/raylib/type_mapping.zig diff --git a/.gitmodules b/.gitmodules index ac57bbc..71c171f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "libs/zgltf"] path = libs/zgltf url = https://github.com/kooparse/zgltf.git +[submodule "libs/raylib/raylib"] + path = libs/raylib/raylib + url = git@github.com:raysan5/raylib.git diff --git a/libs/raylib/.gitignore b/libs/raylib/.gitignore new file mode 100644 index 0000000..5bd9db1 --- /dev/null +++ b/libs/raylib/.gitignore @@ -0,0 +1,58 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +zig-cache/ + +.vscode/settings.json + +.DS_Store diff --git a/libs/raylib/LICENSE b/libs/raylib/LICENSE new file mode 100644 index 0000000..a3d23c1 --- /dev/null +++ b/libs/raylib/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Michael Scherbakow + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/libs/raylib/README.md b/libs/raylib/README.md new file mode 100644 index 0000000..c0c8870 --- /dev/null +++ b/libs/raylib/README.md @@ -0,0 +1,116 @@ +![logo](logo.png) + +# raylib.zig +Idiomatic [raylib](https://www.raylib.com/) (5.1-dev) bindings for [Zig](https://ziglang.org/) (master). + +[Example Usage](#usage) + +Additional infos and WebGL examples [here](https://github.com/ryupold/examples-raylib.zig). + +## supported platforms +- Windows +- macOS +- Linux +- HTML5/WebGL (emscripten) + +## supported APIs +- [x] RLAPI (raylib.h) +- [x] RLAPI (rlgl.h) +- [x] RMAPI (raymath.h) +- [x] Constants + - [x] int, float, string + - [x] Colors + - [x] Versions + +For [raygui](https://github.com/raysan5/raygui) bindings see: https://github.com/ryupold/raygui.zig + +## usage + +The easy way would be adding this as submodule directly in your source folder. +Thats what I do until there is an official package manager for Zig. + +```sh +cd $YOUR_SRC_FOLDER +git submodule add https://github.com/ryupold/raylib.zig raylib +git submodule update --init --recursive +``` + +The bindings have been prebuilt so you just need to add raylib as module + +build.zig: +```zig +const raylib = @import("path/to/raylib.zig/build.zig"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const mode = b.standardOptimizeOption(.{}); + const exe = ...; + raylib.addTo(b, exe, target, mode, .{}); +} +``` + +and import in main.zig: +```zig +const raylib = @import("raylib"); + +pub fn main() void { + raylib.SetConfigFlags(raylib.ConfigFlags{ .FLAG_WINDOW_RESIZABLE = true }); + raylib.InitWindow(800, 800, "hello world!"); + raylib.SetTargetFPS(60); + + defer raylib.CloseWindow(); + + while (!raylib.WindowShouldClose()) { + raylib.BeginDrawing(); + defer raylib.EndDrawing(); + + raylib.ClearBackground(raylib.BLACK); + raylib.DrawFPS(10, 10); + + raylib.DrawText("hello world!", 100, 100, 20, raylib.YELLOW); + } +} +``` + +### WebGL (emscripten) builds + +For Webassembly builds see [examples-raylib.zig/build.zig](https://github.com/ryupold/examples-raylib.zig/blob/main/build.zig) + +This weird workaround with `marshal.h/marshal.c` I actually had to make for Webassembly builds to work, because passing structs as function parameters or returning them cannot be done on the Zig side somehow. If I try it, I get a runtime error "index out of bounds". This happens only in WebAssembly builds. So `marshal.c` must be compiled with `emcc`. See [build.zig](https://github.com/ryupold/examples-raylib.zig/blob/main/build.zig) in the examples. + +## custom definitions +An easy way to fix binding mistakes is to edit them in `bindings.json` and setting the custom flag to true. This way the binding will not be overriden when calling `zig build intermediate`. +Additionally you can add custom definitions into `inject.zig, inject.h, inject.c` these files will be prepended accordingly. + +## disclaimer +I have NOT tested most of the generated functions, so there might be bugs. Especially when it comes to pointers as it is not decidable (for the generator) what a pointer to C means. Could be single item, array, sentinel terminated and/or nullable. If you run into crashes using one of the functions or types in `raylib.zig` feel free to [create an issue](https://github.com/ryupold/raylib.zig/issues) and I will look into it. + +## memory +Some of the functions may return pointers to memory allocated within raylib. +Usually there will be a corresponding Unload/Free function to dispose it. You cannot use a Zig allocator to free that: + +```zig +const data = LoadFileData("test.png"); +defer UnloadFileData(data); + +// using data... +``` + +## generate bindings +for current raylib source (submodule) + +```sh +zig build parse # create JSON files with raylib_parser +zig build intermediate # generate bindings.json (keeps definitions with custom=true) +zig build bindings # write all intermediate bindings to raylib.zig +``` + +For easier diffing and to follow changes to the raylib repository I commit also the generated json files. + +## build raylib_parser (executable) +If you want to build the raylib_parser executable without a C compiler. +```sh +zig build raylib_parser +``` + +you can then find the executable in `./zig-out/bin/` diff --git a/libs/raylib/bindings.json b/libs/raylib/bindings.json new file mode 100644 index 0000000..3b3a395 --- /dev/null +++ b/libs/raylib/bindings.json @@ -0,0 +1,17829 @@ +{ + "functions": [ + { + "name": "InitWindow", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "title", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Initialize window and OpenGL context", + "custom": false + }, + { + "name": "CloseWindow", + "params": [], + "returnType": "void", + "description": "Close window and unload OpenGL context", + "custom": false + }, + { + "name": "WindowShouldClose", + "params": [], + "returnType": "bool", + "description": "Check if application should close (KEY_ESCAPE pressed or windows close icon clicked)", + "custom": false + }, + { + "name": "IsWindowReady", + "params": [], + "returnType": "bool", + "description": "Check if window has been initialized successfully", + "custom": false + }, + { + "name": "IsWindowFullscreen", + "params": [], + "returnType": "bool", + "description": "Check if window is currently fullscreen", + "custom": false + }, + { + "name": "IsWindowHidden", + "params": [], + "returnType": "bool", + "description": "Check if window is currently hidden (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "IsWindowMinimized", + "params": [], + "returnType": "bool", + "description": "Check if window is currently minimized (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "IsWindowMaximized", + "params": [], + "returnType": "bool", + "description": "Check if window is currently maximized (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "IsWindowFocused", + "params": [], + "returnType": "bool", + "description": "Check if window is currently focused (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "IsWindowResized", + "params": [], + "returnType": "bool", + "description": "Check if window has been resized last frame", + "custom": false + }, + { + "name": "IsWindowState", + "params": [ + { + "name": "flag", + "typ": "u32" + } + ], + "returnType": "bool", + "description": "Check if one specific window flag is enabled", + "custom": false + }, + { + "name": "SetWindowState", + "params": [ + { + "name": "flags", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Set window configuration state using flags (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "ClearWindowState", + "params": [ + { + "name": "flags", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Clear window configuration state flags", + "custom": false + }, + { + "name": "ToggleFullscreen", + "params": [], + "returnType": "void", + "description": "Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "ToggleBorderlessWindowed", + "params": [], + "returnType": "void", + "description": "Toggle window state: borderless windowed (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "MaximizeWindow", + "params": [], + "returnType": "void", + "description": "Set window state: maximized, if resizable (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "MinimizeWindow", + "params": [], + "returnType": "void", + "description": "Set window state: minimized, if resizable (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "RestoreWindow", + "params": [], + "returnType": "void", + "description": "Set window state: not minimized/maximized (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "SetWindowIcon", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "void", + "description": "Set icon for window (single image, RGBA 32bit, only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "SetWindowIcons", + "params": [ + { + "name": "images", + "typ": "*Image" + }, + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "SetWindowTitle", + "params": [ + { + "name": "title", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB)", + "custom": false + }, + { + "name": "SetWindowPosition", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set window position on screen (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "SetWindowMonitor", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set monitor for the current window", + "custom": false + }, + { + "name": "SetWindowMinSize", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)", + "custom": false + }, + { + "name": "SetWindowMaxSize", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE)", + "custom": false + }, + { + "name": "SetWindowSize", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set window dimensions", + "custom": false + }, + { + "name": "SetWindowOpacity", + "params": [ + { + "name": "opacity", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "SetWindowFocused", + "params": [], + "returnType": "void", + "description": "Set window focused (only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "GetWindowHandle", + "params": [], + "returnType": "*anyopaque", + "description": "Get native window handle", + "custom": false + }, + { + "name": "GetScreenWidth", + "params": [], + "returnType": "i32", + "description": "Get current screen width", + "custom": false + }, + { + "name": "GetScreenHeight", + "params": [], + "returnType": "i32", + "description": "Get current screen height", + "custom": false + }, + { + "name": "GetRenderWidth", + "params": [], + "returnType": "i32", + "description": "Get current render width (it considers HiDPI)", + "custom": false + }, + { + "name": "GetRenderHeight", + "params": [], + "returnType": "i32", + "description": "Get current render height (it considers HiDPI)", + "custom": false + }, + { + "name": "GetMonitorCount", + "params": [], + "returnType": "i32", + "description": "Get number of connected monitors", + "custom": false + }, + { + "name": "GetCurrentMonitor", + "params": [], + "returnType": "i32", + "description": "Get current connected monitor", + "custom": false + }, + { + "name": "GetMonitorPosition", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "Vector2", + "description": "Get specified monitor position", + "custom": false + }, + { + "name": "GetMonitorWidth", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get specified monitor width (current video mode used by monitor)", + "custom": false + }, + { + "name": "GetMonitorHeight", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get specified monitor height (current video mode used by monitor)", + "custom": false + }, + { + "name": "GetMonitorPhysicalWidth", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get specified monitor physical width in millimetres", + "custom": false + }, + { + "name": "GetMonitorPhysicalHeight", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get specified monitor physical height in millimetres", + "custom": false + }, + { + "name": "GetMonitorRefreshRate", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get specified monitor refresh rate", + "custom": false + }, + { + "name": "GetWindowPosition", + "params": [], + "returnType": "Vector2", + "description": "Get window position XY on monitor", + "custom": false + }, + { + "name": "GetWindowScaleDPI", + "params": [], + "returnType": "Vector2", + "description": "Get window scale DPI factor", + "custom": false + }, + { + "name": "GetMonitorName", + "params": [ + { + "name": "monitor", + "typ": "i32" + } + ], + "returnType": "[*:0]const u8", + "description": "Get the human-readable, UTF-8 encoded name of the specified monitor", + "custom": false + }, + { + "name": "SetClipboardText", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Set clipboard text content", + "custom": false + }, + { + "name": "GetClipboardText", + "params": [], + "returnType": "[*:0]const u8", + "description": "Get clipboard text content", + "custom": false + }, + { + "name": "EnableEventWaiting", + "params": [], + "returnType": "void", + "description": "Enable waiting for events on EndDrawing(), no automatic event polling", + "custom": false + }, + { + "name": "DisableEventWaiting", + "params": [], + "returnType": "void", + "description": "Disable waiting for events on EndDrawing(), automatic events polling", + "custom": false + }, + { + "name": "ShowCursor", + "params": [], + "returnType": "void", + "description": "Shows cursor", + "custom": false + }, + { + "name": "HideCursor", + "params": [], + "returnType": "void", + "description": "Hides cursor", + "custom": false + }, + { + "name": "IsCursorHidden", + "params": [], + "returnType": "bool", + "description": "Check if cursor is not visible", + "custom": false + }, + { + "name": "EnableCursor", + "params": [], + "returnType": "void", + "description": "Enables cursor (unlock cursor)", + "custom": false + }, + { + "name": "DisableCursor", + "params": [], + "returnType": "void", + "description": "Disables cursor (lock cursor)", + "custom": false + }, + { + "name": "IsCursorOnScreen", + "params": [], + "returnType": "bool", + "description": "Check if cursor is on the screen", + "custom": false + }, + { + "name": "ClearBackground", + "params": [ + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Set background color (framebuffer clear color)", + "custom": false + }, + { + "name": "BeginDrawing", + "params": [], + "returnType": "void", + "description": "Setup canvas (framebuffer) to start drawing", + "custom": false + }, + { + "name": "EndDrawing", + "params": [], + "returnType": "void", + "description": "End canvas drawing and swap buffers (double buffering)", + "custom": false + }, + { + "name": "BeginMode2D", + "params": [ + { + "name": "camera", + "typ": "Camera2D" + } + ], + "returnType": "void", + "description": "Begin 2D mode with custom camera (2D)", + "custom": false + }, + { + "name": "EndMode2D", + "params": [], + "returnType": "void", + "description": "Ends 2D mode with custom camera", + "custom": false + }, + { + "name": "BeginMode3D", + "params": [ + { + "name": "camera", + "typ": "Camera3D" + } + ], + "returnType": "void", + "description": "Begin 3D mode with custom camera (3D)", + "custom": false + }, + { + "name": "EndMode3D", + "params": [], + "returnType": "void", + "description": "Ends 3D mode and returns to default 2D orthographic mode", + "custom": false + }, + { + "name": "BeginTextureMode", + "params": [ + { + "name": "target", + "typ": "RenderTexture2D" + } + ], + "returnType": "void", + "description": "Begin drawing to render texture", + "custom": false + }, + { + "name": "EndTextureMode", + "params": [], + "returnType": "void", + "description": "Ends drawing to render texture", + "custom": false + }, + { + "name": "BeginShaderMode", + "params": [ + { + "name": "shader", + "typ": "Shader" + } + ], + "returnType": "void", + "description": "Begin custom shader drawing", + "custom": false + }, + { + "name": "EndShaderMode", + "params": [], + "returnType": "void", + "description": "End custom shader drawing (use default shader)", + "custom": false + }, + { + "name": "BeginBlendMode", + "params": [ + { + "name": "mode", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Begin blending mode (alpha, additive, multiplied, subtract, custom)", + "custom": false + }, + { + "name": "EndBlendMode", + "params": [], + "returnType": "void", + "description": "End blending mode (reset to default: alpha blending)", + "custom": false + }, + { + "name": "BeginScissorMode", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Begin scissor mode (define screen area for following drawing)", + "custom": false + }, + { + "name": "EndScissorMode", + "params": [], + "returnType": "void", + "description": "End scissor mode", + "custom": false + }, + { + "name": "BeginVrStereoMode", + "params": [ + { + "name": "config", + "typ": "VrStereoConfig" + } + ], + "returnType": "void", + "description": "Begin stereo rendering (requires VR simulator)", + "custom": false + }, + { + "name": "EndVrStereoMode", + "params": [], + "returnType": "void", + "description": "End stereo rendering (requires VR simulator)", + "custom": false + }, + { + "name": "LoadVrStereoConfig", + "params": [ + { + "name": "device", + "typ": "VrDeviceInfo" + } + ], + "returnType": "VrStereoConfig", + "description": "Load VR stereo config for VR simulator device parameters", + "custom": false + }, + { + "name": "UnloadVrStereoConfig", + "params": [ + { + "name": "config", + "typ": "VrStereoConfig" + } + ], + "returnType": "void", + "description": "Unload VR stereo config", + "custom": false + }, + { + "name": "LoadShader", + "params": [ + { + "name": "vsFileName", + "typ": "[*:0]const u8" + }, + { + "name": "fsFileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Shader", + "description": "Load shader from files and bind default locations", + "custom": false + }, + { + "name": "LoadShaderFromMemory", + "params": [ + { + "name": "vsCode", + "typ": "[*:0]const u8" + }, + { + "name": "fsCode", + "typ": "[*:0]const u8" + } + ], + "returnType": "Shader", + "description": "Load shader from code strings and bind default locations", + "custom": false + }, + { + "name": "IsShaderReady", + "params": [ + { + "name": "shader", + "typ": "Shader" + } + ], + "returnType": "bool", + "description": "Check if a shader is ready", + "custom": false + }, + { + "name": "GetShaderLocation", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "uniformName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get shader uniform location", + "custom": false + }, + { + "name": "GetShaderLocationAttrib", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "attribName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get shader attribute location", + "custom": false + }, + { + "name": "SetShaderValue", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "value", + "typ": "*const anyopaque" + }, + { + "name": "uniformType", + "typ": "ShaderUniformDataType" + } + ], + "returnType": "void", + "description": "Set shader uniform value", + "custom": true + }, + { + "name": "SetShaderValueV", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "value", + "typ": "*const anyopaque" + }, + { + "name": "uniformType", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set shader uniform value vector", + "custom": false + }, + { + "name": "SetShaderValueMatrix", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set shader uniform value (matrix 4x4)", + "custom": false + }, + { + "name": "SetShaderValueTexture", + "params": [ + { + "name": "shader", + "typ": "Shader" + }, + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "texture", + "typ": "Texture2D" + } + ], + "returnType": "void", + "description": "Set shader uniform value for texture (sampler2d)", + "custom": false + }, + { + "name": "UnloadShader", + "params": [ + { + "name": "shader", + "typ": "Shader" + } + ], + "returnType": "void", + "description": "Unload shader from GPU memory (VRAM)", + "custom": false + }, + { + "name": "GetMouseRay", + "params": [ + { + "name": "mousePosition", + "typ": "Vector2" + }, + { + "name": "camera", + "typ": "Camera3D" + } + ], + "returnType": "Ray", + "description": "Get a ray trace from mouse position", + "custom": false + }, + { + "name": "GetCameraMatrix", + "params": [ + { + "name": "camera", + "typ": "Camera3D" + } + ], + "returnType": "Matrix", + "description": "Get camera transform matrix (view matrix)", + "custom": false + }, + { + "name": "GetCameraMatrix2D", + "params": [ + { + "name": "camera", + "typ": "Camera2D" + } + ], + "returnType": "Matrix", + "description": "Get camera 2d transform matrix", + "custom": false + }, + { + "name": "GetWorldToScreen", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "camera", + "typ": "Camera3D" + } + ], + "returnType": "Vector2", + "description": "Get the screen space position for a 3d world space position", + "custom": false + }, + { + "name": "GetScreenToWorld2D", + "params": [ + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "camera", + "typ": "Camera2D" + } + ], + "returnType": "Vector2", + "description": "Get the world space position for a 2d camera screen space position", + "custom": false + }, + { + "name": "GetWorldToScreenEx", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "camera", + "typ": "Camera3D" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "Vector2", + "description": "Get size position for a 3d world space position", + "custom": false + }, + { + "name": "GetWorldToScreen2D", + "params": [ + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "camera", + "typ": "Camera2D" + } + ], + "returnType": "Vector2", + "description": "Get the screen space position for a 2d camera world space position", + "custom": false + }, + { + "name": "SetTargetFPS", + "params": [ + { + "name": "fps", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set target FPS (maximum)", + "custom": false + }, + { + "name": "GetFrameTime", + "params": [], + "returnType": "f32", + "description": "Get time in seconds for last frame drawn (delta time)", + "custom": false + }, + { + "name": "GetTime", + "params": [], + "returnType": "f64", + "description": "Get elapsed time in seconds since InitWindow()", + "custom": false + }, + { + "name": "GetFPS", + "params": [], + "returnType": "i32", + "description": "Get current FPS", + "custom": false + }, + { + "name": "SwapScreenBuffer", + "params": [], + "returnType": "void", + "description": "Swap back buffer with front buffer (screen drawing)", + "custom": false + }, + { + "name": "PollInputEvents", + "params": [], + "returnType": "void", + "description": "Register all input events", + "custom": false + }, + { + "name": "WaitTime", + "params": [ + { + "name": "seconds", + "typ": "f64" + } + ], + "returnType": "void", + "description": "Wait for some time (halt program execution)", + "custom": false + }, + { + "name": "SetRandomSeed", + "params": [ + { + "name": "seed", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Set the seed for the random number generator", + "custom": false + }, + { + "name": "GetRandomValue", + "params": [ + { + "name": "min", + "typ": "i32" + }, + { + "name": "max", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get a random value between min and max (both included)", + "custom": false + }, + { + "name": "LoadRandomSequence", + "params": [ + { + "name": "count", + "typ": "u32" + }, + { + "name": "min", + "typ": "i32" + }, + { + "name": "max", + "typ": "i32" + } + ], + "returnType": "?[*]i32", + "description": "Load random values sequence, no values repeated", + "custom": false + }, + { + "name": "UnloadRandomSequence", + "params": [ + { + "name": "sequence", + "typ": "?[*]i32" + } + ], + "returnType": "void", + "description": "Unload random values sequence", + "custom": false + }, + { + "name": "TakeScreenshot", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Takes a screenshot of current screen (filename extension defines format)", + "custom": false + }, + { + "name": "SetConfigFlags", + "params": [ + { + "name": "flags", + "typ": "ConfigFlags" + } + ], + "returnType": "void", + "description": "Setup init configuration flags (view FLAGS)", + "custom": true + }, + { + "name": "OpenURL", + "params": [ + { + "name": "url", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Open URL with default system browser (if available)", + "custom": false + }, + { + "name": "TraceLog", + "params": [ + { + "name": "logLevel", + "typ": "i32" + }, + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "void", + "description": "Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)", + "custom": true + }, + { + "name": "SetTraceLogLevel", + "params": [ + { + "name": "logLevel", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set the current threshold (minimum) log level", + "custom": false + }, + { + "name": "MemAlloc", + "params": [ + { + "name": "size", + "typ": "u32" + } + ], + "returnType": "*anyopaque", + "description": "Internal memory allocator", + "custom": false + }, + { + "name": "MemRealloc", + "params": [ + { + "name": "ptr", + "typ": "*anyopaque" + }, + { + "name": "size", + "typ": "u32" + } + ], + "returnType": "*anyopaque", + "description": "Internal memory reallocator", + "custom": false + }, + { + "name": "MemFree", + "params": [ + { + "name": "ptr", + "typ": "*anyopaque" + } + ], + "returnType": "void", + "description": "Internal memory free", + "custom": false + }, + { + "name": "SetTraceLogCallback", + "params": [ + { + "name": "callback", + "typ": "TraceLogCallback" + } + ], + "returnType": "void", + "description": "Set custom trace log", + "custom": false + }, + { + "name": "SetLoadFileDataCallback", + "params": [ + { + "name": "callback", + "typ": "LoadFileDataCallback" + } + ], + "returnType": "void", + "description": "Set custom file binary data loader", + "custom": false + }, + { + "name": "SetSaveFileDataCallback", + "params": [ + { + "name": "callback", + "typ": "SaveFileDataCallback" + } + ], + "returnType": "void", + "description": "Set custom file binary data saver", + "custom": false + }, + { + "name": "SetLoadFileTextCallback", + "params": [ + { + "name": "callback", + "typ": "LoadFileTextCallback" + } + ], + "returnType": "void", + "description": "Set custom file text data loader", + "custom": false + }, + { + "name": "SetSaveFileTextCallback", + "params": [ + { + "name": "callback", + "typ": "SaveFileTextCallback" + } + ], + "returnType": "void", + "description": "Set custom file text data saver", + "custom": false + }, + { + "name": "LoadFileData", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Load file data as byte array (read)", + "custom": false + }, + { + "name": "UnloadFileData", + "params": [ + { + "name": "data", + "typ": "?[*]u8" + } + ], + "returnType": "void", + "description": "Unload file data allocated by LoadFileData()", + "custom": false + }, + { + "name": "SaveFileData", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "data", + "typ": "*anyopaque" + }, + { + "name": "dataSize", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Save data to file from byte array (write), returns true on success", + "custom": false + }, + { + "name": "ExportDataAsCode", + "params": [ + { + "name": "data", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export data to code (.h), returns true on success", + "custom": false + }, + { + "name": "LoadFileText", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "?[*]u8", + "description": "Load text data from file (read), returns a '\\0' terminated string", + "custom": false + }, + { + "name": "UnloadFileText", + "params": [ + { + "name": "text", + "typ": "?[*]u8" + } + ], + "returnType": "void", + "description": "Unload file text data allocated by LoadFileText()", + "custom": false + }, + { + "name": "SaveFileText", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "text", + "typ": "?[*]u8" + } + ], + "returnType": "bool", + "description": "Save text data to file (write), string must be '\\0' terminated, returns true on success", + "custom": false + }, + { + "name": "FileExists", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Check if file exists", + "custom": false + }, + { + "name": "DirectoryExists", + "params": [ + { + "name": "dirPath", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Check if a directory path exists", + "custom": false + }, + { + "name": "IsFileExtension", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "ext", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Check file extension (including point: .png, .wav)", + "custom": false + }, + { + "name": "GetFileLength", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)", + "custom": false + }, + { + "name": "GetFileExtension", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get pointer to extension for a filename string (includes dot: '.png')", + "custom": false + }, + { + "name": "GetFileName", + "params": [ + { + "name": "filePath", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get pointer to filename for a path string", + "custom": false + }, + { + "name": "GetFileNameWithoutExt", + "params": [ + { + "name": "filePath", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get filename string without extension (uses static string)", + "custom": false + }, + { + "name": "GetDirectoryPath", + "params": [ + { + "name": "filePath", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get full path for a given fileName with path (uses static string)", + "custom": false + }, + { + "name": "GetPrevDirectoryPath", + "params": [ + { + "name": "dirPath", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get previous directory path for a given path (uses static string)", + "custom": false + }, + { + "name": "GetWorkingDirectory", + "params": [], + "returnType": "[*:0]const u8", + "description": "Get current working directory (uses static string)", + "custom": false + }, + { + "name": "GetApplicationDirectory", + "params": [], + "returnType": "[*:0]const u8", + "description": "Get the directory of the running application (uses static string)", + "custom": false + }, + { + "name": "ChangeDirectory", + "params": [ + { + "name": "dir", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Change working directory, return true on success", + "custom": false + }, + { + "name": "IsPathFile", + "params": [ + { + "name": "path", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Check if a given path is a file or a directory", + "custom": false + }, + { + "name": "LoadDirectoryFiles", + "params": [ + { + "name": "dirPath", + "typ": "[*:0]const u8" + } + ], + "returnType": "FilePathList", + "description": "Load directory filepaths", + "custom": false + }, + { + "name": "LoadDirectoryFilesEx", + "params": [ + { + "name": "basePath", + "typ": "[*:0]const u8" + }, + { + "name": "filter", + "typ": "[*:0]const u8" + }, + { + "name": "scanSubdirs", + "typ": "bool" + } + ], + "returnType": "FilePathList", + "description": "Load directory filepaths with extension filtering and recursive directory scan", + "custom": false + }, + { + "name": "UnloadDirectoryFiles", + "params": [ + { + "name": "files", + "typ": "FilePathList" + } + ], + "returnType": "void", + "description": "Unload filepaths", + "custom": false + }, + { + "name": "IsFileDropped", + "params": [], + "returnType": "bool", + "description": "Check if a file has been dropped into window", + "custom": false + }, + { + "name": "LoadDroppedFiles", + "params": [], + "returnType": "FilePathList", + "description": "Load dropped filepaths", + "custom": false + }, + { + "name": "UnloadDroppedFiles", + "params": [ + { + "name": "files", + "typ": "FilePathList" + } + ], + "returnType": "void", + "description": "Unload dropped filepaths", + "custom": false + }, + { + "name": "GetFileModTime", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i64", + "description": "Get file modification time (last write time)", + "custom": false + }, + { + "name": "CompressData", + "params": [ + { + "name": "data", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "compDataSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Compress data (DEFLATE algorithm), memory must be MemFree()", + "custom": false + }, + { + "name": "DecompressData", + "params": [ + { + "name": "compData", + "typ": "[*:0]const u8" + }, + { + "name": "compDataSize", + "typ": "i32" + }, + { + "name": "dataSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Decompress data (DEFLATE algorithm), memory must be MemFree()", + "custom": false + }, + { + "name": "EncodeDataBase64", + "params": [ + { + "name": "data", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "outputSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Encode data to Base64 string, memory must be MemFree()", + "custom": false + }, + { + "name": "DecodeDataBase64", + "params": [ + { + "name": "data", + "typ": "[*:0]const u8" + }, + { + "name": "outputSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Decode Base64 string data, memory must be MemFree()", + "custom": false + }, + { + "name": "LoadAutomationEventList", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "AutomationEventList", + "description": "Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS", + "custom": false + }, + { + "name": "UnloadAutomationEventList", + "params": [ + { + "name": "list", + "typ": "AutomationEventList" + } + ], + "returnType": "void", + "description": "Unload automation events list from file", + "custom": false + }, + { + "name": "ExportAutomationEventList", + "params": [ + { + "name": "list", + "typ": "AutomationEventList" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export automation events list as text file", + "custom": false + }, + { + "name": "SetAutomationEventList", + "params": [ + { + "name": "list", + "typ": "?[*]AutomationEventList" + } + ], + "returnType": "void", + "description": "Set automation event list to record to", + "custom": false + }, + { + "name": "SetAutomationEventBaseFrame", + "params": [ + { + "name": "frame", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set automation event internal base frame to start recording", + "custom": false + }, + { + "name": "StartAutomationEventRecording", + "params": [], + "returnType": "void", + "description": "Start recording automation events (AutomationEventList must be set)", + "custom": false + }, + { + "name": "StopAutomationEventRecording", + "params": [], + "returnType": "void", + "description": "Stop recording automation events", + "custom": false + }, + { + "name": "PlayAutomationEvent", + "params": [ + { + "name": "event", + "typ": "AutomationEvent" + } + ], + "returnType": "void", + "description": "Play a recorded automation event", + "custom": false + }, + { + "name": "IsKeyPressed", + "params": [ + { + "name": "key", + "typ": "KeyboardKey" + } + ], + "returnType": "bool", + "description": "Check if a key has been pressed once", + "custom": true + }, + { + "name": "IsKeyPressedRepeat", + "params": [ + { + "name": "key", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Check if a key has been pressed again (Only PLATFORM_DESKTOP)", + "custom": false + }, + { + "name": "IsKeyDown", + "params": [ + { + "name": "key", + "typ": "KeyboardKey" + } + ], + "returnType": "bool", + "description": "Check if a key is being pressed", + "custom": true + }, + { + "name": "IsKeyReleased", + "params": [ + { + "name": "key", + "typ": "KeyboardKey" + } + ], + "returnType": "bool", + "description": "Check if a key has been released once", + "custom": true + }, + { + "name": "IsKeyUp", + "params": [ + { + "name": "key", + "typ": "KeyboardKey" + } + ], + "returnType": "bool", + "description": "Check if a key is NOT being pressed", + "custom": true + }, + { + "name": "GetKeyPressed", + "params": [], + "returnType": "i32", + "description": "Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty", + "custom": false + }, + { + "name": "GetCharPressed", + "params": [], + "returnType": "i32", + "description": "Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty", + "custom": false + }, + { + "name": "SetExitKey", + "params": [ + { + "name": "key", + "typ": "KeyboardKey" + } + ], + "returnType": "void", + "description": "Set a custom key to exit program (default is ESC)", + "custom": true + }, + { + "name": "IsGamepadAvailable", + "params": [ + { + "name": "gamepad", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Check if a gamepad is available", + "custom": false + }, + { + "name": "GetGamepadName", + "params": [ + { + "name": "gamepad", + "typ": "i32" + } + ], + "returnType": "[*:0]const u8", + "description": "Get gamepad internal name id", + "custom": false + }, + { + "name": "IsGamepadButtonPressed", + "params": [ + { + "name": "gamepad", + "typ": "i32" + }, + { + "name": "button", + "typ": "GamepadButton" + } + ], + "returnType": "bool", + "description": "Check if a gamepad button has been pressed once", + "custom": true + }, + { + "name": "IsGamepadButtonDown", + "params": [ + { + "name": "gamepad", + "typ": "i32" + }, + { + "name": "button", + "typ": "GamepadButton" + } + ], + "returnType": "bool", + "description": "Check if a gamepad button is being pressed", + "custom": true + }, + { + "name": "IsGamepadButtonReleased", + "params": [ + { + "name": "gamepad", + "typ": "i32" + }, + { + "name": "button", + "typ": "GamepadButton" + } + ], + "returnType": "bool", + "description": "Check if a gamepad button has been released once", + "custom": true + }, + { + "name": "IsGamepadButtonUp", + "params": [ + { + "name": "gamepad", + "typ": "i32" + }, + { + "name": "button", + "typ": "GamepadButton" + } + ], + "returnType": "bool", + "description": "Check if a gamepad button is NOT being pressed", + "custom": true + }, + { + "name": "GetGamepadButtonPressed", + "params": [], + "returnType": "GamepadButton", + "description": "Get the last gamepad button pressed", + "custom": true + }, + { + "name": "GetGamepadAxisCount", + "params": [ + { + "name": "gamepad", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get gamepad axis count for a gamepad", + "custom": false + }, + { + "name": "GetGamepadAxisMovement", + "params": [ + { + "name": "gamepad", + "typ": "i32" + }, + { + "name": "axis", + "typ": "GamepadAxis" + } + ], + "returnType": "f32", + "description": "Get axis movement value for a gamepad axis", + "custom": true + }, + { + "name": "SetGamepadMappings", + "params": [ + { + "name": "mappings", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Set internal gamepad mappings (SDL_GameControllerDB)", + "custom": false + }, + { + "name": "IsMouseButtonPressed", + "params": [ + { + "name": "button", + "typ": "MouseButton" + } + ], + "returnType": "bool", + "description": "Check if a mouse button has been pressed once", + "custom": true + }, + { + "name": "IsMouseButtonDown", + "params": [ + { + "name": "button", + "typ": "MouseButton" + } + ], + "returnType": "bool", + "description": "Check if a mouse button is being pressed", + "custom": true + }, + { + "name": "IsMouseButtonReleased", + "params": [ + { + "name": "button", + "typ": "MouseButton" + } + ], + "returnType": "bool", + "description": "Check if a mouse button has been released once", + "custom": true + }, + { + "name": "IsMouseButtonUp", + "params": [ + { + "name": "button", + "typ": "MouseButton" + } + ], + "returnType": "bool", + "description": "Check if a mouse button is NOT being pressed", + "custom": true + }, + { + "name": "GetMouseX", + "params": [], + "returnType": "i32", + "description": "Get mouse position X", + "custom": false + }, + { + "name": "GetMouseY", + "params": [], + "returnType": "i32", + "description": "Get mouse position Y", + "custom": false + }, + { + "name": "GetMousePosition", + "params": [], + "returnType": "Vector2", + "description": "Get mouse position XY", + "custom": false + }, + { + "name": "GetMouseDelta", + "params": [], + "returnType": "Vector2", + "description": "Get mouse delta between frames", + "custom": false + }, + { + "name": "SetMousePosition", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set mouse position XY", + "custom": false + }, + { + "name": "SetMouseOffset", + "params": [ + { + "name": "offsetX", + "typ": "i32" + }, + { + "name": "offsetY", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set mouse offset", + "custom": false + }, + { + "name": "SetMouseScale", + "params": [ + { + "name": "scaleX", + "typ": "f32" + }, + { + "name": "scaleY", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set mouse scaling", + "custom": false + }, + { + "name": "GetMouseWheelMove", + "params": [], + "returnType": "f32", + "description": "Get mouse wheel movement for X or Y, whichever is larger", + "custom": false + }, + { + "name": "GetMouseWheelMoveV", + "params": [], + "returnType": "Vector2", + "description": "Get mouse wheel movement for both X and Y", + "custom": false + }, + { + "name": "SetMouseCursor", + "params": [ + { + "name": "cursor", + "typ": "MouseCursor" + } + ], + "returnType": "void", + "description": "Set mouse cursor", + "custom": true + }, + { + "name": "GetTouchX", + "params": [], + "returnType": "i32", + "description": "Get touch position X for touch point 0 (relative to screen size)", + "custom": false + }, + { + "name": "GetTouchY", + "params": [], + "returnType": "i32", + "description": "Get touch position Y for touch point 0 (relative to screen size)", + "custom": false + }, + { + "name": "GetTouchPosition", + "params": [ + { + "name": "index", + "typ": "i32" + } + ], + "returnType": "Vector2", + "description": "Get touch position XY for a touch point index (relative to screen size)", + "custom": false + }, + { + "name": "GetTouchPointId", + "params": [ + { + "name": "index", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get touch point identifier for given index", + "custom": false + }, + { + "name": "GetTouchPointCount", + "params": [], + "returnType": "i32", + "description": "Get number of touch points", + "custom": false + }, + { + "name": "SetGesturesEnabled", + "params": [ + { + "name": "flags", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable a set of gestures using flags", + "custom": false + }, + { + "name": "IsGestureDetected", + "params": [ + { + "name": "gesture", + "typ": "u32" + } + ], + "returnType": "bool", + "description": "Check if a gesture have been detected", + "custom": false + }, + { + "name": "GetGestureDetected", + "params": [], + "returnType": "i32", + "description": "Get latest detected gesture", + "custom": false + }, + { + "name": "GetGestureHoldDuration", + "params": [], + "returnType": "f32", + "description": "Get gesture hold time in milliseconds", + "custom": false + }, + { + "name": "GetGestureDragVector", + "params": [], + "returnType": "Vector2", + "description": "Get gesture drag vector", + "custom": false + }, + { + "name": "GetGestureDragAngle", + "params": [], + "returnType": "f32", + "description": "Get gesture drag angle", + "custom": false + }, + { + "name": "GetGesturePinchVector", + "params": [], + "returnType": "Vector2", + "description": "Get gesture pinch delta", + "custom": false + }, + { + "name": "GetGesturePinchAngle", + "params": [], + "returnType": "f32", + "description": "Get gesture pinch angle", + "custom": false + }, + { + "name": "UpdateCamera", + "params": [ + { + "name": "camera", + "typ": "*Camera3D" + }, + { + "name": "mode", + "typ": "CameraMode" + } + ], + "returnType": "void", + "description": "Update camera position for selected mode", + "custom": true + }, + { + "name": "UpdateCameraPro", + "params": [ + { + "name": "camera", + "typ": "?[*]Camera3D" + }, + { + "name": "movement", + "typ": "Vector3" + }, + { + "name": "rotation", + "typ": "Vector3" + }, + { + "name": "zoom", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Update camera movement/rotation", + "custom": false + }, + { + "name": "SetShapesTexture", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "source", + "typ": "Rectangle" + } + ], + "returnType": "void", + "description": "Set texture and rectangle to be used on shapes drawing", + "custom": false + }, + { + "name": "GetShapesTexture", + "params": [], + "returnType": "Texture2D", + "description": "Get texture that is used for shapes drawing", + "custom": false + }, + { + "name": "GetShapesTextureRectangle", + "params": [], + "returnType": "Rectangle", + "description": "Get texture source rectangle that is used for shapes drawing", + "custom": false + }, + { + "name": "DrawPixel", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a pixel", + "custom": false + }, + { + "name": "DrawPixelV", + "params": [ + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a pixel (Vector version)", + "custom": false + }, + { + "name": "DrawLine", + "params": [ + { + "name": "startPosX", + "typ": "i32" + }, + { + "name": "startPosY", + "typ": "i32" + }, + { + "name": "endPosX", + "typ": "i32" + }, + { + "name": "endPosY", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a line", + "custom": false + }, + { + "name": "DrawLineV", + "params": [ + { + "name": "startPos", + "typ": "Vector2" + }, + { + "name": "endPos", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a line (using gl lines)", + "custom": false + }, + { + "name": "DrawLineEx", + "params": [ + { + "name": "startPos", + "typ": "Vector2" + }, + { + "name": "endPos", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a line (using triangles/quads)", + "custom": false + }, + { + "name": "DrawLineStrip", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw lines sequence (using gl lines)", + "custom": false + }, + { + "name": "DrawLineBezier", + "params": [ + { + "name": "startPos", + "typ": "Vector2" + }, + { + "name": "endPos", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw line segment cubic-bezier in-out interpolation", + "custom": false + }, + { + "name": "DrawCircle", + "params": [ + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled circle", + "custom": false + }, + { + "name": "DrawCircleSector", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "startAngle", + "typ": "f32" + }, + { + "name": "endAngle", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a piece of a circle", + "custom": false + }, + { + "name": "DrawCircleSectorLines", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "startAngle", + "typ": "f32" + }, + { + "name": "endAngle", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw circle sector outline", + "custom": false + }, + { + "name": "DrawCircleGradient", + "params": [ + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color1", + "typ": "Color" + }, + { + "name": "color2", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a gradient-filled circle", + "custom": false + }, + { + "name": "DrawCircleV", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled circle (Vector version)", + "custom": false + }, + { + "name": "DrawCircleLines", + "params": [ + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw circle outline", + "custom": false + }, + { + "name": "DrawCircleLinesV", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw circle outline (Vector version)", + "custom": false + }, + { + "name": "DrawEllipse", + "params": [ + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radiusH", + "typ": "f32" + }, + { + "name": "radiusV", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw ellipse", + "custom": false + }, + { + "name": "DrawEllipseLines", + "params": [ + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radiusH", + "typ": "f32" + }, + { + "name": "radiusV", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw ellipse outline", + "custom": false + }, + { + "name": "DrawRing", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "innerRadius", + "typ": "f32" + }, + { + "name": "outerRadius", + "typ": "f32" + }, + { + "name": "startAngle", + "typ": "f32" + }, + { + "name": "endAngle", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw ring", + "custom": false + }, + { + "name": "DrawRingLines", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "innerRadius", + "typ": "f32" + }, + { + "name": "outerRadius", + "typ": "f32" + }, + { + "name": "startAngle", + "typ": "f32" + }, + { + "name": "endAngle", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw ring outline", + "custom": false + }, + { + "name": "DrawRectangle", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled rectangle", + "custom": false + }, + { + "name": "DrawRectangleV", + "params": [ + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "size", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled rectangle (Vector version)", + "custom": false + }, + { + "name": "DrawRectangleRec", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled rectangle", + "custom": false + }, + { + "name": "DrawRectanglePro", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "origin", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled rectangle with pro parameters", + "custom": false + }, + { + "name": "DrawRectangleGradientV", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color1", + "typ": "Color" + }, + { + "name": "color2", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a vertical-gradient-filled rectangle", + "custom": false + }, + { + "name": "DrawRectangleGradientH", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color1", + "typ": "Color" + }, + { + "name": "color2", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a horizontal-gradient-filled rectangle", + "custom": false + }, + { + "name": "DrawRectangleGradientEx", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "col1", + "typ": "Color" + }, + { + "name": "col2", + "typ": "Color" + }, + { + "name": "col3", + "typ": "Color" + }, + { + "name": "col4", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a gradient-filled rectangle with custom vertex colors", + "custom": false + }, + { + "name": "DrawRectangleLines", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle outline", + "custom": false + }, + { + "name": "DrawRectangleLinesEx", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "lineThick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle outline with extended parameters", + "custom": false + }, + { + "name": "DrawRectangleRounded", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "roundness", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle with rounded edges", + "custom": false + }, + { + "name": "DrawRectangleRoundedLines", + "params": [ + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "roundness", + "typ": "f32" + }, + { + "name": "segments", + "typ": "i32" + }, + { + "name": "lineThick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle with rounded edges outline", + "custom": false + }, + { + "name": "DrawTriangle", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + }, + { + "name": "v3", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)", + "custom": false + }, + { + "name": "DrawTriangleLines", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + }, + { + "name": "v3", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw triangle outline (vertex in counter-clockwise order!)", + "custom": false + }, + { + "name": "DrawTriangleFan", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a triangle fan defined by points (first vertex is the center)", + "custom": false + }, + { + "name": "DrawTriangleStrip", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a triangle strip defined by points", + "custom": false + }, + { + "name": "DrawPoly", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "sides", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a regular polygon (Vector version)", + "custom": false + }, + { + "name": "DrawPolyLines", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "sides", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a polygon outline of n sides", + "custom": false + }, + { + "name": "DrawPolyLinesEx", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "sides", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "lineThick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a polygon outline of n sides with extended parameters", + "custom": false + }, + { + "name": "DrawSplineLinear", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline: Linear, minimum 2 points", + "custom": false + }, + { + "name": "DrawSplineBasis", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline: B-Spline, minimum 4 points", + "custom": false + }, + { + "name": "DrawSplineCatmullRom", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline: Catmull-Rom, minimum 4 points", + "custom": false + }, + { + "name": "DrawSplineBezierQuadratic", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]", + "custom": false + }, + { + "name": "DrawSplineBezierCubic", + "params": [ + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]", + "custom": false + }, + { + "name": "DrawSplineSegmentLinear", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline segment: Linear, 2 points", + "custom": false + }, + { + "name": "DrawSplineSegmentBasis", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline segment: B-Spline, 4 points", + "custom": false + }, + { + "name": "DrawSplineSegmentCatmullRom", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline segment: Catmull-Rom, 4 points", + "custom": false + }, + { + "name": "DrawSplineSegmentBezierQuadratic", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "c2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline segment: Quadratic Bezier, 2 points, 1 control point", + "custom": false + }, + { + "name": "DrawSplineSegmentBezierCubic", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "c2", + "typ": "Vector2" + }, + { + "name": "c3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "thick", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw spline segment: Cubic Bezier, 2 points, 2 control points", + "custom": false + }, + { + "name": "GetSplinePointLinear", + "params": [ + { + "name": "startPos", + "typ": "Vector2" + }, + { + "name": "endPos", + "typ": "Vector2" + }, + { + "name": "t", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Get (evaluate) spline point: Linear", + "custom": false + }, + { + "name": "GetSplinePointBasis", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "t", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Get (evaluate) spline point: B-Spline", + "custom": false + }, + { + "name": "GetSplinePointCatmullRom", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "t", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Get (evaluate) spline point: Catmull-Rom", + "custom": false + }, + { + "name": "GetSplinePointBezierQuad", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "c2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + }, + { + "name": "t", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Get (evaluate) spline point: Quadratic Bezier", + "custom": false + }, + { + "name": "GetSplinePointBezierCubic", + "params": [ + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "c2", + "typ": "Vector2" + }, + { + "name": "c3", + "typ": "Vector2" + }, + { + "name": "p4", + "typ": "Vector2" + }, + { + "name": "t", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Get (evaluate) spline point: Cubic Bezier", + "custom": false + }, + { + "name": "CheckCollisionRecs", + "params": [ + { + "name": "rec1", + "typ": "Rectangle" + }, + { + "name": "rec2", + "typ": "Rectangle" + } + ], + "returnType": "bool", + "description": "Check collision between two rectangles", + "custom": false + }, + { + "name": "CheckCollisionCircles", + "params": [ + { + "name": "center1", + "typ": "Vector2" + }, + { + "name": "radius1", + "typ": "f32" + }, + { + "name": "center2", + "typ": "Vector2" + }, + { + "name": "radius2", + "typ": "f32" + } + ], + "returnType": "bool", + "description": "Check collision between two circles", + "custom": false + }, + { + "name": "CheckCollisionCircleRec", + "params": [ + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rec", + "typ": "Rectangle" + } + ], + "returnType": "bool", + "description": "Check collision between circle and rectangle", + "custom": false + }, + { + "name": "CheckCollisionPointRec", + "params": [ + { + "name": "point", + "typ": "Vector2" + }, + { + "name": "rec", + "typ": "Rectangle" + } + ], + "returnType": "bool", + "description": "Check if point is inside rectangle", + "custom": false + }, + { + "name": "CheckCollisionPointCircle", + "params": [ + { + "name": "point", + "typ": "Vector2" + }, + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "f32" + } + ], + "returnType": "bool", + "description": "Check if point is inside circle", + "custom": false + }, + { + "name": "CheckCollisionPointTriangle", + "params": [ + { + "name": "point", + "typ": "Vector2" + }, + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "p3", + "typ": "Vector2" + } + ], + "returnType": "bool", + "description": "Check if point is inside a triangle", + "custom": false + }, + { + "name": "CheckCollisionPointPoly", + "params": [ + { + "name": "point", + "typ": "Vector2" + }, + { + "name": "points", + "typ": "?[*]Vector2" + }, + { + "name": "pointCount", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Check if point is within a polygon described by array of vertices", + "custom": false + }, + { + "name": "CheckCollisionLines", + "params": [ + { + "name": "startPos1", + "typ": "Vector2" + }, + { + "name": "endPos1", + "typ": "Vector2" + }, + { + "name": "startPos2", + "typ": "Vector2" + }, + { + "name": "endPos2", + "typ": "Vector2" + }, + { + "name": "collisionPoint", + "typ": "?[*]Vector2" + } + ], + "returnType": "bool", + "description": "Check the collision between two lines defined by two points each, returns collision point by reference", + "custom": false + }, + { + "name": "CheckCollisionPointLine", + "params": [ + { + "name": "point", + "typ": "Vector2" + }, + { + "name": "p1", + "typ": "Vector2" + }, + { + "name": "p2", + "typ": "Vector2" + }, + { + "name": "threshold", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]", + "custom": false + }, + { + "name": "GetCollisionRec", + "params": [ + { + "name": "rec1", + "typ": "Rectangle" + }, + { + "name": "rec2", + "typ": "Rectangle" + } + ], + "returnType": "Rectangle", + "description": "Get collision rectangle for two rectangles collision", + "custom": false + }, + { + "name": "LoadImage", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Image", + "description": "Load image from file into CPU memory (RAM)", + "custom": false + }, + { + "name": "LoadImageRaw", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + }, + { + "name": "headerSize", + "typ": "i32" + } + ], + "returnType": "Image", + "description": "Load image from RAW file data", + "custom": false + }, + { + "name": "LoadImageSvg", + "params": [ + { + "name": "fileNameOrString", + "typ": "[*:0]const u8" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "Image", + "description": "Load image from SVG file data or string with specified size", + "custom": false + }, + { + "name": "LoadImageAnim", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "frames", + "typ": "?[*]i32" + } + ], + "returnType": "Image", + "description": "Load image sequence from file (frames appended to image.data)", + "custom": false + }, + { + "name": "LoadImageAnimFromMemory", + "params": [ + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "fileData", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "frames", + "typ": "?[*]i32" + } + ], + "returnType": "Image", + "description": "Load image sequence from memory buffer", + "custom": false + }, + { + "name": "LoadImageFromMemory", + "params": [ + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "fileData", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + } + ], + "returnType": "Image", + "description": "Load image from memory buffer, fileType refers to extension: i.e. '.png'", + "custom": false + }, + { + "name": "LoadImageFromTexture", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + } + ], + "returnType": "Image", + "description": "Load image from GPU texture data", + "custom": false + }, + { + "name": "LoadImageFromScreen", + "params": [], + "returnType": "Image", + "description": "Load image from screen buffer and (screenshot)", + "custom": false + }, + { + "name": "IsImageReady", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "bool", + "description": "Check if an image is ready", + "custom": false + }, + { + "name": "UnloadImage", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "void", + "description": "Unload image from CPU memory (RAM)", + "custom": false + }, + { + "name": "ExportImage", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export image data to file, returns true on success", + "custom": false + }, + { + "name": "ExportImageToMemory", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "fileSize", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]u8", + "description": "Export image to memory buffer", + "custom": false + }, + { + "name": "ExportImageAsCode", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export image as code file defining an array of bytes, returns true on success", + "custom": false + }, + { + "name": "GenImageColor", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Generate image: plain color", + "custom": false + }, + { + "name": "GenImageGradientLinear", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "direction", + "typ": "i32" + }, + { + "name": "start", + "typ": "Color" + }, + { + "name": "end", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient", + "custom": false + }, + { + "name": "GenImageGradientRadial", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "density", + "typ": "f32" + }, + { + "name": "inner", + "typ": "Color" + }, + { + "name": "outer", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Generate image: radial gradient", + "custom": false + }, + { + "name": "GenImageGradientSquare", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "density", + "typ": "f32" + }, + { + "name": "inner", + "typ": "Color" + }, + { + "name": "outer", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Generate image: square gradient", + "custom": false + }, + { + "name": "GenImageChecked", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "checksX", + "typ": "i32" + }, + { + "name": "checksY", + "typ": "i32" + }, + { + "name": "col1", + "typ": "Color" + }, + { + "name": "col2", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Generate image: checked", + "custom": false + }, + { + "name": "GenImageWhiteNoise", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "factor", + "typ": "f32" + } + ], + "returnType": "Image", + "description": "Generate image: white noise", + "custom": false + }, + { + "name": "GenImagePerlinNoise", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "offsetX", + "typ": "i32" + }, + { + "name": "offsetY", + "typ": "i32" + }, + { + "name": "scale", + "typ": "f32" + } + ], + "returnType": "Image", + "description": "Generate image: perlin noise", + "custom": false + }, + { + "name": "GenImageCellular", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "tileSize", + "typ": "i32" + } + ], + "returnType": "Image", + "description": "Generate image: cellular algorithm, bigger tileSize means bigger cells", + "custom": false + }, + { + "name": "GenImageText", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "Image", + "description": "Generate image: grayscale image from text data", + "custom": false + }, + { + "name": "ImageCopy", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "Image", + "description": "Create an image duplicate (useful for transformations)", + "custom": false + }, + { + "name": "ImageFromImage", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "rec", + "typ": "Rectangle" + } + ], + "returnType": "Image", + "description": "Create an image from another image piece", + "custom": false + }, + { + "name": "ImageText", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Create an image from text (default font)", + "custom": false + }, + { + "name": "ImageTextEx", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "Image", + "description": "Create an image from text (custom sprite font)", + "custom": false + }, + { + "name": "ImageFormat", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "newFormat", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Convert image data to desired format", + "custom": false + }, + { + "name": "ImageToPOT", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "fill", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Convert image to POT (power-of-two)", + "custom": false + }, + { + "name": "ImageCrop", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "crop", + "typ": "Rectangle" + } + ], + "returnType": "void", + "description": "Crop an image to a defined rectangle", + "custom": false + }, + { + "name": "ImageAlphaCrop", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "threshold", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Crop image depending on alpha value", + "custom": false + }, + { + "name": "ImageAlphaClear", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "color", + "typ": "Color" + }, + { + "name": "threshold", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Clear alpha channel to desired color", + "custom": false + }, + { + "name": "ImageAlphaMask", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "alphaMask", + "typ": "Image" + } + ], + "returnType": "void", + "description": "Apply alpha mask to image", + "custom": false + }, + { + "name": "ImageAlphaPremultiply", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Premultiply alpha channel", + "custom": false + }, + { + "name": "ImageBlurGaussian", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "blurSize", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Apply Gaussian blur using a box blur approximation", + "custom": false + }, + { + "name": "ImageKernelConvolution", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "kernel", + "typ": "?[*]f32" + }, + { + "name": "kernelSize", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Apply Custom Square image convolution kernel", + "custom": false + }, + { + "name": "ImageResize", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "newWidth", + "typ": "i32" + }, + { + "name": "newHeight", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Resize image (Bicubic scaling algorithm)", + "custom": false + }, + { + "name": "ImageResizeNN", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "newWidth", + "typ": "i32" + }, + { + "name": "newHeight", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Resize image (Nearest-Neighbor scaling algorithm)", + "custom": false + }, + { + "name": "ImageResizeCanvas", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "newWidth", + "typ": "i32" + }, + { + "name": "newHeight", + "typ": "i32" + }, + { + "name": "offsetX", + "typ": "i32" + }, + { + "name": "offsetY", + "typ": "i32" + }, + { + "name": "fill", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Resize canvas and fill with color", + "custom": false + }, + { + "name": "ImageMipmaps", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Compute all mipmap levels for a provided image", + "custom": false + }, + { + "name": "ImageDither", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "rBpp", + "typ": "i32" + }, + { + "name": "gBpp", + "typ": "i32" + }, + { + "name": "bBpp", + "typ": "i32" + }, + { + "name": "aBpp", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Dither image data to 16bpp or lower (Floyd-Steinberg dithering)", + "custom": false + }, + { + "name": "ImageFlipVertical", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Flip image vertically", + "custom": false + }, + { + "name": "ImageFlipHorizontal", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Flip image horizontally", + "custom": false + }, + { + "name": "ImageRotate", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "degrees", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Rotate image by input angle in degrees (-359 to 359)", + "custom": false + }, + { + "name": "ImageRotateCW", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Rotate image clockwise 90deg", + "custom": false + }, + { + "name": "ImageRotateCCW", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Rotate image counter-clockwise 90deg", + "custom": false + }, + { + "name": "ImageColorTint", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Modify image color: tint", + "custom": false + }, + { + "name": "ImageColorInvert", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Modify image color: invert", + "custom": false + }, + { + "name": "ImageColorGrayscale", + "params": [ + { + "name": "image", + "typ": "*Image" + } + ], + "returnType": "void", + "description": "Modify image color: grayscale", + "custom": false + }, + { + "name": "ImageColorContrast", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "contrast", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Modify image color: contrast (-100 to 100)", + "custom": false + }, + { + "name": "ImageColorBrightness", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "brightness", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Modify image color: brightness (-255 to 255)", + "custom": false + }, + { + "name": "ImageColorReplace", + "params": [ + { + "name": "image", + "typ": "*Image" + }, + { + "name": "color", + "typ": "Color" + }, + { + "name": "replace", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Modify image color: replace color", + "custom": false + }, + { + "name": "LoadImageColors", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "?[*]Color", + "description": "Load color data from image as a Color array (RGBA - 32bit)", + "custom": false + }, + { + "name": "LoadImagePalette", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "maxPaletteSize", + "typ": "i32" + }, + { + "name": "colorCount", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]Color", + "description": "Load colors palette from image as a Color array (RGBA - 32bit)", + "custom": false + }, + { + "name": "UnloadImageColors", + "params": [ + { + "name": "colors", + "typ": "?[*]Color" + } + ], + "returnType": "void", + "description": "Unload color data loaded with LoadImageColors()", + "custom": false + }, + { + "name": "UnloadImagePalette", + "params": [ + { + "name": "colors", + "typ": "?[*]Color" + } + ], + "returnType": "void", + "description": "Unload colors palette loaded with LoadImagePalette()", + "custom": false + }, + { + "name": "GetImageAlphaBorder", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "threshold", + "typ": "f32" + } + ], + "returnType": "Rectangle", + "description": "Get image alpha border rectangle", + "custom": false + }, + { + "name": "GetImageColor", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + } + ], + "returnType": "Color", + "description": "Get image pixel color at (x, y) position", + "custom": false + }, + { + "name": "ImageClearBackground", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Clear image background with given color", + "custom": false + }, + { + "name": "ImageDrawPixel", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw pixel within an image", + "custom": false + }, + { + "name": "ImageDrawPixelV", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw pixel within an image (Vector version)", + "custom": false + }, + { + "name": "ImageDrawLine", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "startPosX", + "typ": "i32" + }, + { + "name": "startPosY", + "typ": "i32" + }, + { + "name": "endPosX", + "typ": "i32" + }, + { + "name": "endPosY", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw line within an image", + "custom": false + }, + { + "name": "ImageDrawLineV", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "start", + "typ": "Vector2" + }, + { + "name": "end", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw line within an image (Vector version)", + "custom": false + }, + { + "name": "ImageDrawCircle", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radius", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a filled circle within an image", + "custom": false + }, + { + "name": "ImageDrawCircleV", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a filled circle within an image (Vector version)", + "custom": false + }, + { + "name": "ImageDrawCircleLines", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "centerX", + "typ": "i32" + }, + { + "name": "centerY", + "typ": "i32" + }, + { + "name": "radius", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw circle outline within an image", + "custom": false + }, + { + "name": "ImageDrawCircleLinesV", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "center", + "typ": "Vector2" + }, + { + "name": "radius", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw circle outline within an image (Vector version)", + "custom": false + }, + { + "name": "ImageDrawRectangle", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle within an image", + "custom": false + }, + { + "name": "ImageDrawRectangleV", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "size", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle within an image (Vector version)", + "custom": false + }, + { + "name": "ImageDrawRectangleRec", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle within an image", + "custom": false + }, + { + "name": "ImageDrawRectangleLines", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "thick", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw rectangle lines within an image", + "custom": false + }, + { + "name": "ImageDraw", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "src", + "typ": "Image" + }, + { + "name": "srcRec", + "typ": "Rectangle" + }, + { + "name": "dstRec", + "typ": "Rectangle" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a source image within a destination image (tint applied to source)", + "custom": false + }, + { + "name": "ImageDrawText", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw text (using default font) within an image (destination)", + "custom": false + }, + { + "name": "ImageDrawTextEx", + "params": [ + { + "name": "dst", + "typ": "*Image" + }, + { + "name": "font", + "typ": "Font" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw text (custom sprite font) within an image (destination)", + "custom": false + }, + { + "name": "LoadTexture", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Texture2D", + "description": "Load texture from file into GPU memory (VRAM)", + "custom": false + }, + { + "name": "LoadTextureFromImage", + "params": [ + { + "name": "image", + "typ": "Image" + } + ], + "returnType": "Texture2D", + "description": "Load texture from image data", + "custom": false + }, + { + "name": "LoadTextureCubemap", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "layout", + "typ": "i32" + } + ], + "returnType": "Texture2D", + "description": "Load cubemap from image, multiple image cubemap layouts supported", + "custom": false + }, + { + "name": "LoadRenderTexture", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "RenderTexture2D", + "description": "Load texture for rendering (framebuffer)", + "custom": false + }, + { + "name": "IsTextureReady", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + } + ], + "returnType": "bool", + "description": "Check if a texture is ready", + "custom": false + }, + { + "name": "UnloadTexture", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + } + ], + "returnType": "void", + "description": "Unload texture from GPU memory (VRAM)", + "custom": false + }, + { + "name": "IsRenderTextureReady", + "params": [ + { + "name": "target", + "typ": "RenderTexture2D" + } + ], + "returnType": "bool", + "description": "Check if a render texture is ready", + "custom": false + }, + { + "name": "UnloadRenderTexture", + "params": [ + { + "name": "target", + "typ": "RenderTexture2D" + } + ], + "returnType": "void", + "description": "Unload render texture from GPU memory (VRAM)", + "custom": false + }, + { + "name": "UpdateTexture", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "pixels", + "typ": "*const anyopaque" + } + ], + "returnType": "void", + "description": "Update GPU texture with new data", + "custom": false + }, + { + "name": "UpdateTextureRec", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "rec", + "typ": "Rectangle" + }, + { + "name": "pixels", + "typ": "*const anyopaque" + } + ], + "returnType": "void", + "description": "Update GPU texture rectangle with new data", + "custom": false + }, + { + "name": "TextFormat", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "rewritten in inject.zig", + "custom": true + }, + { + "name": "SetTextureFilter", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "filter", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set texture scaling filter mode", + "custom": false + }, + { + "name": "SetTextureWrap", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "wrap", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set texture wrapping mode", + "custom": false + }, + { + "name": "DrawTexture", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a Texture2D", + "custom": false + }, + { + "name": "DrawTextureV", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a Texture2D with position defined as Vector2", + "custom": false + }, + { + "name": "DrawTextureEx", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "scale", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a Texture2D with extended parameters", + "custom": false + }, + { + "name": "DrawTextureRec", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "source", + "typ": "Rectangle" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a part of a texture defined by a rectangle", + "custom": false + }, + { + "name": "DrawTexturePro", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "source", + "typ": "Rectangle" + }, + { + "name": "dest", + "typ": "Rectangle" + }, + { + "name": "origin", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a part of a texture defined by a rectangle with 'pro' parameters", + "custom": false + }, + { + "name": "DrawTextureNPatch", + "params": [ + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "nPatchInfo", + "typ": "NPatchInfo" + }, + { + "name": "dest", + "typ": "Rectangle" + }, + { + "name": "origin", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draws a texture (or part of it) that stretches or shrinks nicely", + "custom": false + }, + { + "name": "Fade", + "params": [ + { + "name": "color", + "typ": "Color" + }, + { + "name": "alpha", + "typ": "f32" + } + ], + "returnType": "Color", + "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f", + "custom": false + }, + { + "name": "ColorToInt", + "params": [ + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "i32", + "description": "Get hexadecimal value for a Color", + "custom": false + }, + { + "name": "ColorNormalize", + "params": [ + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "Vector4", + "description": "Get Color normalized as float [0..1]", + "custom": false + }, + { + "name": "ColorFromNormalized", + "params": [ + { + "name": "normalized", + "typ": "Vector4" + } + ], + "returnType": "Color", + "description": "Get Color from normalized values [0..1]", + "custom": false + }, + { + "name": "ColorToHSV", + "params": [ + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "Vector3", + "description": "Get HSV values for a Color, hue [0..360], saturation/value [0..1]", + "custom": false + }, + { + "name": "ColorFromHSV", + "params": [ + { + "name": "hue", + "typ": "f32" + }, + { + "name": "saturation", + "typ": "f32" + }, + { + "name": "value", + "typ": "f32" + } + ], + "returnType": "Color", + "description": "Get a Color from HSV values, hue [0..360], saturation/value [0..1]", + "custom": false + }, + { + "name": "ColorTint", + "params": [ + { + "name": "color", + "typ": "Color" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "Color", + "description": "Get color multiplied with another color", + "custom": false + }, + { + "name": "ColorBrightness", + "params": [ + { + "name": "color", + "typ": "Color" + }, + { + "name": "factor", + "typ": "f32" + } + ], + "returnType": "Color", + "description": "Get color with brightness correction, brightness factor goes from -1.0f to 1.0f", + "custom": false + }, + { + "name": "ColorContrast", + "params": [ + { + "name": "color", + "typ": "Color" + }, + { + "name": "contrast", + "typ": "f32" + } + ], + "returnType": "Color", + "description": "Get color with contrast correction, contrast values between -1.0f and 1.0f", + "custom": false + }, + { + "name": "ColorAlpha", + "params": [ + { + "name": "color", + "typ": "Color" + }, + { + "name": "alpha", + "typ": "f32" + } + ], + "returnType": "Color", + "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f", + "custom": false + }, + { + "name": "ColorAlphaBlend", + "params": [ + { + "name": "dst", + "typ": "Color" + }, + { + "name": "src", + "typ": "Color" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "Color", + "description": "Get src alpha-blended into dst color with tint", + "custom": false + }, + { + "name": "GetColor", + "params": [ + { + "name": "hexValue", + "typ": "u32" + } + ], + "returnType": "Color", + "description": "Get Color structure from hexadecimal value", + "custom": false + }, + { + "name": "GetPixelColor", + "params": [ + { + "name": "srcPtr", + "typ": "*anyopaque" + }, + { + "name": "format", + "typ": "i32" + } + ], + "returnType": "Color", + "description": "Get Color from a source pixel pointer of certain format", + "custom": false + }, + { + "name": "SetPixelColor", + "params": [ + { + "name": "dstPtr", + "typ": "*anyopaque" + }, + { + "name": "color", + "typ": "Color" + }, + { + "name": "format", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set color formatted into destination pixel pointer", + "custom": false + }, + { + "name": "GetPixelDataSize", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get pixel data size in bytes for certain format", + "custom": false + }, + { + "name": "GetFontDefault", + "params": [], + "returnType": "Font", + "description": "Get the default Font", + "custom": false + }, + { + "name": "LoadFont", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Font", + "description": "Load font from file into GPU memory (VRAM)", + "custom": false + }, + { + "name": "LoadFontEx", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "codepoints", + "typ": "?[*]i32" + }, + { + "name": "codepointCount", + "typ": "i32" + } + ], + "returnType": "Font", + "description": "Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character setFont", + "custom": false + }, + { + "name": "LoadFontFromImage", + "params": [ + { + "name": "image", + "typ": "Image" + }, + { + "name": "key", + "typ": "Color" + }, + { + "name": "firstChar", + "typ": "i32" + } + ], + "returnType": "Font", + "description": "Load font from Image (XNA style)", + "custom": false + }, + { + "name": "LoadFontFromMemory", + "params": [ + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "fileData", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "codepoints", + "typ": "?[*]i32" + }, + { + "name": "codepointCount", + "typ": "i32" + } + ], + "returnType": "Font", + "description": "Load font from memory buffer, fileType refers to extension: i.e. '.ttf'", + "custom": false + }, + { + "name": "IsFontReady", + "params": [ + { + "name": "font", + "typ": "Font" + } + ], + "returnType": "bool", + "description": "Check if a font is ready", + "custom": false + }, + { + "name": "TextFormat", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "rewritten in inject.zig", + "custom": true + }, + { + "name": "GenImageFontAtlas", + "params": [ + { + "name": "glyphs", + "typ": "?[*]const GlyphInfo" + }, + { + "name": "glyphRecs", + "typ": "?[*]Rectangle" + }, + { + "name": "glyphCount", + "typ": "i32" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "padding", + "typ": "i32" + }, + { + "name": "packMethod", + "typ": "i32" + } + ], + "returnType": "Image", + "description": "Generate image font atlas using chars info", + "custom": false + }, + { + "name": "UnloadFontData", + "params": [ + { + "name": "glyphs", + "typ": "?[*]GlyphInfo" + }, + { + "name": "glyphCount", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Unload font chars info data (RAM)", + "custom": false + }, + { + "name": "UnloadFont", + "params": [ + { + "name": "font", + "typ": "Font" + } + ], + "returnType": "void", + "description": "Unload font from GPU memory (VRAM)", + "custom": false + }, + { + "name": "ExportFontAsCode", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export font as code file, returns true on success", + "custom": false + }, + { + "name": "DrawFPS", + "params": [ + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Draw current FPS", + "custom": false + }, + { + "name": "DrawText", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "posX", + "typ": "i32" + }, + { + "name": "posY", + "typ": "i32" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw text (using default font)", + "custom": false + }, + { + "name": "DrawTextEx", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw text using font and additional parameters", + "custom": false + }, + { + "name": "DrawTextPro", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "origin", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw text using Font and pro parameters (rotation)", + "custom": false + }, + { + "name": "DrawTextCodepoint", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "codepoint", + "typ": "i32" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw one character (codepoint)", + "custom": false + }, + { + "name": "DrawTextCodepoints", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "codepoints", + "typ": "?[*]const i32" + }, + { + "name": "codepointCount", + "typ": "i32" + }, + { + "name": "position", + "typ": "Vector2" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw multiple character (codepoint)", + "custom": false + }, + { + "name": "SetTextLineSpacing", + "params": [ + { + "name": "spacing", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set vertical line spacing when drawing with line-breaks", + "custom": false + }, + { + "name": "MeasureText", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "fontSize", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Measure string width for default font", + "custom": false + }, + { + "name": "MeasureTextEx", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "fontSize", + "typ": "f32" + }, + { + "name": "spacing", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "Measure string size for Font", + "custom": false + }, + { + "name": "GetGlyphIndex", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "codepoint", + "typ": "i32" + } + ], + "returnType": "i32", + "description": "Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found", + "custom": false + }, + { + "name": "GetGlyphInfo", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "codepoint", + "typ": "i32" + } + ], + "returnType": "GlyphInfo", + "description": "Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found", + "custom": false + }, + { + "name": "GetGlyphAtlasRec", + "params": [ + { + "name": "font", + "typ": "Font" + }, + { + "name": "codepoint", + "typ": "i32" + } + ], + "returnType": "Rectangle", + "description": "Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found", + "custom": false + }, + { + "name": "LoadUTF8", + "params": [ + { + "name": "codepoints", + "typ": "?[*]const i32" + }, + { + "name": "length", + "typ": "i32" + } + ], + "returnType": "?[*]u8", + "description": "Load UTF-8 text encoded from codepoints array", + "custom": false + }, + { + "name": "UnloadUTF8", + "params": [ + { + "name": "text", + "typ": "?[*]u8" + } + ], + "returnType": "void", + "description": "Unload UTF-8 text encoded from codepoints array", + "custom": false + }, + { + "name": "LoadCodepoints", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "count", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]i32", + "description": "Load all codepoints from a UTF-8 text string, codepoints count returned by parameter", + "custom": false + }, + { + "name": "UnloadCodepoints", + "params": [ + { + "name": "codepoints", + "typ": "?[*]i32" + } + ], + "returnType": "void", + "description": "Unload codepoints data from memory", + "custom": false + }, + { + "name": "GetCodepointCount", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get total number of codepoints in a UTF-8 encoded string", + "custom": false + }, + { + "name": "GetCodepoint", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "codepointSize", + "typ": "?[*]i32" + } + ], + "returnType": "i32", + "description": "Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure", + "custom": false + }, + { + "name": "GetCodepointNext", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "codepointSize", + "typ": "?[*]i32" + } + ], + "returnType": "i32", + "description": "Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure", + "custom": false + }, + { + "name": "GetCodepointPrevious", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "codepointSize", + "typ": "?[*]i32" + } + ], + "returnType": "i32", + "description": "Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure", + "custom": false + }, + { + "name": "CodepointToUTF8", + "params": [ + { + "name": "codepoint", + "typ": "i32" + }, + { + "name": "utf8Size", + "typ": "?[*]i32" + } + ], + "returnType": "[*:0]const u8", + "description": "Encode one codepoint into UTF-8 byte array (array length returned as parameter)", + "custom": false + }, + { + "name": "TextCopy", + "params": [ + { + "name": "dst", + "typ": "?[*]u8" + }, + { + "name": "src", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Copy one string to another, returns bytes copied", + "custom": false + }, + { + "name": "TextIsEqual", + "params": [ + { + "name": "text1", + "typ": "[*:0]const u8" + }, + { + "name": "text2", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Check if two text string are equal", + "custom": false + }, + { + "name": "TextLength", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "u32", + "description": "Get text length, checks for '\\0' ending", + "custom": false + }, + { + "name": "GenTextureMipmaps", + "params": [ + { + "name": "texture", + "typ": "*Texture2D" + } + ], + "returnType": "void", + "description": "Generate GPU mipmaps for a texture", + "custom": true + }, + { + "name": "TextSubtext", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "i32" + }, + { + "name": "length", + "typ": "i32" + } + ], + "returnType": "[*:0]const u8", + "description": "Get a piece of a text string", + "custom": false + }, + { + "name": "TextReplace", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "replace", + "typ": "[*:0]const u8" + }, + { + "name": "by", + "typ": "[*:0]const u8" + } + ], + "returnType": "?[*]u8", + "description": "Replace text string (WARNING: memory must be freed!)", + "custom": false + }, + { + "name": "TextInsert", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "insert", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "i32" + } + ], + "returnType": "?[*]u8", + "description": "Insert text in a position (WARNING: memory must be freed!)", + "custom": false + }, + { + "name": "LoadFontData", + "params": [ + { + "name": "fileData", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "fontSize", + "typ": "i32" + }, + { + "name": "fontChars", + "typ": "[*]i32" + }, + { + "name": "glyphCount", + "typ": "i32" + }, + { + "name": "typ", + "typ": "i32" + } + ], + "returnType": "[*]GlyphInfo", + "description": "Load font data for further use", + "custom": true + }, + { + "name": "TextJoin", + "params": [ + { + "name": "textList", + "typ": "[*]const [*:0]const u8" + }, + { + "name": "count", + "typ": "i32" + }, + { + "name": "delimiter", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "overriden in inject.zig", + "custom": true + }, + { + "name": "rlSetVertexAttribute", + "params": [ + { + "name": "index", + "typ": "u32" + }, + { + "name": "compSize", + "typ": "i32" + }, + { + "name": "typ", + "typ": "i32" + }, + { + "name": "normalized", + "typ": "bool" + }, + { + "name": "stride", + "typ": "i32" + }, + { + "name": "pointer", + "typ": "*anyopaque" + } + ], + "returnType": "void", + "description": "", + "custom": true + }, + { + "name": "TextFindIndex", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "find", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Find first text occurrence within a string", + "custom": false + }, + { + "name": "TextToUpper", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get upper case version of provided string", + "custom": false + }, + { + "name": "TextToLower", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get lower case version of provided string", + "custom": false + }, + { + "name": "TextToPascal", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "[*:0]const u8", + "description": "Get Pascal case notation version of provided string", + "custom": false + }, + { + "name": "TextToInteger", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get integer value from text (negative values not supported)", + "custom": false + }, + { + "name": "TextToFloat", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + } + ], + "returnType": "f32", + "description": "Get float value from text (negative values not supported)", + "custom": false + }, + { + "name": "DrawLine3D", + "params": [ + { + "name": "startPos", + "typ": "Vector3" + }, + { + "name": "endPos", + "typ": "Vector3" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a line in 3D world space", + "custom": false + }, + { + "name": "DrawPoint3D", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a point in 3D space, actually a small line", + "custom": false + }, + { + "name": "DrawCircle3D", + "params": [ + { + "name": "center", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rotationAxis", + "typ": "Vector3" + }, + { + "name": "rotationAngle", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a circle in 3D world space", + "custom": false + }, + { + "name": "DrawTriangle3D", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + }, + { + "name": "v3", + "typ": "Vector3" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)", + "custom": false + }, + { + "name": "DrawTriangleStrip3D", + "params": [ + { + "name": "points", + "typ": "?[*]Vector3" + }, + { + "name": "pointCount", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a triangle strip defined by points", + "custom": false + }, + { + "name": "DrawCube", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "width", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "length", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw cube", + "custom": false + }, + { + "name": "DrawCubeV", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "Vector3" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw cube (Vector version)", + "custom": false + }, + { + "name": "DrawCubeWires", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "width", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "length", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw cube wires", + "custom": false + }, + { + "name": "DrawCubeWiresV", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "Vector3" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw cube wires (Vector version)", + "custom": false + }, + { + "name": "DrawSphere", + "params": [ + { + "name": "centerPos", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw sphere", + "custom": false + }, + { + "name": "DrawSphereEx", + "params": [ + { + "name": "centerPos", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw sphere with extended parameters", + "custom": false + }, + { + "name": "DrawSphereWires", + "params": [ + { + "name": "centerPos", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw sphere wires", + "custom": false + }, + { + "name": "DrawCylinder", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "radiusTop", + "typ": "f32" + }, + { + "name": "radiusBottom", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a cylinder/cone", + "custom": false + }, + { + "name": "DrawCylinderEx", + "params": [ + { + "name": "startPos", + "typ": "Vector3" + }, + { + "name": "endPos", + "typ": "Vector3" + }, + { + "name": "startRadius", + "typ": "f32" + }, + { + "name": "endRadius", + "typ": "f32" + }, + { + "name": "sides", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a cylinder with base at startPos and top at endPos", + "custom": false + }, + { + "name": "DrawCylinderWires", + "params": [ + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "radiusTop", + "typ": "f32" + }, + { + "name": "radiusBottom", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a cylinder/cone wires", + "custom": false + }, + { + "name": "DrawCylinderWiresEx", + "params": [ + { + "name": "startPos", + "typ": "Vector3" + }, + { + "name": "endPos", + "typ": "Vector3" + }, + { + "name": "startRadius", + "typ": "f32" + }, + { + "name": "endRadius", + "typ": "f32" + }, + { + "name": "sides", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a cylinder wires with base at startPos and top at endPos", + "custom": false + }, + { + "name": "DrawCapsule", + "params": [ + { + "name": "startPos", + "typ": "Vector3" + }, + { + "name": "endPos", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a capsule with the center of its sphere caps at startPos and endPos", + "custom": false + }, + { + "name": "DrawCapsuleWires", + "params": [ + { + "name": "startPos", + "typ": "Vector3" + }, + { + "name": "endPos", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw capsule wireframe with the center of its sphere caps at startPos and endPos", + "custom": false + }, + { + "name": "DrawPlane", + "params": [ + { + "name": "centerPos", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "Vector2" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a plane XZ", + "custom": false + }, + { + "name": "DrawRay", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a ray line", + "custom": false + }, + { + "name": "DrawGrid", + "params": [ + { + "name": "slices", + "typ": "i32" + }, + { + "name": "spacing", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Draw a grid (centered at (0, 0, 0))", + "custom": false + }, + { + "name": "LoadModel", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Model", + "description": "Load model from files (meshes and materials)", + "custom": false + }, + { + "name": "LoadModelFromMesh", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + } + ], + "returnType": "Model", + "description": "Load model from generated mesh (default material)", + "custom": false + }, + { + "name": "IsModelReady", + "params": [ + { + "name": "model", + "typ": "Model" + } + ], + "returnType": "bool", + "description": "Check if a model is ready", + "custom": false + }, + { + "name": "UnloadModel", + "params": [ + { + "name": "model", + "typ": "Model" + } + ], + "returnType": "void", + "description": "Unload model (including meshes) from memory (RAM and/or VRAM)", + "custom": false + }, + { + "name": "GetModelBoundingBox", + "params": [ + { + "name": "model", + "typ": "Model" + } + ], + "returnType": "BoundingBox", + "description": "Compute model bounding box limits (considers all meshes)", + "custom": false + }, + { + "name": "DrawModel", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "scale", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a model (with texture if set)", + "custom": false + }, + { + "name": "DrawModelEx", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "rotationAxis", + "typ": "Vector3" + }, + { + "name": "rotationAngle", + "typ": "f32" + }, + { + "name": "scale", + "typ": "Vector3" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a model with extended parameters", + "custom": false + }, + { + "name": "DrawModelWires", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "scale", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a model wires (with texture if set)", + "custom": false + }, + { + "name": "DrawModelWiresEx", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "rotationAxis", + "typ": "Vector3" + }, + { + "name": "rotationAngle", + "typ": "f32" + }, + { + "name": "scale", + "typ": "Vector3" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a model wires (with texture if set) with extended parameters", + "custom": false + }, + { + "name": "DrawBoundingBox", + "params": [ + { + "name": "box", + "typ": "BoundingBox" + }, + { + "name": "color", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw bounding box (wires)", + "custom": false + }, + { + "name": "DrawBillboard", + "params": [ + { + "name": "camera", + "typ": "Camera3D" + }, + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a billboard texture", + "custom": false + }, + { + "name": "DrawBillboardRec", + "params": [ + { + "name": "camera", + "typ": "Camera3D" + }, + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "source", + "typ": "Rectangle" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "Vector2" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a billboard texture defined by source", + "custom": false + }, + { + "name": "DrawBillboardPro", + "params": [ + { + "name": "camera", + "typ": "Camera3D" + }, + { + "name": "texture", + "typ": "Texture2D" + }, + { + "name": "source", + "typ": "Rectangle" + }, + { + "name": "position", + "typ": "Vector3" + }, + { + "name": "up", + "typ": "Vector3" + }, + { + "name": "size", + "typ": "Vector2" + }, + { + "name": "origin", + "typ": "Vector2" + }, + { + "name": "rotation", + "typ": "f32" + }, + { + "name": "tint", + "typ": "Color" + } + ], + "returnType": "void", + "description": "Draw a billboard texture defined by source and rotation", + "custom": false + }, + { + "name": "UploadMesh", + "params": [ + { + "name": "mesh", + "typ": "?[*]Mesh" + }, + { + "name": "dynamic", + "typ": "bool" + } + ], + "returnType": "void", + "description": "Upload mesh vertex data in GPU and provide VAO/VBO ids", + "custom": false + }, + { + "name": "UpdateMeshBuffer", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "index", + "typ": "i32" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "offset", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update mesh vertex data in GPU for a specific buffer index", + "custom": false + }, + { + "name": "UnloadMesh", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + } + ], + "returnType": "void", + "description": "Unload mesh data from CPU and GPU", + "custom": false + }, + { + "name": "DrawMesh", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "material", + "typ": "Material" + }, + { + "name": "transform", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Draw a 3d mesh with material and transform", + "custom": false + }, + { + "name": "DrawMeshInstanced", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "material", + "typ": "Material" + }, + { + "name": "transforms", + "typ": "?[*]const Matrix" + }, + { + "name": "instances", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Draw multiple mesh instances with material and different transforms", + "custom": false + }, + { + "name": "GetMeshBoundingBox", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + } + ], + "returnType": "BoundingBox", + "description": "Compute mesh bounding box limits", + "custom": false + }, + { + "name": "GenMeshTangents", + "params": [ + { + "name": "mesh", + "typ": "?[*]Mesh" + } + ], + "returnType": "void", + "description": "Compute mesh tangents", + "custom": false + }, + { + "name": "ExportMesh", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export mesh data to file, returns true on success", + "custom": false + }, + { + "name": "ExportMeshAsCode", + "params": [ + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export mesh as code file (.h) defining multiple arrays of vertex attributes", + "custom": false + }, + { + "name": "GenMeshPoly", + "params": [ + { + "name": "sides", + "typ": "i32" + }, + { + "name": "radius", + "typ": "f32" + } + ], + "returnType": "Mesh", + "description": "Generate polygonal mesh", + "custom": false + }, + { + "name": "GenMeshPlane", + "params": [ + { + "name": "width", + "typ": "f32" + }, + { + "name": "length", + "typ": "f32" + }, + { + "name": "resX", + "typ": "i32" + }, + { + "name": "resZ", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate plane mesh (with subdivisions)", + "custom": false + }, + { + "name": "GenMeshCube", + "params": [ + { + "name": "width", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "length", + "typ": "f32" + } + ], + "returnType": "Mesh", + "description": "Generate cuboid mesh", + "custom": false + }, + { + "name": "GenMeshSphere", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "slices", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate sphere mesh (standard sphere)", + "custom": false + }, + { + "name": "GenMeshHemiSphere", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "rings", + "typ": "i32" + }, + { + "name": "slices", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate half-sphere mesh (no bottom cap)", + "custom": false + }, + { + "name": "GenMeshCylinder", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate cylinder mesh", + "custom": false + }, + { + "name": "GenMeshCone", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "height", + "typ": "f32" + }, + { + "name": "slices", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate cone/pyramid mesh", + "custom": false + }, + { + "name": "GenMeshTorus", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "size", + "typ": "f32" + }, + { + "name": "radSeg", + "typ": "i32" + }, + { + "name": "sides", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate torus mesh", + "custom": false + }, + { + "name": "GenMeshKnot", + "params": [ + { + "name": "radius", + "typ": "f32" + }, + { + "name": "size", + "typ": "f32" + }, + { + "name": "radSeg", + "typ": "i32" + }, + { + "name": "sides", + "typ": "i32" + } + ], + "returnType": "Mesh", + "description": "Generate trefoil knot mesh", + "custom": false + }, + { + "name": "GenMeshHeightmap", + "params": [ + { + "name": "heightmap", + "typ": "Image" + }, + { + "name": "size", + "typ": "Vector3" + } + ], + "returnType": "Mesh", + "description": "Generate heightmap mesh from image data", + "custom": false + }, + { + "name": "GenMeshCubicmap", + "params": [ + { + "name": "cubicmap", + "typ": "Image" + }, + { + "name": "cubeSize", + "typ": "Vector3" + } + ], + "returnType": "Mesh", + "description": "Generate cubes-based map mesh from image data", + "custom": false + }, + { + "name": "LoadMaterials", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "materialCount", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]Material", + "description": "Load materials from model file", + "custom": false + }, + { + "name": "LoadMaterialDefault", + "params": [], + "returnType": "Material", + "description": "Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)", + "custom": false + }, + { + "name": "IsMaterialReady", + "params": [ + { + "name": "material", + "typ": "Material" + } + ], + "returnType": "bool", + "description": "Check if a material is ready", + "custom": false + }, + { + "name": "UnloadMaterial", + "params": [ + { + "name": "material", + "typ": "Material" + } + ], + "returnType": "void", + "description": "Unload material from GPU memory (VRAM)", + "custom": false + }, + { + "name": "SetMaterialTexture", + "params": [ + { + "name": "material", + "typ": "?[*]Material" + }, + { + "name": "mapType", + "typ": "i32" + }, + { + "name": "texture", + "typ": "Texture2D" + } + ], + "returnType": "void", + "description": "Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)", + "custom": false + }, + { + "name": "SetModelMeshMaterial", + "params": [ + { + "name": "model", + "typ": "?[*]Model" + }, + { + "name": "meshId", + "typ": "i32" + }, + { + "name": "materialId", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set material for a mesh", + "custom": false + }, + { + "name": "LoadModelAnimations", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + }, + { + "name": "animCount", + "typ": "?[*]i32" + } + ], + "returnType": "?[*]ModelAnimation", + "description": "Load model animations from file", + "custom": false + }, + { + "name": "UpdateModelAnimation", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "anim", + "typ": "ModelAnimation" + }, + { + "name": "frame", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update model animation pose", + "custom": false + }, + { + "name": "UnloadModelAnimation", + "params": [ + { + "name": "anim", + "typ": "ModelAnimation" + } + ], + "returnType": "void", + "description": "Unload animation data", + "custom": false + }, + { + "name": "UnloadModelAnimations", + "params": [ + { + "name": "animations", + "typ": "?[*]ModelAnimation" + }, + { + "name": "animCount", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Unload animation array data", + "custom": false + }, + { + "name": "IsModelAnimationValid", + "params": [ + { + "name": "model", + "typ": "Model" + }, + { + "name": "anim", + "typ": "ModelAnimation" + } + ], + "returnType": "bool", + "description": "Check model animation skeleton match", + "custom": false + }, + { + "name": "CheckCollisionSpheres", + "params": [ + { + "name": "center1", + "typ": "Vector3" + }, + { + "name": "radius1", + "typ": "f32" + }, + { + "name": "center2", + "typ": "Vector3" + }, + { + "name": "radius2", + "typ": "f32" + } + ], + "returnType": "bool", + "description": "Check collision between two spheres", + "custom": false + }, + { + "name": "CheckCollisionBoxes", + "params": [ + { + "name": "box1", + "typ": "BoundingBox" + }, + { + "name": "box2", + "typ": "BoundingBox" + } + ], + "returnType": "bool", + "description": "Check collision between two bounding boxes", + "custom": false + }, + { + "name": "CheckCollisionBoxSphere", + "params": [ + { + "name": "box", + "typ": "BoundingBox" + }, + { + "name": "center", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + } + ], + "returnType": "bool", + "description": "Check collision between box and sphere", + "custom": false + }, + { + "name": "GetRayCollisionSphere", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "center", + "typ": "Vector3" + }, + { + "name": "radius", + "typ": "f32" + } + ], + "returnType": "RayCollision", + "description": "Get collision info between ray and sphere", + "custom": false + }, + { + "name": "GetRayCollisionBox", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "box", + "typ": "BoundingBox" + } + ], + "returnType": "RayCollision", + "description": "Get collision info between ray and box", + "custom": false + }, + { + "name": "GetRayCollisionMesh", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "mesh", + "typ": "Mesh" + }, + { + "name": "transform", + "typ": "Matrix" + } + ], + "returnType": "RayCollision", + "description": "Get collision info between ray and mesh", + "custom": false + }, + { + "name": "GetRayCollisionTriangle", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "p1", + "typ": "Vector3" + }, + { + "name": "p2", + "typ": "Vector3" + }, + { + "name": "p3", + "typ": "Vector3" + } + ], + "returnType": "RayCollision", + "description": "Get collision info between ray and triangle", + "custom": false + }, + { + "name": "GetRayCollisionQuad", + "params": [ + { + "name": "ray", + "typ": "Ray" + }, + { + "name": "p1", + "typ": "Vector3" + }, + { + "name": "p2", + "typ": "Vector3" + }, + { + "name": "p3", + "typ": "Vector3" + }, + { + "name": "p4", + "typ": "Vector3" + } + ], + "returnType": "RayCollision", + "description": "Get collision info between ray and quad", + "custom": false + }, + { + "name": "InitAudioDevice", + "params": [], + "returnType": "void", + "description": "Initialize audio device and context", + "custom": false + }, + { + "name": "CloseAudioDevice", + "params": [], + "returnType": "void", + "description": "Close the audio device and context", + "custom": false + }, + { + "name": "IsAudioDeviceReady", + "params": [], + "returnType": "bool", + "description": "Check if audio device has been initialized successfully", + "custom": false + }, + { + "name": "SetMasterVolume", + "params": [ + { + "name": "volume", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set master volume (listener)", + "custom": false + }, + { + "name": "GetMasterVolume", + "params": [], + "returnType": "f32", + "description": "Get master volume (listener)", + "custom": false + }, + { + "name": "LoadWave", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Wave", + "description": "Load wave data from file", + "custom": false + }, + { + "name": "LoadWaveFromMemory", + "params": [ + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "fileData", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + } + ], + "returnType": "Wave", + "description": "Load wave from memory buffer, fileType refers to extension: i.e. '.wav'", + "custom": false + }, + { + "name": "IsWaveReady", + "params": [ + { + "name": "wave", + "typ": "Wave" + } + ], + "returnType": "bool", + "description": "Checks if wave data is ready", + "custom": false + }, + { + "name": "LoadSound", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Sound", + "description": "Load sound from file", + "custom": false + }, + { + "name": "LoadSoundFromWave", + "params": [ + { + "name": "wave", + "typ": "Wave" + } + ], + "returnType": "Sound", + "description": "Load sound from wave data", + "custom": false + }, + { + "name": "LoadSoundAlias", + "params": [ + { + "name": "source", + "typ": "Sound" + } + ], + "returnType": "Sound", + "description": "Create a new sound that shares the same sample data as the source sound, does not own the sound data", + "custom": false + }, + { + "name": "IsSoundReady", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "bool", + "description": "Checks if a sound is ready", + "custom": false + }, + { + "name": "UpdateSound", + "params": [ + { + "name": "sound", + "typ": "Sound" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "sampleCount", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update sound buffer with new data", + "custom": false + }, + { + "name": "UnloadWave", + "params": [ + { + "name": "wave", + "typ": "Wave" + } + ], + "returnType": "void", + "description": "Unload wave data", + "custom": false + }, + { + "name": "UnloadSound", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Unload sound", + "custom": false + }, + { + "name": "UnloadSoundAlias", + "params": [ + { + "name": "alias", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Unload a sound alias (does not deallocate sample data)", + "custom": false + }, + { + "name": "ExportWave", + "params": [ + { + "name": "wave", + "typ": "Wave" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export wave data to file, returns true on success", + "custom": false + }, + { + "name": "ExportWaveAsCode", + "params": [ + { + "name": "wave", + "typ": "Wave" + }, + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "bool", + "description": "Export wave sample data to code (.h), returns true on success", + "custom": false + }, + { + "name": "PlaySound", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Play a sound", + "custom": false + }, + { + "name": "StopSound", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Stop playing a sound", + "custom": false + }, + { + "name": "PauseSound", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Pause a sound", + "custom": false + }, + { + "name": "ResumeSound", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "void", + "description": "Resume a paused sound", + "custom": false + }, + { + "name": "IsSoundPlaying", + "params": [ + { + "name": "sound", + "typ": "Sound" + } + ], + "returnType": "bool", + "description": "Check if a sound is currently playing", + "custom": false + }, + { + "name": "SetSoundVolume", + "params": [ + { + "name": "sound", + "typ": "Sound" + }, + { + "name": "volume", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set volume for a sound (1.0 is max level)", + "custom": false + }, + { + "name": "SetSoundPitch", + "params": [ + { + "name": "sound", + "typ": "Sound" + }, + { + "name": "pitch", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pitch for a sound (1.0 is base level)", + "custom": false + }, + { + "name": "SetSoundPan", + "params": [ + { + "name": "sound", + "typ": "Sound" + }, + { + "name": "pan", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pan for a sound (0.5 is center)", + "custom": false + }, + { + "name": "WaveCopy", + "params": [ + { + "name": "wave", + "typ": "Wave" + } + ], + "returnType": "Wave", + "description": "Copy a wave to a new wave", + "custom": false + }, + { + "name": "WaveCrop", + "params": [ + { + "name": "wave", + "typ": "?[*]Wave" + }, + { + "name": "initSample", + "typ": "i32" + }, + { + "name": "finalSample", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Crop a wave to defined samples range", + "custom": false + }, + { + "name": "WaveFormat", + "params": [ + { + "name": "wave", + "typ": "?[*]Wave" + }, + { + "name": "sampleRate", + "typ": "i32" + }, + { + "name": "sampleSize", + "typ": "i32" + }, + { + "name": "channels", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Convert wave data to desired format", + "custom": false + }, + { + "name": "LoadWaveSamples", + "params": [ + { + "name": "wave", + "typ": "Wave" + } + ], + "returnType": "?[*]f32", + "description": "Load samples data from wave as a 32bit float data array", + "custom": false + }, + { + "name": "UnloadWaveSamples", + "params": [ + { + "name": "samples", + "typ": "?[*]f32" + } + ], + "returnType": "void", + "description": "Unload samples data loaded with LoadWaveSamples()", + "custom": false + }, + { + "name": "LoadMusicStream", + "params": [ + { + "name": "fileName", + "typ": "[*:0]const u8" + } + ], + "returnType": "Music", + "description": "Load music stream from file", + "custom": false + }, + { + "name": "LoadMusicStreamFromMemory", + "params": [ + { + "name": "fileType", + "typ": "[*:0]const u8" + }, + { + "name": "data", + "typ": "[*:0]const u8" + }, + { + "name": "dataSize", + "typ": "i32" + } + ], + "returnType": "Music", + "description": "Load music stream from data", + "custom": false + }, + { + "name": "IsMusicReady", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "bool", + "description": "Checks if a music stream is ready", + "custom": false + }, + { + "name": "UnloadMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Unload music stream", + "custom": false + }, + { + "name": "PlayMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Start music playing", + "custom": false + }, + { + "name": "IsMusicStreamPlaying", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "bool", + "description": "Check if music is playing", + "custom": false + }, + { + "name": "UpdateMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Updates buffers for music streaming", + "custom": false + }, + { + "name": "StopMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Stop music playing", + "custom": false + }, + { + "name": "PauseMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Pause music playing", + "custom": false + }, + { + "name": "ResumeMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "void", + "description": "Resume playing paused music", + "custom": false + }, + { + "name": "SeekMusicStream", + "params": [ + { + "name": "music", + "typ": "Music" + }, + { + "name": "position", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Seek music to a position (in seconds)", + "custom": false + }, + { + "name": "SetMusicVolume", + "params": [ + { + "name": "music", + "typ": "Music" + }, + { + "name": "volume", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set volume for music (1.0 is max level)", + "custom": false + }, + { + "name": "SetMusicPitch", + "params": [ + { + "name": "music", + "typ": "Music" + }, + { + "name": "pitch", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pitch for a music (1.0 is base level)", + "custom": false + }, + { + "name": "SetMusicPan", + "params": [ + { + "name": "music", + "typ": "Music" + }, + { + "name": "pan", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pan for a music (0.5 is center)", + "custom": false + }, + { + "name": "GetMusicTimeLength", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "f32", + "description": "Get music time length (in seconds)", + "custom": false + }, + { + "name": "GetMusicTimePlayed", + "params": [ + { + "name": "music", + "typ": "Music" + } + ], + "returnType": "f32", + "description": "Get current music time played (in seconds)", + "custom": false + }, + { + "name": "LoadAudioStream", + "params": [ + { + "name": "sampleRate", + "typ": "u32" + }, + { + "name": "sampleSize", + "typ": "u32" + }, + { + "name": "channels", + "typ": "u32" + } + ], + "returnType": "AudioStream", + "description": "Load audio stream (to stream raw audio pcm data)", + "custom": false + }, + { + "name": "IsAudioStreamReady", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "bool", + "description": "Checks if an audio stream is ready", + "custom": false + }, + { + "name": "UnloadAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "void", + "description": "Unload audio stream and free memory", + "custom": false + }, + { + "name": "UpdateAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "frameCount", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update audio stream buffers with data", + "custom": false + }, + { + "name": "IsAudioStreamProcessed", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "bool", + "description": "Check if any audio stream buffers requires refill", + "custom": false + }, + { + "name": "PlayAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "void", + "description": "Play audio stream", + "custom": false + }, + { + "name": "PauseAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "void", + "description": "Pause audio stream", + "custom": false + }, + { + "name": "ResumeAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "void", + "description": "Resume audio stream", + "custom": false + }, + { + "name": "IsAudioStreamPlaying", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "bool", + "description": "Check if audio stream is playing", + "custom": false + }, + { + "name": "StopAudioStream", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + } + ], + "returnType": "void", + "description": "Stop audio stream", + "custom": false + }, + { + "name": "SetAudioStreamVolume", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "volume", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set volume for audio stream (1.0 is max level)", + "custom": false + }, + { + "name": "SetAudioStreamPitch", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "pitch", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pitch for audio stream (1.0 is base level)", + "custom": false + }, + { + "name": "SetAudioStreamPan", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "pan", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set pan for audio stream (0.5 is centered)", + "custom": false + }, + { + "name": "SetAudioStreamBufferSizeDefault", + "params": [ + { + "name": "size", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Default size for new audio streams", + "custom": false + }, + { + "name": "SetAudioStreamCallback", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "callback", + "typ": "AudioCallback" + } + ], + "returnType": "void", + "description": "Audio thread callback to request new data", + "custom": false + }, + { + "name": "AttachAudioStreamProcessor", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "processor", + "typ": "AudioCallback" + } + ], + "returnType": "void", + "description": "Attach audio stream processor to stream, receives the samples as s", + "custom": false + }, + { + "name": "DetachAudioStreamProcessor", + "params": [ + { + "name": "stream", + "typ": "AudioStream" + }, + { + "name": "processor", + "typ": "AudioCallback" + } + ], + "returnType": "void", + "description": "Detach audio stream processor from stream", + "custom": false + }, + { + "name": "AttachAudioMixedProcessor", + "params": [ + { + "name": "processor", + "typ": "AudioCallback" + } + ], + "returnType": "void", + "description": "Attach audio stream processor to the entire audio pipeline, receives the samples as s", + "custom": false + }, + { + "name": "DetachAudioMixedProcessor", + "params": [ + { + "name": "processor", + "typ": "AudioCallback" + } + ], + "returnType": "void", + "description": "Detach audio stream processor from the entire audio pipeline", + "custom": false + }, + { + "name": "rlMatrixMode", + "params": [ + { + "name": "mode", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Choose the current matrix to be transformed", + "custom": false + }, + { + "name": "rlPushMatrix", + "params": [], + "returnType": "void", + "description": "Push the current matrix to stack", + "custom": false + }, + { + "name": "rlPopMatrix", + "params": [], + "returnType": "void", + "description": "Pop latest inserted matrix from stack", + "custom": false + }, + { + "name": "rlLoadIdentity", + "params": [], + "returnType": "void", + "description": "Reset current matrix to identity matrix", + "custom": false + }, + { + "name": "rlTranslatef", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Multiply the current matrix by a translation matrix", + "custom": false + }, + { + "name": "rlRotatef", + "params": [ + { + "name": "angle", + "typ": "f32" + }, + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Multiply the current matrix by a rotation matrix", + "custom": false + }, + { + "name": "rlScalef", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Multiply the current matrix by a scaling matrix", + "custom": false + }, + { + "name": "rlMultMatrixf", + "params": [ + { + "name": "matf", + "typ": "?[*]const f32" + } + ], + "returnType": "void", + "description": "Multiply the current matrix by another matrix", + "custom": false + }, + { + "name": "rlFrustum", + "params": [ + { + "name": "left", + "typ": "f64" + }, + { + "name": "right", + "typ": "f64" + }, + { + "name": "bottom", + "typ": "f64" + }, + { + "name": "top", + "typ": "f64" + }, + { + "name": "znear", + "typ": "f64" + }, + { + "name": "zfar", + "typ": "f64" + } + ], + "returnType": "void", + "description": "", + "custom": false + }, + { + "name": "rlOrtho", + "params": [ + { + "name": "left", + "typ": "f64" + }, + { + "name": "right", + "typ": "f64" + }, + { + "name": "bottom", + "typ": "f64" + }, + { + "name": "top", + "typ": "f64" + }, + { + "name": "znear", + "typ": "f64" + }, + { + "name": "zfar", + "typ": "f64" + } + ], + "returnType": "void", + "description": "", + "custom": false + }, + { + "name": "rlViewport", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set the viewport area", + "custom": false + }, + { + "name": "rlBegin", + "params": [ + { + "name": "mode", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Initialize drawing mode (how to organize vertex)", + "custom": false + }, + { + "name": "rlEnd", + "params": [], + "returnType": "void", + "description": "Finish vertex providing", + "custom": false + }, + { + "name": "rlVertex2i", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Define one vertex (position) - 2 int", + "custom": false + }, + { + "name": "rlVertex2f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (position) - 2 float", + "custom": false + }, + { + "name": "rlVertex3f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (position) - 3 float", + "custom": false + }, + { + "name": "rlTexCoord2f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (texture coordinate) - 2 float", + "custom": false + }, + { + "name": "rlNormal3f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (normal) - 3 float", + "custom": false + }, + { + "name": "rlColor4ub", + "params": [ + { + "name": "r", + "typ": "u8" + }, + { + "name": "g", + "typ": "u8" + }, + { + "name": "b", + "typ": "u8" + }, + { + "name": "a", + "typ": "u8" + } + ], + "returnType": "void", + "description": "Define one vertex (color) - 4 byte", + "custom": false + }, + { + "name": "rlColor3f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (color) - 3 float", + "custom": false + }, + { + "name": "rlColor4f", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + }, + { + "name": "w", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Define one vertex (color) - 4 float", + "custom": false + }, + { + "name": "rlEnableVertexArray", + "params": [ + { + "name": "vaoId", + "typ": "u32" + } + ], + "returnType": "bool", + "description": "Enable vertex array (VAO, if supported)", + "custom": false + }, + { + "name": "rlDisableVertexArray", + "params": [], + "returnType": "void", + "description": "Disable vertex array (VAO, if supported)", + "custom": false + }, + { + "name": "rlEnableVertexBuffer", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable vertex buffer (VBO)", + "custom": false + }, + { + "name": "rlDisableVertexBuffer", + "params": [], + "returnType": "void", + "description": "Disable vertex buffer (VBO)", + "custom": false + }, + { + "name": "rlEnableVertexBufferElement", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable vertex buffer element (VBO element)", + "custom": false + }, + { + "name": "rlDisableVertexBufferElement", + "params": [], + "returnType": "void", + "description": "Disable vertex buffer element (VBO element)", + "custom": false + }, + { + "name": "rlEnableVertexAttribute", + "params": [ + { + "name": "index", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable vertex attribute index", + "custom": false + }, + { + "name": "rlDisableVertexAttribute", + "params": [ + { + "name": "index", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Disable vertex attribute index", + "custom": false + }, + { + "name": "rlEnableStatePointer", + "params": [ + { + "name": "vertexAttribType", + "typ": "i32" + }, + { + "name": "buffer", + "typ": "*anyopaque" + } + ], + "returnType": "void", + "description": "Enable attribute state pointer", + "custom": false + }, + { + "name": "rlDisableStatePointer", + "params": [ + { + "name": "vertexAttribType", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Disable attribute state pointer", + "custom": false + }, + { + "name": "rlActiveTextureSlot", + "params": [ + { + "name": "slot", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Select and active a texture slot", + "custom": false + }, + { + "name": "rlEnableTexture", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable texture", + "custom": false + }, + { + "name": "rlDisableTexture", + "params": [], + "returnType": "void", + "description": "Disable texture", + "custom": false + }, + { + "name": "rlEnableTextureCubemap", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable texture cubemap", + "custom": false + }, + { + "name": "rlDisableTextureCubemap", + "params": [], + "returnType": "void", + "description": "Disable texture cubemap", + "custom": false + }, + { + "name": "rlTextureParameters", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "param", + "typ": "i32" + }, + { + "name": "value", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set texture parameters (filter, wrap)", + "custom": false + }, + { + "name": "rlCubemapParameters", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "param", + "typ": "i32" + }, + { + "name": "value", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set cubemap parameters (filter, wrap)", + "custom": false + }, + { + "name": "rlEnableShader", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable shader program", + "custom": false + }, + { + "name": "rlDisableShader", + "params": [], + "returnType": "void", + "description": "Disable shader program", + "custom": false + }, + { + "name": "rlEnableFramebuffer", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Enable render texture (fbo)", + "custom": false + }, + { + "name": "rlDisableFramebuffer", + "params": [], + "returnType": "void", + "description": "Disable render texture (fbo), return to default framebuffer", + "custom": false + }, + { + "name": "rlActiveDrawBuffers", + "params": [ + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Activate multiple draw color buffers", + "custom": false + }, + { + "name": "rlBlitFramebuffer", + "params": [ + { + "name": "srcX", + "typ": "i32" + }, + { + "name": "srcY", + "typ": "i32" + }, + { + "name": "srcWidth", + "typ": "i32" + }, + { + "name": "srcHeight", + "typ": "i32" + }, + { + "name": "dstX", + "typ": "i32" + }, + { + "name": "dstY", + "typ": "i32" + }, + { + "name": "dstWidth", + "typ": "i32" + }, + { + "name": "dstHeight", + "typ": "i32" + }, + { + "name": "bufferMask", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Blit active framebuffer to main framebuffer", + "custom": false + }, + { + "name": "rlBindFramebuffer", + "params": [ + { + "name": "target", + "typ": "u32" + }, + { + "name": "framebuffer", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Bind framebuffer (FBO) ", + "custom": false + }, + { + "name": "rlEnableColorBlend", + "params": [], + "returnType": "void", + "description": "Enable color blending", + "custom": false + }, + { + "name": "rlDisableColorBlend", + "params": [], + "returnType": "void", + "description": "Disable color blending", + "custom": false + }, + { + "name": "rlEnableDepthTest", + "params": [], + "returnType": "void", + "description": "Enable depth test", + "custom": false + }, + { + "name": "rlDisableDepthTest", + "params": [], + "returnType": "void", + "description": "Disable depth test", + "custom": false + }, + { + "name": "rlEnableDepthMask", + "params": [], + "returnType": "void", + "description": "Enable depth write", + "custom": false + }, + { + "name": "rlDisableDepthMask", + "params": [], + "returnType": "void", + "description": "Disable depth write", + "custom": false + }, + { + "name": "rlEnableBackfaceCulling", + "params": [], + "returnType": "void", + "description": "Enable backface culling", + "custom": false + }, + { + "name": "rlDisableBackfaceCulling", + "params": [], + "returnType": "void", + "description": "Disable backface culling", + "custom": false + }, + { + "name": "rlColorMask", + "params": [ + { + "name": "r", + "typ": "bool" + }, + { + "name": "g", + "typ": "bool" + }, + { + "name": "b", + "typ": "bool" + }, + { + "name": "a", + "typ": "bool" + } + ], + "returnType": "void", + "description": "Color mask control", + "custom": false + }, + { + "name": "rlSetCullFace", + "params": [ + { + "name": "mode", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set face culling mode", + "custom": false + }, + { + "name": "rlEnableScissorTest", + "params": [], + "returnType": "void", + "description": "Enable scissor test", + "custom": false + }, + { + "name": "rlDisableScissorTest", + "params": [], + "returnType": "void", + "description": "Disable scissor test", + "custom": false + }, + { + "name": "rlScissor", + "params": [ + { + "name": "x", + "typ": "i32" + }, + { + "name": "y", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Scissor test", + "custom": false + }, + { + "name": "rlEnableWireMode", + "params": [], + "returnType": "void", + "description": "Enable wire mode", + "custom": false + }, + { + "name": "rlEnablePointMode", + "params": [], + "returnType": "void", + "description": "Enable point mode", + "custom": false + }, + { + "name": "rlDisableWireMode", + "params": [], + "returnType": "void", + "description": "Disable wire mode ( and point ) maybe rename", + "custom": false + }, + { + "name": "rlSetLineWidth", + "params": [ + { + "name": "width", + "typ": "f32" + } + ], + "returnType": "void", + "description": "Set the line drawing width", + "custom": false + }, + { + "name": "rlGetLineWidth", + "params": [], + "returnType": "f32", + "description": "Get the line drawing width", + "custom": false + }, + { + "name": "rlEnableSmoothLines", + "params": [], + "returnType": "void", + "description": "Enable line aliasing", + "custom": false + }, + { + "name": "rlDisableSmoothLines", + "params": [], + "returnType": "void", + "description": "Disable line aliasing", + "custom": false + }, + { + "name": "rlEnableStereoRender", + "params": [], + "returnType": "void", + "description": "Enable stereo rendering", + "custom": false + }, + { + "name": "rlDisableStereoRender", + "params": [], + "returnType": "void", + "description": "Disable stereo rendering", + "custom": false + }, + { + "name": "rlIsStereoRenderEnabled", + "params": [], + "returnType": "bool", + "description": "Check if stereo render is enabled", + "custom": false + }, + { + "name": "rlClearColor", + "params": [ + { + "name": "r", + "typ": "u8" + }, + { + "name": "g", + "typ": "u8" + }, + { + "name": "b", + "typ": "u8" + }, + { + "name": "a", + "typ": "u8" + } + ], + "returnType": "void", + "description": "Clear color buffer with color", + "custom": false + }, + { + "name": "rlClearScreenBuffers", + "params": [], + "returnType": "void", + "description": "Clear used screen buffers (color and depth)", + "custom": false + }, + { + "name": "rlCheckErrors", + "params": [], + "returnType": "void", + "description": "Check and log OpenGL error codes", + "custom": false + }, + { + "name": "rlSetBlendMode", + "params": [ + { + "name": "mode", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set blending mode", + "custom": false + }, + { + "name": "rlSetBlendFactors", + "params": [ + { + "name": "glSrcFactor", + "typ": "i32" + }, + { + "name": "glDstFactor", + "typ": "i32" + }, + { + "name": "glEquation", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set blending mode factor and equation (using OpenGL factors)", + "custom": false + }, + { + "name": "rlSetBlendFactorsSeparate", + "params": [ + { + "name": "glSrcRGB", + "typ": "i32" + }, + { + "name": "glDstRGB", + "typ": "i32" + }, + { + "name": "glSrcAlpha", + "typ": "i32" + }, + { + "name": "glDstAlpha", + "typ": "i32" + }, + { + "name": "glEqRGB", + "typ": "i32" + }, + { + "name": "glEqAlpha", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set blending mode factors and equations separately (using OpenGL factors)", + "custom": false + }, + { + "name": "rlglInit", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Initialize rlgl (buffers, shaders, textures, states)", + "custom": false + }, + { + "name": "rlglClose", + "params": [], + "returnType": "void", + "description": "De-initialize rlgl (buffers, shaders, textures)", + "custom": false + }, + { + "name": "rlLoadExtensions", + "params": [ + { + "name": "loader", + "typ": "*anyopaque" + } + ], + "returnType": "void", + "description": "Load OpenGL extensions (loader function required)", + "custom": false + }, + { + "name": "rlGetVersion", + "params": [], + "returnType": "i32", + "description": "Get current OpenGL version", + "custom": false + }, + { + "name": "rlSetFramebufferWidth", + "params": [ + { + "name": "width", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set current framebuffer width", + "custom": false + }, + { + "name": "rlGetFramebufferWidth", + "params": [], + "returnType": "i32", + "description": "Get default framebuffer width", + "custom": false + }, + { + "name": "rlSetFramebufferHeight", + "params": [ + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set current framebuffer height", + "custom": false + }, + { + "name": "rlGetFramebufferHeight", + "params": [], + "returnType": "i32", + "description": "Get default framebuffer height", + "custom": false + }, + { + "name": "rlGetTextureIdDefault", + "params": [], + "returnType": "u32", + "description": "Get default texture id", + "custom": false + }, + { + "name": "rlGetShaderIdDefault", + "params": [], + "returnType": "u32", + "description": "Get default shader id", + "custom": false + }, + { + "name": "rlGetShaderLocsDefault", + "params": [], + "returnType": "?[*]i32", + "description": "Get default shader locations", + "custom": false + }, + { + "name": "rlLoadRenderBatch", + "params": [ + { + "name": "numBuffers", + "typ": "i32" + }, + { + "name": "bufferElements", + "typ": "i32" + } + ], + "returnType": "rlRenderBatch", + "description": "Load a render batch system", + "custom": false + }, + { + "name": "rlUnloadRenderBatch", + "params": [ + { + "name": "batch", + "typ": "rlRenderBatch" + } + ], + "returnType": "void", + "description": "Unload render batch system", + "custom": false + }, + { + "name": "rlDrawRenderBatch", + "params": [ + { + "name": "batch", + "typ": "?[*]rlRenderBatch" + } + ], + "returnType": "void", + "description": "Draw render batch data (Update->Draw->Reset)", + "custom": false + }, + { + "name": "rlSetRenderBatchActive", + "params": [ + { + "name": "batch", + "typ": "?[*]rlRenderBatch" + } + ], + "returnType": "void", + "description": "Set the active render batch for rlgl (NULL for default internal)", + "custom": false + }, + { + "name": "rlDrawRenderBatchActive", + "params": [], + "returnType": "void", + "description": "Update and draw internal render batch", + "custom": false + }, + { + "name": "rlCheckRenderBatchLimit", + "params": [ + { + "name": "vCount", + "typ": "i32" + } + ], + "returnType": "bool", + "description": "Check internal buffer overflow for a given number of vertex", + "custom": false + }, + { + "name": "rlSetTexture", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Set current texture for render batch and check buffers limits", + "custom": false + }, + { + "name": "rlLoadVertexArray", + "params": [], + "returnType": "u32", + "description": "Load vertex array (vao) if supported", + "custom": false + }, + { + "name": "rlLoadVertexBuffer", + "params": [ + { + "name": "buffer", + "typ": "*const anyopaque" + }, + { + "name": "size", + "typ": "i32" + }, + { + "name": "dynamic", + "typ": "bool" + } + ], + "returnType": "u32", + "description": "Load a vertex buffer object", + "custom": false + }, + { + "name": "rlLoadVertexBufferElement", + "params": [ + { + "name": "buffer", + "typ": "*const anyopaque" + }, + { + "name": "size", + "typ": "i32" + }, + { + "name": "dynamic", + "typ": "bool" + } + ], + "returnType": "u32", + "description": "Load vertex buffer elements object", + "custom": false + }, + { + "name": "rlUpdateVertexBuffer", + "params": [ + { + "name": "bufferId", + "typ": "u32" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "offset", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update vertex buffer object data on GPU buffer", + "custom": false + }, + { + "name": "rlUpdateVertexBufferElements", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "dataSize", + "typ": "i32" + }, + { + "name": "offset", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Update vertex buffer elements data on GPU buffer", + "custom": false + }, + { + "name": "rlUnloadVertexArray", + "params": [ + { + "name": "vaoId", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Unload vertex array (vao)", + "custom": false + }, + { + "name": "rlUnloadVertexBuffer", + "params": [ + { + "name": "vboId", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Unload vertex buffer object", + "custom": false + }, + { + "name": "rlCompileShader", + "params": [ + { + "name": "shaderCode", + "typ": "[*:0]const u8" + }, + { + "name": "typ", + "typ": "i32" + } + ], + "returnType": "u32", + "description": "Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER)", + "custom": true + }, + { + "name": "rlSetVertexAttributeDivisor", + "params": [ + { + "name": "index", + "typ": "u32" + }, + { + "name": "divisor", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set vertex attribute data divisor", + "custom": false + }, + { + "name": "rlSetVertexAttributeDefault", + "params": [ + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "value", + "typ": "*const anyopaque" + }, + { + "name": "attribType", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set vertex attribute default value, when attribute to provided", + "custom": false + }, + { + "name": "rlDrawVertexArray", + "params": [ + { + "name": "offset", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Draw vertex array (currently active vao)", + "custom": false + }, + { + "name": "rlDrawVertexArrayElements", + "params": [ + { + "name": "offset", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + }, + { + "name": "buffer", + "typ": "*const anyopaque" + } + ], + "returnType": "void", + "description": "Draw vertex array elements", + "custom": false + }, + { + "name": "rlDrawVertexArrayInstanced", + "params": [ + { + "name": "offset", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + }, + { + "name": "instances", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Draw vertex array (currently active vao) with instancing", + "custom": false + }, + { + "name": "rlDrawVertexArrayElementsInstanced", + "params": [ + { + "name": "offset", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + }, + { + "name": "buffer", + "typ": "*const anyopaque" + }, + { + "name": "instances", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Draw vertex array elements with instancing", + "custom": false + }, + { + "name": "rlLoadTexture", + "params": [ + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + }, + { + "name": "mipmapCount", + "typ": "i32" + } + ], + "returnType": "u32", + "description": "Load texture data", + "custom": false + }, + { + "name": "rlLoadTextureDepth", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "useRenderBuffer", + "typ": "bool" + } + ], + "returnType": "u32", + "description": "Load depth texture/renderbuffer (to be attached to fbo)", + "custom": false + }, + { + "name": "rlLoadTextureCubemap", + "params": [ + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "size", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + } + ], + "returnType": "u32", + "description": "Load texture cubemap data", + "custom": false + }, + { + "name": "rlUpdateTexture", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "offsetX", + "typ": "i32" + }, + { + "name": "offsetY", + "typ": "i32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + }, + { + "name": "data", + "typ": "*const anyopaque" + } + ], + "returnType": "void", + "description": "Update texture with new data on GPU", + "custom": false + }, + { + "name": "rlGetGlTextureFormats", + "params": [ + { + "name": "format", + "typ": "i32" + }, + { + "name": "glInternalFormat", + "typ": "?[*]u32" + }, + { + "name": "glFormat", + "typ": "?[*]u32" + }, + { + "name": "glType", + "typ": "?[*]u32" + } + ], + "returnType": "void", + "description": "Get OpenGL internal formats", + "custom": false + }, + { + "name": "rlGetPixelFormatName", + "params": [ + { + "name": "format", + "typ": "u32" + } + ], + "returnType": "[*:0]const u8", + "description": "Get name string for pixel format", + "custom": false + }, + { + "name": "rlUnloadTexture", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Unload texture from GPU memory", + "custom": false + }, + { + "name": "rlGenTextureMipmaps", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + }, + { + "name": "mipmaps", + "typ": "?[*]i32" + } + ], + "returnType": "void", + "description": "Generate mipmap data for selected texture", + "custom": false + }, + { + "name": "rlReadTexturePixels", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + }, + { + "name": "format", + "typ": "i32" + } + ], + "returnType": "*anyopaque", + "description": "Read texture pixel data", + "custom": false + }, + { + "name": "rlReadScreenPixels", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "?[*]u8", + "description": "Read screen pixel data (color buffer)", + "custom": false + }, + { + "name": "rlLoadFramebuffer", + "params": [ + { + "name": "width", + "typ": "i32" + }, + { + "name": "height", + "typ": "i32" + } + ], + "returnType": "u32", + "description": "Load an empty framebuffer", + "custom": false + }, + { + "name": "rlFramebufferAttach", + "params": [ + { + "name": "fboId", + "typ": "u32" + }, + { + "name": "texId", + "typ": "u32" + }, + { + "name": "attachType", + "typ": "i32" + }, + { + "name": "texType", + "typ": "i32" + }, + { + "name": "mipLevel", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Attach texture/renderbuffer to a framebuffer", + "custom": false + }, + { + "name": "rlFramebufferComplete", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "bool", + "description": "Verify framebuffer is complete", + "custom": false + }, + { + "name": "rlUnloadFramebuffer", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Delete framebuffer from GPU", + "custom": false + }, + { + "name": "rlLoadShaderCode", + "params": [ + { + "name": "vsCode", + "typ": "[*:0]const u8" + }, + { + "name": "fsCode", + "typ": "[*:0]const u8" + } + ], + "returnType": "u32", + "description": "Load shader from code strings", + "custom": false + }, + { + "name": "TextSplit", + "params": [ + { + "name": "text", + "typ": "[*:0]const u8" + }, + { + "name": "delimiter", + "typ": "u8" + }, + { + "name": "count", + "typ": "[*]i32" + } + ], + "returnType": "[*]const [*:0]const u8", + "description": "overriden in inject.zig", + "custom": true + }, + { + "name": "rlLoadShaderProgram", + "params": [ + { + "name": "vShaderId", + "typ": "u32" + }, + { + "name": "fShaderId", + "typ": "u32" + } + ], + "returnType": "u32", + "description": "Load custom shader program", + "custom": false + }, + { + "name": "rlUnloadShaderProgram", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Unload shader program", + "custom": false + }, + { + "name": "rlGetLocationUniform", + "params": [ + { + "name": "shaderId", + "typ": "u32" + }, + { + "name": "uniformName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get shader location uniform", + "custom": false + }, + { + "name": "rlGetLocationAttrib", + "params": [ + { + "name": "shaderId", + "typ": "u32" + }, + { + "name": "attribName", + "typ": "[*:0]const u8" + } + ], + "returnType": "i32", + "description": "Get shader location attribute", + "custom": false + }, + { + "name": "rlSetUniform", + "params": [ + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "value", + "typ": "*const anyopaque" + }, + { + "name": "uniformType", + "typ": "i32" + }, + { + "name": "count", + "typ": "i32" + } + ], + "returnType": "void", + "description": "Set shader value uniform", + "custom": false + }, + { + "name": "rlSetUniformMatrix", + "params": [ + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set shader value matrix", + "custom": false + }, + { + "name": "rlSetUniformSampler", + "params": [ + { + "name": "locIndex", + "typ": "i32" + }, + { + "name": "textureId", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Set shader value sampler", + "custom": false + }, + { + "name": "rlSetShader", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "locs", + "typ": "?[*]i32" + } + ], + "returnType": "void", + "description": "Set shader currently active (id and locations)", + "custom": false + }, + { + "name": "rlLoadComputeShaderProgram", + "params": [ + { + "name": "shaderId", + "typ": "u32" + } + ], + "returnType": "u32", + "description": "Load compute shader program", + "custom": false + }, + { + "name": "rlComputeShaderDispatch", + "params": [ + { + "name": "groupX", + "typ": "u32" + }, + { + "name": "groupY", + "typ": "u32" + }, + { + "name": "groupZ", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Dispatch compute shader (equivalent to *draw* for graphics pipeline)", + "custom": false + }, + { + "name": "rlLoadShaderBuffer", + "params": [ + { + "name": "size", + "typ": "u32" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "usageHint", + "typ": "i32" + } + ], + "returnType": "u32", + "description": "Load shader storage buffer object (SSBO)", + "custom": false + }, + { + "name": "rlUnloadShaderBuffer", + "params": [ + { + "name": "ssboId", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Unload shader storage buffer object (SSBO)", + "custom": false + }, + { + "name": "rlUpdateShaderBuffer", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "data", + "typ": "*const anyopaque" + }, + { + "name": "dataSize", + "typ": "u32" + }, + { + "name": "offset", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Update SSBO buffer data", + "custom": false + }, + { + "name": "rlBindShaderBuffer", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "index", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Bind SSBO buffer", + "custom": false + }, + { + "name": "rlReadShaderBuffer", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "dest", + "typ": "*anyopaque" + }, + { + "name": "count", + "typ": "u32" + }, + { + "name": "offset", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Read SSBO buffer data (GPU->CPU)", + "custom": false + }, + { + "name": "rlCopyShaderBuffer", + "params": [ + { + "name": "destId", + "typ": "u32" + }, + { + "name": "srcId", + "typ": "u32" + }, + { + "name": "destOffset", + "typ": "u32" + }, + { + "name": "srcOffset", + "typ": "u32" + }, + { + "name": "count", + "typ": "u32" + } + ], + "returnType": "void", + "description": "Copy SSBO data between buffers", + "custom": false + }, + { + "name": "rlGetShaderBufferSize", + "params": [ + { + "name": "id", + "typ": "u32" + } + ], + "returnType": "u32", + "description": "Get SSBO buffer size", + "custom": false + }, + { + "name": "rlBindImageTexture", + "params": [ + { + "name": "id", + "typ": "u32" + }, + { + "name": "index", + "typ": "u32" + }, + { + "name": "format", + "typ": "i32" + }, + { + "name": "readonly", + "typ": "bool" + } + ], + "returnType": "void", + "description": "Bind image texture", + "custom": false + }, + { + "name": "rlGetMatrixModelview", + "params": [], + "returnType": "Matrix", + "description": "Get internal modelview matrix", + "custom": false + }, + { + "name": "rlGetMatrixProjection", + "params": [], + "returnType": "Matrix", + "description": "Get internal projection matrix", + "custom": false + }, + { + "name": "rlGetMatrixTransform", + "params": [], + "returnType": "Matrix", + "description": "Get internal accumulated transform matrix", + "custom": false + }, + { + "name": "rlGetMatrixProjectionStereo", + "params": [ + { + "name": "eye", + "typ": "i32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "rlGetMatrixViewOffsetStereo", + "params": [ + { + "name": "eye", + "typ": "i32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "rlSetMatrixProjection", + "params": [ + { + "name": "proj", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set a custom projection matrix (replaces internal projection matrix)", + "custom": false + }, + { + "name": "rlSetMatrixModelview", + "params": [ + { + "name": "view", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set a custom modelview matrix (replaces internal modelview matrix)", + "custom": false + }, + { + "name": "rlSetMatrixProjectionStereo", + "params": [ + { + "name": "right", + "typ": "Matrix" + }, + { + "name": "left", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set eyes projection matrices for stereo rendering", + "custom": false + }, + { + "name": "rlSetMatrixViewOffsetStereo", + "params": [ + { + "name": "right", + "typ": "Matrix" + }, + { + "name": "left", + "typ": "Matrix" + } + ], + "returnType": "void", + "description": "Set eyes view offsets matrices for stereo rendering", + "custom": false + }, + { + "name": "rlLoadDrawCube", + "params": [], + "returnType": "void", + "description": "Load and draw a cube", + "custom": false + }, + { + "name": "rlLoadDrawQuad", + "params": [], + "returnType": "void", + "description": "Load and draw a quad", + "custom": false + }, + { + "name": "Clamp", + "params": [ + { + "name": "value", + "typ": "f32" + }, + { + "name": "min", + "typ": "f32" + }, + { + "name": "max", + "typ": "f32" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Lerp", + "params": [ + { + "name": "start", + "typ": "f32" + }, + { + "name": "end", + "typ": "f32" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Normalize", + "params": [ + { + "name": "value", + "typ": "f32" + }, + { + "name": "start", + "typ": "f32" + }, + { + "name": "end", + "typ": "f32" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Remap", + "params": [ + { + "name": "value", + "typ": "f32" + }, + { + "name": "inputStart", + "typ": "f32" + }, + { + "name": "inputEnd", + "typ": "f32" + }, + { + "name": "outputStart", + "typ": "f32" + }, + { + "name": "outputEnd", + "typ": "f32" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Wrap", + "params": [ + { + "name": "value", + "typ": "f32" + }, + { + "name": "min", + "typ": "f32" + }, + { + "name": "max", + "typ": "f32" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "FloatEquals", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + } + ], + "returnType": "i32", + "description": "", + "custom": false + }, + { + "name": "Vector2Zero", + "params": [], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2One", + "params": [], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Add", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2AddValue", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "add", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Subtract", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2SubtractValue", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "sub", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Length", + "params": [ + { + "name": "v", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2LengthSqr", + "params": [ + { + "name": "v", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2DotProduct", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2Distance", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2DistanceSqr", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2Angle", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2LineAngle", + "params": [ + { + "name": "start", + "typ": "Vector2" + }, + { + "name": "end", + "typ": "Vector2" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector2Scale", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "scale", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Multiply", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Negate", + "params": [ + { + "name": "v", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Divide", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Normalize", + "params": [ + { + "name": "v", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Transform", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Lerp", + "params": [ + { + "name": "v1", + "typ": "Vector2" + }, + { + "name": "v2", + "typ": "Vector2" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Reflect", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "normal", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Rotate", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2MoveTowards", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "target", + "typ": "Vector2" + }, + { + "name": "maxDistance", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Invert", + "params": [ + { + "name": "v", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Clamp", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "min", + "typ": "Vector2" + }, + { + "name": "max", + "typ": "Vector2" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2ClampValue", + "params": [ + { + "name": "v", + "typ": "Vector2" + }, + { + "name": "min", + "typ": "f32" + }, + { + "name": "max", + "typ": "f32" + } + ], + "returnType": "Vector2", + "description": "", + "custom": false + }, + { + "name": "Vector2Equals", + "params": [ + { + "name": "p", + "typ": "Vector2" + }, + { + "name": "q", + "typ": "Vector2" + } + ], + "returnType": "i32", + "description": "", + "custom": false + }, + { + "name": "Vector3Zero", + "params": [], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3One", + "params": [], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Add", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3AddValue", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "add", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Subtract", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3SubtractValue", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "sub", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Scale", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "scalar", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Multiply", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3CrossProduct", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Perpendicular", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Length", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3LengthSqr", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3DotProduct", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3Distance", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3DistanceSqr", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3Angle", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "Vector3Negate", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Divide", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Normalize", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Project", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Reject", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3OrthoNormalize", + "params": [ + { + "name": "v1", + "typ": "?[*]Vector3" + }, + { + "name": "v2", + "typ": "?[*]Vector3" + } + ], + "returnType": "void", + "description": "", + "custom": false + }, + { + "name": "Vector3Transform", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3RotateByQuaternion", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3RotateByAxisAngle", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "axis", + "typ": "Vector3" + }, + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Lerp", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Reflect", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "normal", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Min", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Max", + "params": [ + { + "name": "v1", + "typ": "Vector3" + }, + { + "name": "v2", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Barycenter", + "params": [ + { + "name": "p", + "typ": "Vector3" + }, + { + "name": "a", + "typ": "Vector3" + }, + { + "name": "b", + "typ": "Vector3" + }, + { + "name": "c", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Unproject", + "params": [ + { + "name": "source", + "typ": "Vector3" + }, + { + "name": "projection", + "typ": "Matrix" + }, + { + "name": "view", + "typ": "Matrix" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3ToFloatV", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "float3", + "description": "", + "custom": false + }, + { + "name": "Vector3Invert", + "params": [ + { + "name": "v", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Clamp", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "min", + "typ": "Vector3" + }, + { + "name": "max", + "typ": "Vector3" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3ClampValue", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "min", + "typ": "f32" + }, + { + "name": "max", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "Vector3Equals", + "params": [ + { + "name": "p", + "typ": "Vector3" + }, + { + "name": "q", + "typ": "Vector3" + } + ], + "returnType": "i32", + "description": "", + "custom": false + }, + { + "name": "Vector3Refract", + "params": [ + { + "name": "v", + "typ": "Vector3" + }, + { + "name": "n", + "typ": "Vector3" + }, + { + "name": "r", + "typ": "f32" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "MatrixDeterminant", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "MatrixTrace", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "MatrixTranspose", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixInvert", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixIdentity", + "params": [], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixAdd", + "params": [ + { + "name": "left", + "typ": "Matrix" + }, + { + "name": "right", + "typ": "Matrix" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixSubtract", + "params": [ + { + "name": "left", + "typ": "Matrix" + }, + { + "name": "right", + "typ": "Matrix" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixMultiply", + "params": [ + { + "name": "left", + "typ": "Matrix" + }, + { + "name": "right", + "typ": "Matrix" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixTranslate", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotate", + "params": [ + { + "name": "axis", + "typ": "Vector3" + }, + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotateX", + "params": [ + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotateY", + "params": [ + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotateZ", + "params": [ + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotateXYZ", + "params": [ + { + "name": "angle", + "typ": "Vector3" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixRotateZYX", + "params": [ + { + "name": "angle", + "typ": "Vector3" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixScale", + "params": [ + { + "name": "x", + "typ": "f32" + }, + { + "name": "y", + "typ": "f32" + }, + { + "name": "z", + "typ": "f32" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixFrustum", + "params": [ + { + "name": "left", + "typ": "f64" + }, + { + "name": "right", + "typ": "f64" + }, + { + "name": "bottom", + "typ": "f64" + }, + { + "name": "top", + "typ": "f64" + }, + { + "name": "near", + "typ": "f64" + }, + { + "name": "far", + "typ": "f64" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixPerspective", + "params": [ + { + "name": "fovY", + "typ": "f64" + }, + { + "name": "aspect", + "typ": "f64" + }, + { + "name": "nearPlane", + "typ": "f64" + }, + { + "name": "farPlane", + "typ": "f64" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixOrtho", + "params": [ + { + "name": "left", + "typ": "f64" + }, + { + "name": "right", + "typ": "f64" + }, + { + "name": "bottom", + "typ": "f64" + }, + { + "name": "top", + "typ": "f64" + }, + { + "name": "nearPlane", + "typ": "f64" + }, + { + "name": "farPlane", + "typ": "f64" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixLookAt", + "params": [ + { + "name": "eye", + "typ": "Vector3" + }, + { + "name": "target", + "typ": "Vector3" + }, + { + "name": "up", + "typ": "Vector3" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "MatrixToFloatV", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "float16", + "description": "", + "custom": false + }, + { + "name": "QuaternionAdd", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionAddValue", + "params": [ + { + "name": "q", + "typ": "Vector4" + }, + { + "name": "add", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionSubtract", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionSubtractValue", + "params": [ + { + "name": "q", + "typ": "Vector4" + }, + { + "name": "sub", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionIdentity", + "params": [], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionLength", + "params": [ + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "f32", + "description": "", + "custom": false + }, + { + "name": "QuaternionNormalize", + "params": [ + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionInvert", + "params": [ + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionMultiply", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionScale", + "params": [ + { + "name": "q", + "typ": "Vector4" + }, + { + "name": "mul", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionDivide", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionLerp", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionNlerp", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionSlerp", + "params": [ + { + "name": "q1", + "typ": "Vector4" + }, + { + "name": "q2", + "typ": "Vector4" + }, + { + "name": "amount", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionFromVector3ToVector3", + "params": [ + { + "name": "from", + "typ": "Vector3" + }, + { + "name": "to", + "typ": "Vector3" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionFromMatrix", + "params": [ + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionToMatrix", + "params": [ + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "Matrix", + "description": "", + "custom": false + }, + { + "name": "QuaternionFromAxisAngle", + "params": [ + { + "name": "axis", + "typ": "Vector3" + }, + { + "name": "angle", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionToAxisAngle", + "params": [ + { + "name": "q", + "typ": "Vector4" + }, + { + "name": "outAxis", + "typ": "?[*]Vector3" + }, + { + "name": "outAngle", + "typ": "?[*]f32" + } + ], + "returnType": "void", + "description": "", + "custom": false + }, + { + "name": "QuaternionFromEuler", + "params": [ + { + "name": "pitch", + "typ": "f32" + }, + { + "name": "yaw", + "typ": "f32" + }, + { + "name": "roll", + "typ": "f32" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionToEuler", + "params": [ + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "Vector3", + "description": "", + "custom": false + }, + { + "name": "QuaternionTransform", + "params": [ + { + "name": "q", + "typ": "Vector4" + }, + { + "name": "mat", + "typ": "Matrix" + } + ], + "returnType": "Vector4", + "description": "", + "custom": false + }, + { + "name": "QuaternionEquals", + "params": [ + { + "name": "p", + "typ": "Vector4" + }, + { + "name": "q", + "typ": "Vector4" + } + ], + "returnType": "i32", + "description": "", + "custom": false + }, + { + "name": "TextAppend", + "params": [ + { + "name": "text", + "typ": "[*]u8" + }, + { + "name": "append", + "typ": "[*:0]const u8" + }, + { + "name": "position", + "typ": "[*]i32" + } + ], + "returnType": "void", + "description": "overriden in inject.zig", + "custom": true + } + ], + "enums": [ + { + "name": "ConfigFlags", + "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)" + } + ], + "description": "System/Window config flags", + "custom": false + }, + { + "name": "TraceLogLevel", + "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" + } + ], + "description": "Trace log level", + "custom": false + }, + { + "name": "KeyboardKey", + "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_VOLUME_UP", + "value": 24, + "description": "Key: Android volume up button" + }, + { + "name": "KEY_VOLUME_DOWN", + "value": 25, + "description": "Key: Android volume down button" + } + ], + "description": "Keyboard keys (US keyboard layout)", + "custom": true + }, + { + "name": "MouseButton", + "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)" + } + ], + "description": "Mouse buttons", + "custom": false + }, + { + "name": "MouseCursor", + "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" + } + ], + "description": "Mouse cursor", + "custom": false + }, + { + "name": "GamepadButton", + "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: Square, Xbox: X)" + }, + { + "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: Circle, Xbox: B)" + }, + { + "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 (one), 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" + } + ], + "description": "Gamepad buttons", + "custom": false + }, + { + "name": "GamepadAxis", + "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]" + } + ], + "description": "Gamepad axis", + "custom": false + }, + { + "name": "MaterialMapIndex", + "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" + } + ], + "description": "Material map index", + "custom": false + }, + { + "name": "ShaderLocationIndex", + "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" + } + ], + "description": "Shader location index", + "custom": false + }, + { + "name": "ShaderUniformDataType", + "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_SAMPLER2D", + "value": 8, + "description": "Shader uniform type: sampler2d" + } + ], + "description": "Shader uniform data type", + "custom": false + }, + { + "name": "ShaderAttributeDataType", + "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)" + } + ], + "description": "Shader attribute data types", + "custom": false + }, + { + "name": "PixelFormat", + "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" + } + ], + "description": "Pixel formats", + "custom": false + }, + { + "name": "TextureFilter", + "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" + } + ], + "description": "Texture parameters: filter mode", + "custom": false + }, + { + "name": "TextureWrap", + "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" + } + ], + "description": "Texture parameters: wrap mode", + "custom": false + }, + { + "name": "CubemapLayout", + "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": "CUBEMAP_LAYOUT_PANORAMA", + "value": 5, + "description": "Layout is defined by a panorama image (equirrectangular map)" + } + ], + "description": "Cubemap layouts", + "custom": false + }, + { + "name": "FontType", + "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" + } + ], + "description": "Font type, defines generation method", + "custom": false + }, + { + "name": "BlendMode", + "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())" + } + ], + "description": "Color blending modes (pre-defined)", + "custom": false + }, + { + "name": "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" + } + ], + "description": "Gesture", + "custom": false + }, + { + "name": "CameraMode", + "values": [ + { + "name": "CAMERA_CUSTOM", + "value": 0, + "description": "Custom camera" + }, + { + "name": "CAMERA_FREE", + "value": 1, + "description": "Free camera" + }, + { + "name": "CAMERA_ORBITAL", + "value": 2, + "description": "Orbital camera" + }, + { + "name": "CAMERA_FIRST_PERSON", + "value": 3, + "description": "First person camera" + }, + { + "name": "CAMERA_THIRD_PERSON", + "value": 4, + "description": "Third person camera" + } + ], + "description": "Camera system modes", + "custom": false + }, + { + "name": "CameraProjection", + "values": [ + { + "name": "CAMERA_PERSPECTIVE", + "value": 0, + "description": "Perspective projection" + }, + { + "name": "CAMERA_ORTHOGRAPHIC", + "value": 1, + "description": "Orthographic projection" + } + ], + "description": "Camera projection", + "custom": false + }, + { + "name": "NPatchLayout", + "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" + } + ], + "description": "N-patch layout", + "custom": false + }, + { + "name": "rlGlVersion", + "values": [ + { + "name": "RL_OPENGL_11", + "value": 1, + "description": "OpenGL 1.1" + }, + { + "name": "RL_OPENGL_21", + "value": 2, + "description": "OpenGL 2.1 (GLSL 120)" + }, + { + "name": "RL_OPENGL_33", + "value": 3, + "description": "OpenGL 3.3 (GLSL 330)" + }, + { + "name": "RL_OPENGL_43", + "value": 4, + "description": "OpenGL 4.3 (using GLSL 330)" + }, + { + "name": "RL_OPENGL_ES_20", + "value": 5, + "description": "OpenGL ES 2.0 (GLSL 100)" + }, + { + "name": "RL_OPENGL_ES_30", + "value": 6, + "description": "OpenGL ES 3.0 (GLSL 300 es)" + } + ], + "description": "OpenGL version", + "custom": false + }, + { + "name": "rlTraceLogLevel", + "values": [ + { + "name": "RL_LOG_ALL", + "value": 0, + "description": "Display all logs" + }, + { + "name": "RL_LOG_TRACE", + "value": 1, + "description": "Trace logging, intended for internal use only" + }, + { + "name": "RL_LOG_DEBUG", + "value": 2, + "description": "Debug logging, used for internal debugging, it should be disabled on release builds" + }, + { + "name": "RL_LOG_INFO", + "value": 3, + "description": "Info logging, used for program execution info" + }, + { + "name": "RL_LOG_WARNING", + "value": 4, + "description": "Warning logging, used on recoverable failures" + }, + { + "name": "RL_LOG_ERROR", + "value": 5, + "description": "Error logging, used on unrecoverable failures" + }, + { + "name": "RL_LOG_FATAL", + "value": 6, + "description": "Fatal logging, used to abort program: exit(EXIT_FAILURE)" + }, + { + "name": "RL_LOG_NONE", + "value": 7, + "description": "Disable logging" + } + ], + "description": "Trace log level", + "custom": false + }, + { + "name": "rlPixelFormat", + "values": [ + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE", + "value": 1, + "description": "8 bit per pixel (no alpha)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA", + "value": 2, + "description": "8*2 bpp (2 channels)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5", + "value": 3, + "description": "16 bpp" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8", + "value": 4, + "description": "24 bpp" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1", + "value": 5, + "description": "16 bpp (1 bit alpha)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4", + "value": 6, + "description": "16 bpp (4 bit alpha)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8", + "value": 7, + "description": "32 bpp" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R32", + "value": 8, + "description": "32 bpp (1 channel - float)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32", + "value": 9, + "description": "32*3 bpp (3 channels - float)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32", + "value": 10, + "description": "32*4 bpp (4 channels - float)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R16", + "value": 11, + "description": "16 bpp (1 channel - half float)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16", + "value": 12, + "description": "16*3 bpp (3 channels - half float)" + }, + { + "name": "RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16", + "value": 13, + "description": "16*4 bpp (4 channels - half float)" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_DXT1_RGB", + "value": 14, + "description": "4 bpp (no alpha)" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA", + "value": 15, + "description": "4 bpp (1 bit alpha)" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA", + "value": 16, + "description": "8 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA", + "value": 17, + "description": "8 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_ETC1_RGB", + "value": 18, + "description": "4 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_ETC2_RGB", + "value": 19, + "description": "4 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA", + "value": 20, + "description": "8 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_PVRT_RGB", + "value": 21, + "description": "4 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA", + "value": 22, + "description": "4 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA", + "value": 23, + "description": "8 bpp" + }, + { + "name": "RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA", + "value": 24, + "description": "2 bpp" + } + ], + "description": "Texture pixel formats", + "custom": false + }, + { + "name": "rlTextureFilter", + "values": [ + { + "name": "RL_TEXTURE_FILTER_POINT", + "value": 0, + "description": "No filter, just pixel approximation" + }, + { + "name": "RL_TEXTURE_FILTER_BILINEAR", + "value": 1, + "description": "Linear filtering" + }, + { + "name": "RL_TEXTURE_FILTER_TRILINEAR", + "value": 2, + "description": "Trilinear filtering (linear with mipmaps)" + }, + { + "name": "RL_TEXTURE_FILTER_ANISOTROPIC_4X", + "value": 3, + "description": "Anisotropic filtering 4x" + }, + { + "name": "RL_TEXTURE_FILTER_ANISOTROPIC_8X", + "value": 4, + "description": "Anisotropic filtering 8x" + }, + { + "name": "RL_TEXTURE_FILTER_ANISOTROPIC_16X", + "value": 5, + "description": "Anisotropic filtering 16x" + } + ], + "description": "Texture parameters: filter mode", + "custom": false + }, + { + "name": "rlBlendMode", + "values": [ + { + "name": "RL_BLEND_ALPHA", + "value": 0, + "description": "Blend textures considering alpha (default)" + }, + { + "name": "RL_BLEND_ADDITIVE", + "value": 1, + "description": "Blend textures adding colors" + }, + { + "name": "RL_BLEND_MULTIPLIED", + "value": 2, + "description": "Blend textures multiplying colors" + }, + { + "name": "RL_BLEND_ADD_COLORS", + "value": 3, + "description": "Blend textures adding colors (alternative)" + }, + { + "name": "RL_BLEND_SUBTRACT_COLORS", + "value": 4, + "description": "Blend textures subtracting colors (alternative)" + }, + { + "name": "RL_BLEND_ALPHA_PREMULTIPLY", + "value": 5, + "description": "Blend premultiplied textures considering alpha" + }, + { + "name": "RL_BLEND_CUSTOM", + "value": 6, + "description": "Blend textures using custom src/dst factors (use rlSetBlendFactors())" + }, + { + "name": "RL_BLEND_CUSTOM_SEPARATE", + "value": 7, + "description": "Blend textures using custom src/dst factors (use rlSetBlendFactorsSeparate())" + } + ], + "description": "Color blending modes (pre-defined)", + "custom": false + }, + { + "name": "rlShaderLocationIndex", + "values": [ + { + "name": "RL_SHADER_LOC_VERTEX_POSITION", + "value": 0, + "description": "Shader location: vertex attribute: position" + }, + { + "name": "RL_SHADER_LOC_VERTEX_TEXCOORD01", + "value": 1, + "description": "Shader location: vertex attribute: texcoord01" + }, + { + "name": "RL_SHADER_LOC_VERTEX_TEXCOORD02", + "value": 2, + "description": "Shader location: vertex attribute: texcoord02" + }, + { + "name": "RL_SHADER_LOC_VERTEX_NORMAL", + "value": 3, + "description": "Shader location: vertex attribute: normal" + }, + { + "name": "RL_SHADER_LOC_VERTEX_TANGENT", + "value": 4, + "description": "Shader location: vertex attribute: tangent" + }, + { + "name": "RL_SHADER_LOC_VERTEX_COLOR", + "value": 5, + "description": "Shader location: vertex attribute: color" + }, + { + "name": "RL_SHADER_LOC_MATRIX_MVP", + "value": 6, + "description": "Shader location: matrix uniform: model-view-projection" + }, + { + "name": "RL_SHADER_LOC_MATRIX_VIEW", + "value": 7, + "description": "Shader location: matrix uniform: view (camera transform)" + }, + { + "name": "RL_SHADER_LOC_MATRIX_PROJECTION", + "value": 8, + "description": "Shader location: matrix uniform: projection" + }, + { + "name": "RL_SHADER_LOC_MATRIX_MODEL", + "value": 9, + "description": "Shader location: matrix uniform: model (transform)" + }, + { + "name": "RL_SHADER_LOC_MATRIX_NORMAL", + "value": 10, + "description": "Shader location: matrix uniform: normal" + }, + { + "name": "RL_SHADER_LOC_VECTOR_VIEW", + "value": 11, + "description": "Shader location: vector uniform: view" + }, + { + "name": "RL_SHADER_LOC_COLOR_DIFFUSE", + "value": 12, + "description": "Shader location: vector uniform: diffuse color" + }, + { + "name": "RL_SHADER_LOC_COLOR_SPECULAR", + "value": 13, + "description": "Shader location: vector uniform: specular color" + }, + { + "name": "RL_SHADER_LOC_COLOR_AMBIENT", + "value": 14, + "description": "Shader location: vector uniform: ambient color" + }, + { + "name": "RL_SHADER_LOC_MAP_ALBEDO", + "value": 15, + "description": "Shader location: sampler2d texture: albedo (same as: RL_SHADER_LOC_MAP_DIFFUSE)" + }, + { + "name": "RL_SHADER_LOC_MAP_METALNESS", + "value": 16, + "description": "Shader location: sampler2d texture: metalness (same as: RL_SHADER_LOC_MAP_SPECULAR)" + }, + { + "name": "RL_SHADER_LOC_MAP_NORMAL", + "value": 17, + "description": "Shader location: sampler2d texture: normal" + }, + { + "name": "RL_SHADER_LOC_MAP_ROUGHNESS", + "value": 18, + "description": "Shader location: sampler2d texture: roughness" + }, + { + "name": "RL_SHADER_LOC_MAP_OCCLUSION", + "value": 19, + "description": "Shader location: sampler2d texture: occlusion" + }, + { + "name": "RL_SHADER_LOC_MAP_EMISSION", + "value": 20, + "description": "Shader location: sampler2d texture: emission" + }, + { + "name": "RL_SHADER_LOC_MAP_HEIGHT", + "value": 21, + "description": "Shader location: sampler2d texture: height" + }, + { + "name": "RL_SHADER_LOC_MAP_CUBEMAP", + "value": 22, + "description": "Shader location: samplerCube texture: cubemap" + }, + { + "name": "RL_SHADER_LOC_MAP_IRRADIANCE", + "value": 23, + "description": "Shader location: samplerCube texture: irradiance" + }, + { + "name": "RL_SHADER_LOC_MAP_PREFILTER", + "value": 24, + "description": "Shader location: samplerCube texture: prefilter" + }, + { + "name": "RL_SHADER_LOC_MAP_BRDF", + "value": 25, + "description": "Shader location: sampler2d texture: brdf" + } + ], + "description": "Shader location point type", + "custom": false + }, + { + "name": "rlShaderUniformDataType", + "values": [ + { + "name": "RL_SHADER_UNIFORM_FLOAT", + "value": 0, + "description": "Shader uniform type: float" + }, + { + "name": "RL_SHADER_UNIFORM_VEC2", + "value": 1, + "description": "Shader uniform type: vec2 (2 float)" + }, + { + "name": "RL_SHADER_UNIFORM_VEC3", + "value": 2, + "description": "Shader uniform type: vec3 (3 float)" + }, + { + "name": "RL_SHADER_UNIFORM_VEC4", + "value": 3, + "description": "Shader uniform type: vec4 (4 float)" + }, + { + "name": "RL_SHADER_UNIFORM_INT", + "value": 4, + "description": "Shader uniform type: int" + }, + { + "name": "RL_SHADER_UNIFORM_IVEC2", + "value": 5, + "description": "Shader uniform type: ivec2 (2 int)" + }, + { + "name": "RL_SHADER_UNIFORM_IVEC3", + "value": 6, + "description": "Shader uniform type: ivec3 (3 int)" + }, + { + "name": "RL_SHADER_UNIFORM_IVEC4", + "value": 7, + "description": "Shader uniform type: ivec4 (4 int)" + }, + { + "name": "RL_SHADER_UNIFORM_SAMPLER2D", + "value": 8, + "description": "Shader uniform type: sampler2d" + } + ], + "description": "Shader uniform data type", + "custom": false + }, + { + "name": "rlShaderAttributeDataType", + "values": [ + { + "name": "RL_SHADER_ATTRIB_FLOAT", + "value": 0, + "description": "Shader attribute type: float" + }, + { + "name": "RL_SHADER_ATTRIB_VEC2", + "value": 1, + "description": "Shader attribute type: vec2 (2 float)" + }, + { + "name": "RL_SHADER_ATTRIB_VEC3", + "value": 2, + "description": "Shader attribute type: vec3 (3 float)" + }, + { + "name": "RL_SHADER_ATTRIB_VEC4", + "value": 3, + "description": "Shader attribute type: vec4 (4 float)" + } + ], + "description": "Shader attribute data types", + "custom": false + }, + { + "name": "rlFramebufferAttachType", + "values": [ + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL0", + "value": 0, + "description": "Framebuffer attachment type: color 0" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL1", + "value": 1, + "description": "Framebuffer attachment type: color 1" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL2", + "value": 2, + "description": "Framebuffer attachment type: color 2" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL3", + "value": 3, + "description": "Framebuffer attachment type: color 3" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL4", + "value": 4, + "description": "Framebuffer attachment type: color 4" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL5", + "value": 5, + "description": "Framebuffer attachment type: color 5" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL6", + "value": 6, + "description": "Framebuffer attachment type: color 6" + }, + { + "name": "RL_ATTACHMENT_COLOR_CHANNEL7", + "value": 7, + "description": "Framebuffer attachment type: color 7" + }, + { + "name": "RL_ATTACHMENT_DEPTH", + "value": 100, + "description": "Framebuffer attachment type: depth" + }, + { + "name": "RL_ATTACHMENT_STENCIL", + "value": 200, + "description": "Framebuffer attachment type: stencil" + } + ], + "description": "Framebuffer attachment type", + "custom": false + }, + { + "name": "rlFramebufferAttachTextureType", + "values": [ + { + "name": "RL_ATTACHMENT_CUBEMAP_POSITIVE_X", + "value": 0, + "description": "Framebuffer texture attachment type: cubemap, +X side" + }, + { + "name": "RL_ATTACHMENT_CUBEMAP_NEGATIVE_X", + "value": 1, + "description": "Framebuffer texture attachment type: cubemap, -X side" + }, + { + "name": "RL_ATTACHMENT_CUBEMAP_POSITIVE_Y", + "value": 2, + "description": "Framebuffer texture attachment type: cubemap, +Y side" + }, + { + "name": "RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y", + "value": 3, + "description": "Framebuffer texture attachment type: cubemap, -Y side" + }, + { + "name": "RL_ATTACHMENT_CUBEMAP_POSITIVE_Z", + "value": 4, + "description": "Framebuffer texture attachment type: cubemap, +Z side" + }, + { + "name": "RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z", + "value": 5, + "description": "Framebuffer texture attachment type: cubemap, -Z side" + }, + { + "name": "RL_ATTACHMENT_TEXTURE2D", + "value": 100, + "description": "Framebuffer texture attachment type: texture2d" + }, + { + "name": "RL_ATTACHMENT_RENDERBUFFER", + "value": 200, + "description": "Framebuffer texture attachment type: renderbuffer" + } + ], + "description": "Framebuffer texture attachment type", + "custom": false + }, + { + "name": "rlCullMode", + "values": [ + { + "name": "RL_CULL_FACE_FRONT", + "value": 0, + "description": "" + }, + { + "name": "RL_CULL_FACE_BACK", + "value": 1, + "description": "" + } + ], + "description": "Face culling mode", + "custom": false + }, + { + "name": "PhysicsShapeType", + "values": [ + { + "name": "PHYSICS_CIRCLE", + "value": 0, + "description": "physics shape is a circle" + }, + { + "name": "PHYSICS_POLYGON", + "value": 1, + "description": "physics shape is a polygon" + } + ], + "description": "circle or polygon", + "custom": true + } + ], + "structs": [ + { + "name": "Vector2", + "fields": [ + { + "name": "x", + "typ": "f32", + "description": "" + }, + { + "name": "y", + "typ": "f32", + "description": "" + } + ], + "description": "Vector2 type", + "custom": false + }, + { + "name": "Vector3", + "fields": [ + { + "name": "x", + "typ": "f32", + "description": "" + }, + { + "name": "y", + "typ": "f32", + "description": "" + }, + { + "name": "z", + "typ": "f32", + "description": "" + } + ], + "description": "Vector3 type", + "custom": false + }, + { + "name": "Vector4", + "fields": [ + { + "name": "x", + "typ": "f32", + "description": "" + }, + { + "name": "y", + "typ": "f32", + "description": "" + }, + { + "name": "z", + "typ": "f32", + "description": "" + }, + { + "name": "w", + "typ": "f32", + "description": "" + } + ], + "description": "Vector4 type", + "custom": false + }, + { + "name": "Matrix", + "fields": [ + { + "name": "m0", + "typ": "f32", + "description": "Matrix first row (4 components)" + }, + { + "name": "m4", + "typ": "f32", + "description": "Matrix first row (4 components)" + }, + { + "name": "m8", + "typ": "f32", + "description": "Matrix first row (4 components)" + }, + { + "name": "m12", + "typ": "f32", + "description": "Matrix first row (4 components)" + }, + { + "name": "m1", + "typ": "f32", + "description": "Matrix second row (4 components)" + }, + { + "name": "m5", + "typ": "f32", + "description": "Matrix second row (4 components)" + }, + { + "name": "m9", + "typ": "f32", + "description": "Matrix second row (4 components)" + }, + { + "name": "m13", + "typ": "f32", + "description": "Matrix second row (4 components)" + }, + { + "name": "m2", + "typ": "f32", + "description": "Matrix third row (4 components)" + }, + { + "name": "m6", + "typ": "f32", + "description": "Matrix third row (4 components)" + }, + { + "name": "m10", + "typ": "f32", + "description": "Matrix third row (4 components)" + }, + { + "name": "m14", + "typ": "f32", + "description": "Matrix third row (4 components)" + }, + { + "name": "m3", + "typ": "f32", + "description": "Matrix fourth row (4 components)" + }, + { + "name": "m7", + "typ": "f32", + "description": "Matrix fourth row (4 components)" + }, + { + "name": "m11", + "typ": "f32", + "description": "Matrix fourth row (4 components)" + }, + { + "name": "m15", + "typ": "f32", + "description": "Matrix fourth row (4 components)" + } + ], + "description": "Matrix type (OpenGL style 4x4 - right handed, column major)", + "custom": false + }, + { + "name": "Color", + "fields": [ + { + "name": "r", + "typ": "u8", + "description": "Color red value" + }, + { + "name": "g", + "typ": "u8", + "description": "Color green value" + }, + { + "name": "b", + "typ": "u8", + "description": "Color blue value" + }, + { + "name": "a", + "typ": "u8", + "description": "Color alpha value" + } + ], + "description": "Color, 4 components, R8G8B8A8 (32bit)", + "custom": false + }, + { + "name": "Rectangle", + "fields": [ + { + "name": "x", + "typ": "f32", + "description": "Rectangle top-left corner position x" + }, + { + "name": "y", + "typ": "f32", + "description": "Rectangle top-left corner position y" + }, + { + "name": "width", + "typ": "f32", + "description": "Rectangle width" + }, + { + "name": "height", + "typ": "f32", + "description": "Rectangle height" + } + ], + "description": "Rectangle, 4 components", + "custom": false + }, + { + "name": "Image", + "fields": [ + { + "name": "data", + "typ": "*anyopaque", + "description": "Image raw data" + }, + { + "name": "width", + "typ": "i32", + "description": "Image base width" + }, + { + "name": "height", + "typ": "i32", + "description": "Image base height" + }, + { + "name": "mipmaps", + "typ": "i32", + "description": "Mipmap levels, 1 by default" + }, + { + "name": "format", + "typ": "i32", + "description": "Data format (PixelFormat type)" + } + ], + "description": "Image, pixel data stored in CPU memory (RAM)", + "custom": false + }, + { + "name": "Texture2D", + "fields": [ + { + "name": "id", + "typ": "u32", + "description": "OpenGL texture id" + }, + { + "name": "width", + "typ": "i32", + "description": "Texture base width" + }, + { + "name": "height", + "typ": "i32", + "description": "Texture base height" + }, + { + "name": "mipmaps", + "typ": "i32", + "description": "Mipmap levels, 1 by default" + }, + { + "name": "format", + "typ": "i32", + "description": "Data format (PixelFormat type)" + } + ], + "description": "Texture, tex data stored in GPU memory (VRAM)", + "custom": false + }, + { + "name": "RenderTexture2D", + "fields": [ + { + "name": "id", + "typ": "u32", + "description": "OpenGL framebuffer object id" + }, + { + "name": "texture", + "typ": "Texture2D", + "description": "Color buffer attachment texture" + }, + { + "name": "depth", + "typ": "Texture2D", + "description": "Depth buffer attachment texture" + } + ], + "description": "RenderTexture, fbo for texture rendering", + "custom": false + }, + { + "name": "NPatchInfo", + "fields": [ + { + "name": "source", + "typ": "Rectangle", + "description": "Texture source rectangle" + }, + { + "name": "left", + "typ": "i32", + "description": "Left border offset" + }, + { + "name": "top", + "typ": "i32", + "description": "Top border offset" + }, + { + "name": "right", + "typ": "i32", + "description": "Right border offset" + }, + { + "name": "bottom", + "typ": "i32", + "description": "Bottom border offset" + }, + { + "name": "layout", + "typ": "i32", + "description": "Layout of the n-patch: 3x3, 1x3 or 3x1" + } + ], + "description": "NPatchInfo, n-patch layout info", + "custom": false + }, + { + "name": "GlyphInfo", + "fields": [ + { + "name": "value", + "typ": "i32", + "description": "Character value (Unicode)" + }, + { + "name": "offsetX", + "typ": "i32", + "description": "Character offset X when drawing" + }, + { + "name": "offsetY", + "typ": "i32", + "description": "Character offset Y when drawing" + }, + { + "name": "advanceX", + "typ": "i32", + "description": "Character advance position X" + }, + { + "name": "image", + "typ": "Image", + "description": "Character image data" + } + ], + "description": "GlyphInfo, font characters glyphs info", + "custom": false + }, + { + "name": "Font", + "fields": [ + { + "name": "baseSize", + "typ": "i32", + "description": "Base size (default chars height)" + }, + { + "name": "glyphCount", + "typ": "i32", + "description": "Number of glyph characters" + }, + { + "name": "glyphPadding", + "typ": "i32", + "description": "Padding around the glyph characters" + }, + { + "name": "texture", + "typ": "Texture2D", + "description": "Texture atlas containing the glyphs" + }, + { + "name": "recs", + "typ": "?[*]Rectangle", + "description": "Rectangles in texture for the glyphs" + }, + { + "name": "glyphs", + "typ": "?[*]GlyphInfo", + "description": "Glyphs info data" + } + ], + "description": "Font, font texture and GlyphInfo array data", + "custom": false + }, + { + "name": "Camera3D", + "fields": [ + { + "name": "position", + "typ": "Vector3", + "description": "Camera position" + }, + { + "name": "target", + "typ": "Vector3", + "description": "Camera target it looks-at" + }, + { + "name": "up", + "typ": "Vector3", + "description": "Camera up vector (rotation over its axis)" + }, + { + "name": "fovy", + "typ": "f32", + "description": "Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic" + }, + { + "name": "projection", + "typ": "CameraProjection", + "description": "Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC" + } + ], + "description": "Camera, defines position/orientation in 3d space", + "custom": true + }, + { + "name": "Camera2D", + "fields": [ + { + "name": "offset", + "typ": "Vector2", + "description": "Camera offset (displacement from target)" + }, + { + "name": "target", + "typ": "Vector2", + "description": "Camera target (rotation and zoom origin)" + }, + { + "name": "rotation", + "typ": "f32", + "description": "Camera rotation in degrees" + }, + { + "name": "zoom", + "typ": "f32", + "description": "Camera zoom (scaling), should be 1.0f by default" + } + ], + "description": "Camera2D, defines position/orientation in 2d space", + "custom": false + }, + { + "name": "Mesh", + "fields": [ + { + "name": "vertexCount", + "typ": "i32", + "description": "Number of vertices stored in arrays" + }, + { + "name": "triangleCount", + "typ": "i32", + "description": "Number of triangles stored (indexed or not)" + }, + { + "name": "vertices", + "typ": "?[*]f32", + "description": "Vertex position (XYZ - 3 components per vertex) (shader-location = 0)" + }, + { + "name": "texcoords", + "typ": "?[*]f32", + "description": "Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)" + }, + { + "name": "texcoords2", + "typ": "?[*]f32", + "description": "Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)" + }, + { + "name": "normals", + "typ": "?[*]f32", + "description": "Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)" + }, + { + "name": "tangents", + "typ": "?[*]f32", + "description": "Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)" + }, + { + "name": "colors", + "typ": "?[*]u8", + "description": "Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)" + }, + { + "name": "indices", + "typ": "?[*]u16", + "description": "Vertex indices (in case vertex data comes indexed)" + }, + { + "name": "animVertices", + "typ": "?[*]f32", + "description": "Animated vertex positions (after bones transformations)" + }, + { + "name": "animNormals", + "typ": "?[*]f32", + "description": "Animated normals (after bones transformations)" + }, + { + "name": "boneIds", + "typ": "?[*]u8", + "description": "Vertex bone ids, max 255 bone ids, up to 4 bones influence by vertex (skinning)" + }, + { + "name": "boneWeights", + "typ": "?[*]f32", + "description": "Vertex bone weight, up to 4 bones influence by vertex (skinning)" + }, + { + "name": "vaoId", + "typ": "u32", + "description": "OpenGL Vertex Array Object id" + }, + { + "name": "vboId", + "typ": "?[*]u32", + "description": "OpenGL Vertex Buffer Objects id (default vertex data)" + } + ], + "description": "Mesh, vertex data and vao/vbo", + "custom": false + }, + { + "name": "Shader", + "fields": [ + { + "name": "id", + "typ": "u32", + "description": "Shader program id" + }, + { + "name": "locs", + "typ": "?[*]i32", + "description": "Shader locations array (RL_MAX_SHADER_LOCATIONS)" + } + ], + "description": "Shader", + "custom": false + }, + { + "name": "MaterialMap", + "fields": [ + { + "name": "texture", + "typ": "Texture2D", + "description": "Material map texture" + }, + { + "name": "color", + "typ": "Color", + "description": "Material map color" + }, + { + "name": "value", + "typ": "f32", + "description": "Material map value" + } + ], + "description": "MaterialMap", + "custom": false + }, + { + "name": "Material", + "fields": [ + { + "name": "shader", + "typ": "Shader", + "description": "Material shader" + }, + { + "name": "maps", + "typ": "?[*]MaterialMap", + "description": "Material maps array (MAX_MATERIAL_MAPS)" + }, + { + "name": "params", + "typ": "[4]f32", + "description": "Material generic parameters (if required)" + } + ], + "description": "Material, includes shader and maps", + "custom": false + }, + { + "name": "Transform", + "fields": [ + { + "name": "translation", + "typ": "Vector3", + "description": "Translation" + }, + { + "name": "rotation", + "typ": "Vector4", + "description": "Rotation" + }, + { + "name": "scale", + "typ": "Vector3", + "description": "Scale" + } + ], + "description": "Transform, vertex transformation data", + "custom": false + }, + { + "name": "BoneInfo", + "fields": [ + { + "name": "name", + "typ": "[32]u8", + "description": "Bone name" + }, + { + "name": "parent", + "typ": "i32", + "description": "Bone parent" + } + ], + "description": "Bone, skeletal animation bone", + "custom": false + }, + { + "name": "Model", + "fields": [ + { + "name": "transform", + "typ": "Matrix", + "description": "Local transform matrix" + }, + { + "name": "meshCount", + "typ": "i32", + "description": "Number of meshes" + }, + { + "name": "materialCount", + "typ": "i32", + "description": "Number of materials" + }, + { + "name": "meshes", + "typ": "?[*]Mesh", + "description": "Meshes array" + }, + { + "name": "materials", + "typ": "?[*]Material", + "description": "Materials array" + }, + { + "name": "meshMaterial", + "typ": "?[*]i32", + "description": "Mesh material number" + }, + { + "name": "boneCount", + "typ": "i32", + "description": "Number of bones" + }, + { + "name": "bones", + "typ": "?[*]BoneInfo", + "description": "Bones information (skeleton)" + }, + { + "name": "bindPose", + "typ": "?[*]Transform", + "description": "Bones base transformation (pose)" + } + ], + "description": "Model, meshes, materials and animation data", + "custom": false + }, + { + "name": "ModelAnimation", + "fields": [ + { + "name": "boneCount", + "typ": "i32", + "description": "Number of bones" + }, + { + "name": "frameCount", + "typ": "i32", + "description": "Number of animation frames" + }, + { + "name": "bones", + "typ": "?[*]BoneInfo", + "description": "Bones information (skeleton)" + }, + { + "name": "framePoses", + "typ": "?[*][*]Transform", + "description": "Poses array by frame" + }, + { + "name": "name", + "typ": "[32]u8", + "description": "Animation name" + } + ], + "description": "ModelAnimation", + "custom": true + }, + { + "name": "Ray", + "fields": [ + { + "name": "position", + "typ": "Vector3", + "description": "Ray position (origin)" + }, + { + "name": "direction", + "typ": "Vector3", + "description": "Ray direction" + } + ], + "description": "Ray, ray for raycasting", + "custom": false + }, + { + "name": "RayCollision", + "fields": [ + { + "name": "hit", + "typ": "bool", + "description": "Did the ray hit something?" + }, + { + "name": "distance", + "typ": "f32", + "description": "Distance to the nearest hit" + }, + { + "name": "point", + "typ": "Vector3", + "description": "Point of the nearest hit" + }, + { + "name": "normal", + "typ": "Vector3", + "description": "Surface normal of hit" + } + ], + "description": "RayCollision, ray hit information", + "custom": false + }, + { + "name": "BoundingBox", + "fields": [ + { + "name": "min", + "typ": "Vector3", + "description": "Minimum vertex box-corner" + }, + { + "name": "max", + "typ": "Vector3", + "description": "Maximum vertex box-corner" + } + ], + "description": "BoundingBox", + "custom": false + }, + { + "name": "Wave", + "fields": [ + { + "name": "frameCount", + "typ": "u32", + "description": "Total number of frames (considering channels)" + }, + { + "name": "sampleRate", + "typ": "u32", + "description": "Frequency (samples per second)" + }, + { + "name": "sampleSize", + "typ": "u32", + "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)" + }, + { + "name": "channels", + "typ": "u32", + "description": "Number of channels (1-mono, 2-stereo, ...)" + }, + { + "name": "data", + "typ": "*anyopaque", + "description": "Buffer data pointer" + } + ], + "description": "Wave, audio wave data", + "custom": false + }, + { + "name": "AudioStream", + "fields": [ + { + "name": "buffer", + "typ": "*anyopaque", + "description": "Pointer to internal data used by the audio system" + }, + { + "name": "processor", + "typ": "*anyopaque", + "description": "Pointer to internal data processor, useful for audio effects" + }, + { + "name": "sampleRate", + "typ": "u32", + "description": "Frequency (samples per second)" + }, + { + "name": "sampleSize", + "typ": "u32", + "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)" + }, + { + "name": "channels", + "typ": "u32", + "description": "Number of channels (1-mono, 2-stereo, ...)" + } + ], + "description": "AudioStream, custom audio stream", + "custom": false + }, + { + "name": "Sound", + "fields": [ + { + "name": "stream", + "typ": "AudioStream", + "description": "Audio stream" + }, + { + "name": "frameCount", + "typ": "u32", + "description": "Total number of frames (considering channels)" + } + ], + "description": "Sound", + "custom": false + }, + { + "name": "Music", + "fields": [ + { + "name": "stream", + "typ": "AudioStream", + "description": "Audio stream" + }, + { + "name": "frameCount", + "typ": "u32", + "description": "Total number of frames (considering channels)" + }, + { + "name": "looping", + "typ": "bool", + "description": "Music looping enable" + }, + { + "name": "ctxType", + "typ": "i32", + "description": "Type of music context (audio filetype)" + }, + { + "name": "ctxData", + "typ": "*anyopaque", + "description": "Audio context data, depends on type" + } + ], + "description": "Music, audio stream, anything longer than ~10 seconds should be streamed", + "custom": false + }, + { + "name": "VrDeviceInfo", + "fields": [ + { + "name": "hResolution", + "typ": "i32", + "description": "Horizontal resolution in pixels" + }, + { + "name": "vResolution", + "typ": "i32", + "description": "Vertical resolution in pixels" + }, + { + "name": "hScreenSize", + "typ": "f32", + "description": "Horizontal size in meters" + }, + { + "name": "vScreenSize", + "typ": "f32", + "description": "Vertical size in meters" + }, + { + "name": "eyeToScreenDistance", + "typ": "f32", + "description": "Distance between eye and display in meters" + }, + { + "name": "lensSeparationDistance", + "typ": "f32", + "description": "Lens separation distance in meters" + }, + { + "name": "interpupillaryDistance", + "typ": "f32", + "description": "IPD (distance between pupils) in meters" + }, + { + "name": "lensDistortionValues", + "typ": "[4]f32", + "description": "Lens distortion constant parameters" + }, + { + "name": "chromaAbCorrection", + "typ": "[4]f32", + "description": "Chromatic aberration correction parameters" + } + ], + "description": "VrDeviceInfo, Head-Mounted-Display device parameters", + "custom": false + }, + { + "name": "VrStereoConfig", + "fields": [ + { + "name": "projection", + "typ": "[2]Matrix", + "description": "VR projection matrices (per eye)" + }, + { + "name": "viewOffset", + "typ": "[2]Matrix", + "description": "VR view offset matrices (per eye)" + }, + { + "name": "leftLensCenter", + "typ": "[2]f32", + "description": "VR left lens center" + }, + { + "name": "rightLensCenter", + "typ": "[2]f32", + "description": "VR right lens center" + }, + { + "name": "leftScreenCenter", + "typ": "[2]f32", + "description": "VR left screen center" + }, + { + "name": "rightScreenCenter", + "typ": "[2]f32", + "description": "VR right screen center" + }, + { + "name": "scale", + "typ": "[2]f32", + "description": "VR distortion scale" + }, + { + "name": "scaleIn", + "typ": "[2]f32", + "description": "VR distortion scale in" + } + ], + "description": "VrStereoConfig, VR stereo rendering configuration for simulator", + "custom": false + }, + { + "name": "FilePathList", + "fields": [ + { + "name": "capacity", + "typ": "u32", + "description": "Filepaths max entries" + }, + { + "name": "count", + "typ": "u32", + "description": "Filepaths entries count" + }, + { + "name": "paths", + "typ": "[*][*:0]u8", + "description": "Filepaths entries" + } + ], + "description": "File path list", + "custom": false + }, + { + "name": "AutomationEvent", + "fields": [ + { + "name": "frame", + "typ": "u32", + "description": "Event frame" + }, + { + "name": "type", + "typ": "u32", + "description": "Event type (AutomationEventType)" + }, + { + "name": "params", + "typ": "[4]i32", + "description": "Event parameters (if required)" + } + ], + "description": "Automation event", + "custom": false + }, + { + "name": "AutomationEventList", + "fields": [ + { + "name": "capacity", + "typ": "u32", + "description": "Events max entries (MAX_AUTOMATION_EVENTS)" + }, + { + "name": "count", + "typ": "u32", + "description": "Events entries count" + }, + { + "name": "events", + "typ": "?[*]AutomationEvent", + "description": "Events entries" + } + ], + "description": "Automation event list", + "custom": false + }, + { + "name": "rlVertexBuffer", + "fields": [ + { + "name": "elementCount", + "typ": "i32", + "description": "Number of elements in the buffer (QUADS)" + }, + { + "name": "vertices", + "typ": "[*]f32", + "description": "Vertex position (XYZ - 3 components per vertex) (shader-location = 0)" + }, + { + "name": "texcoords", + "typ": "[*]f32", + "description": "Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)" + }, + { + "name": "colors", + "typ": "[*]u8", + "description": "Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)" + }, + { + "name": "indices", + "typ": "[*]u16", + "description": "Vertex indices (in case vertex data comes indexed) (6 indices per quad)" + }, + { + "name": "vaoId", + "typ": "u32", + "description": "OpenGL Vertex Array Object id" + }, + { + "name": "vboId", + "typ": "[4]u32", + "description": "OpenGL Vertex Buffer Objects id (4 types of vertex data)" + } + ], + "description": "Dynamic vertex buffers (position + texcoords + colors + indices arrays)", + "custom": true + }, + { + "name": "rlDrawCall", + "fields": [ + { + "name": "mode", + "typ": "i32", + "description": "Drawing mode: LINES, TRIANGLES, QUADS" + }, + { + "name": "vertexCount", + "typ": "i32", + "description": "Number of vertex of the draw" + }, + { + "name": "vertexAlignment", + "typ": "i32", + "description": "Number of vertex required for index alignment (LINES, TRIANGLES)" + }, + { + "name": "textureId", + "typ": "u32", + "description": "Texture id to be used on the draw -> Use to create new draw call if changes" + } + ], + "description": "of those state-change happens (this is done in core module)", + "custom": false + }, + { + "name": "rlRenderBatch", + "fields": [ + { + "name": "bufferCount", + "typ": "i32", + "description": "Number of vertex buffers (multi-buffering support)" + }, + { + "name": "currentBuffer", + "typ": "i32", + "description": "Current buffer tracking in case of multi-buffering" + }, + { + "name": "vertexBuffer", + "typ": "?[*]rlVertexBuffer", + "description": "Dynamic buffer(s) for vertex data" + }, + { + "name": "draws", + "typ": "?[*]rlDrawCall", + "description": "Draw calls array, depends on textureId" + }, + { + "name": "drawCounter", + "typ": "i32", + "description": "Draw calls counter" + }, + { + "name": "currentDepth", + "typ": "f32", + "description": "Current depth value for next draw" + } + ], + "description": "rlRenderBatch type", + "custom": false + }, + { + "name": "rlglData", + "fields": [ + { + "name": "currentBatch", + "typ": "[*]rlRenderBatch", + "description": "Current render batch" + }, + { + "name": "defaultBatch", + "typ": "rlRenderBatch", + "description": "Default internal render batch" + }, + { + "name": "vertexCounter", + "typ": "i32", + "description": "Current active render batch vertex counter (generic, used for all batches)" + }, + { + "name": "texcoordx, texcoordy", + "typ": "f32", + "description": "Current active texture coordinate (added on glVertex*())" + }, + { + "name": "normalx, normaly, normalz", + "typ": "f32", + "description": "Current active normal (added on glVertex*())" + }, + { + "name": "colorr, colorg, colorb, colora", + "typ": "u8", + "description": "Current active color (added on glVertex*())" + }, + { + "name": "currentMatrixMode", + "typ": "i32", + "description": "Current matrix mode" + }, + { + "name": "currentMatrix", + "typ": "[*]Matrix", + "description": "Current matrix pointer" + }, + { + "name": "modelview", + "typ": "Matrix", + "description": "Default modelview matrix" + }, + { + "name": "projection", + "typ": "Matrix", + "description": "Default projection matrix" + }, + { + "name": "transform", + "typ": "Matrix", + "description": "Transform matrix to be used with rlTranslate, rlRotate, rlScale" + }, + { + "name": "transformRequired", + "typ": "bool", + "description": "Require transform matrix application to current draw-call vertex (if required)" + }, + { + "name": "stack", + "typ": "Matrix", + "description": "Matrix stack for push/pop" + }, + { + "name": "stackCounter", + "typ": "i32", + "description": "Matrix stack counter" + }, + { + "name": "defaultTextureId", + "typ": "u32", + "description": "Default texture used on shapes/poly drawing (required by shader)" + }, + { + "name": "activeTextureId", + "typ": "u32", + "description": "Active texture ids to be enabled on batch drawing (0 active by default)" + }, + { + "name": "defaultVShaderId", + "typ": "u32", + "description": "Default vertex shader id (used by default shader program)" + }, + { + "name": "defaultFShaderId", + "typ": "u32", + "description": "Default fragment shader id (used by default shader program)" + }, + { + "name": "defaultShaderId", + "typ": "u32", + "description": "Default shader program id, supports vertex color and diffuse texture" + }, + { + "name": "defaultShaderLocs", + "typ": "[*]i32", + "description": "Default shader locations pointer to be used on rendering" + }, + { + "name": "currentShaderId", + "typ": "u32", + "description": "Current shader id to be used on rendering (by default, defaultShaderId)" + }, + { + "name": "currentShaderLocs", + "typ": "[*]i32", + "description": "Current shader locations pointer to be used on rendering (by default, defaultShaderLocs)" + }, + { + "name": "stereoRender", + "typ": "bool", + "description": "Stereo rendering flag" + }, + { + "name": "projectionStereo", + "typ": "[2]Matrix", + "description": "VR stereo rendering eyes projection matrices" + }, + { + "name": "viewOffsetStereo", + "typ": "[2]Matrix", + "description": "VR stereo rendering eyes view offset matrices" + }, + { + "name": "currentBlendMode", + "typ": "i32", + "description": "Blending mode active" + }, + { + "name": "glBlendSrcFactor", + "typ": "i32", + "description": "Blending source factor" + }, + { + "name": "glBlendDstFactor", + "typ": "i32", + "description": "Blending destination factor" + }, + { + "name": "glBlendEquation", + "typ": "i32", + "description": "Blending equation" + }, + { + "name": "framebufferWidth", + "typ": "i32", + "description": "Current framebuffer width" + }, + { + "name": "framebufferHeight", + "typ": "i32", + "description": "Current framebuffer height" + } + ], + "description": "injected", + "custom": true + }, + { + "name": "float3", + "fields": [ + { + "name": "v", + "typ": "[3]f32", + "description": "" + } + ], + "description": "NOTE: Helper types to be used instead of array return types for *ToFloat functions", + "custom": false + }, + { + "name": "float16", + "fields": [ + { + "name": "v", + "typ": "[16]f32", + "description": "" + } + ], + "description": "", + "custom": false + } + ], + "defines": [ + { + "name": "RAYLIB_VERSION_MAJOR", + "typ": "i32", + "value": "5", + "description": "", + "custom": false + }, + { + "name": "RAYLIB_VERSION_MINOR", + "typ": "i32", + "value": "1", + "description": "", + "custom": false + }, + { + "name": "RAYLIB_VERSION_PATCH", + "typ": "i32", + "value": "0", + "description": "", + "custom": false + }, + { + "name": "RAYLIB_VERSION", + "typ": "[]const u8", + "value": "\"5.1-dev\"", + "description": "", + "custom": false + }, + { + "name": "PI", + "typ": "f32", + "value": "3.14159265358979323846", + "description": "", + "custom": false + }, + { + "name": "LIGHTGRAY", + "typ": "Color", + "value": ".{.r=200, .g=200, .b=200, .a=255}", + "description": "Light Gray", + "custom": false + }, + { + "name": "GRAY", + "typ": "Color", + "value": ".{.r=130, .g=130, .b=130, .a=255}", + "description": "Gray", + "custom": false + }, + { + "name": "DARKGRAY", + "typ": "Color", + "value": ".{.r=80, .g=80, .b=80, .a=255}", + "description": "Dark Gray", + "custom": false + }, + { + "name": "YELLOW", + "typ": "Color", + "value": ".{.r=253, .g=249, .b=0, .a=255}", + "description": "Yellow", + "custom": false + }, + { + "name": "GOLD", + "typ": "Color", + "value": ".{.r=255, .g=203, .b=0, .a=255}", + "description": "Gold", + "custom": false + }, + { + "name": "ORANGE", + "typ": "Color", + "value": ".{.r=255, .g=161, .b=0, .a=255}", + "description": "Orange", + "custom": false + }, + { + "name": "PINK", + "typ": "Color", + "value": ".{.r=255, .g=109, .b=194, .a=255}", + "description": "Pink", + "custom": false + }, + { + "name": "RED", + "typ": "Color", + "value": ".{.r=230, .g=41, .b=55, .a=255}", + "description": "Red", + "custom": false + }, + { + "name": "MAROON", + "typ": "Color", + "value": ".{.r=190, .g=33, .b=55, .a=255}", + "description": "Maroon", + "custom": false + }, + { + "name": "GREEN", + "typ": "Color", + "value": ".{.r=0, .g=228, .b=48, .a=255}", + "description": "Green", + "custom": false + }, + { + "name": "LIME", + "typ": "Color", + "value": ".{.r=0, .g=158, .b=47, .a=255}", + "description": "Lime", + "custom": false + }, + { + "name": "DARKGREEN", + "typ": "Color", + "value": ".{.r=0, .g=117, .b=44, .a=255}", + "description": "Dark Green", + "custom": false + }, + { + "name": "SKYBLUE", + "typ": "Color", + "value": ".{.r=102, .g=191, .b=255, .a=255}", + "description": "Sky Blue", + "custom": false + }, + { + "name": "BLUE", + "typ": "Color", + "value": ".{.r=0, .g=121, .b=241, .a=255}", + "description": "Blue", + "custom": false + }, + { + "name": "DARKBLUE", + "typ": "Color", + "value": ".{.r=0, .g=82, .b=172, .a=255}", + "description": "Dark Blue", + "custom": false + }, + { + "name": "PURPLE", + "typ": "Color", + "value": ".{.r=200, .g=122, .b=255, .a=255}", + "description": "Purple", + "custom": false + }, + { + "name": "VIOLET", + "typ": "Color", + "value": ".{.r=135, .g=60, .b=190, .a=255}", + "description": "Violet", + "custom": false + }, + { + "name": "DARKPURPLE", + "typ": "Color", + "value": ".{.r=112, .g=31, .b=126, .a=255}", + "description": "Dark Purple", + "custom": false + }, + { + "name": "BEIGE", + "typ": "Color", + "value": ".{.r=211, .g=176, .b=131, .a=255}", + "description": "Beige", + "custom": false + }, + { + "name": "BROWN", + "typ": "Color", + "value": ".{.r=127, .g=106, .b=79, .a=255}", + "description": "Brown", + "custom": false + }, + { + "name": "DARKBROWN", + "typ": "Color", + "value": ".{.r=76, .g=63, .b=47, .a=255}", + "description": "Dark Brown", + "custom": false + }, + { + "name": "WHITE", + "typ": "Color", + "value": ".{.r=255, .g=255, .b=255, .a=255}", + "description": "White", + "custom": false + }, + { + "name": "BLACK", + "typ": "Color", + "value": ".{.r=0, .g=0, .b=0, .a=255}", + "description": "Black", + "custom": false + }, + { + "name": "BLANK", + "typ": "Color", + "value": ".{.r=0, .g=0, .b=0, .a=0}", + "description": "Blank (Transparent)", + "custom": false + }, + { + "name": "MAGENTA", + "typ": "Color", + "value": ".{.r=255, .g=0, .b=255, .a=255}", + "description": "Magenta", + "custom": false + }, + { + "name": "RAYWHITE", + "typ": "Color", + "value": ".{.r=245, .g=245, .b=245, .a=255}", + "description": "My own White (raylib logo)", + "custom": false + }, + { + "name": "RLGL_VERSION", + "typ": "[]const u8", + "value": "\"4.5\"", + "description": "", + "custom": false + }, + { + "name": "RL_DEFAULT_BATCH_BUFFER_ELEMENTS", + "typ": "i32", + "value": "8192", + "description": "", + "custom": false + }, + { + "name": "RL_DEFAULT_BATCH_BUFFERS", + "typ": "i32", + "value": "1", + "description": "Default number of batch buffers (multi-buffering)", + "custom": false + }, + { + "name": "RL_DEFAULT_BATCH_DRAWCALLS", + "typ": "i32", + "value": "256", + "description": "Default number of batch draw calls (by state changes: mode, texture)", + "custom": false + }, + { + "name": "RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS", + "typ": "i32", + "value": "4", + "description": "Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())", + "custom": false + }, + { + "name": "RL_MAX_MATRIX_STACK_SIZE", + "typ": "i32", + "value": "32", + "description": "Maximum size of Matrix stack", + "custom": false + }, + { + "name": "RL_MAX_SHADER_LOCATIONS", + "typ": "i32", + "value": "32", + "description": "Maximum number of shader locations supported", + "custom": false + }, + { + "name": "RL_CULL_DISTANCE_NEAR", + "typ": "f64", + "value": "0.01", + "description": "Default near cull distance", + "custom": false + }, + { + "name": "RL_CULL_DISTANCE_FAR", + "typ": "f64", + "value": "1000.0", + "description": "Default far cull distance", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_S", + "typ": "i32", + "value": "10242", + "description": "GL_TEXTURE_WRAP_S", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_T", + "typ": "i32", + "value": "10243", + "description": "GL_TEXTURE_WRAP_T", + "custom": false + }, + { + "name": "RL_TEXTURE_MAG_FILTER", + "typ": "i32", + "value": "10240", + "description": "GL_TEXTURE_MAG_FILTER", + "custom": false + }, + { + "name": "RL_TEXTURE_MIN_FILTER", + "typ": "i32", + "value": "10241", + "description": "GL_TEXTURE_MIN_FILTER", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_NEAREST", + "typ": "i32", + "value": "9728", + "description": "GL_NEAREST", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_LINEAR", + "typ": "i32", + "value": "9729", + "description": "GL_LINEAR", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_MIP_NEAREST", + "typ": "i32", + "value": "9984", + "description": "GL_NEAREST_MIPMAP_NEAREST", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR", + "typ": "i32", + "value": "9986", + "description": "GL_NEAREST_MIPMAP_LINEAR", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST", + "typ": "i32", + "value": "9985", + "description": "GL_LINEAR_MIPMAP_NEAREST", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_MIP_LINEAR", + "typ": "i32", + "value": "9987", + "description": "GL_LINEAR_MIPMAP_LINEAR", + "custom": false + }, + { + "name": "RL_TEXTURE_FILTER_ANISOTROPIC", + "typ": "i32", + "value": "12288", + "description": "Anisotropic filter (custom identifier)", + "custom": false + }, + { + "name": "RL_TEXTURE_MIPMAP_BIAS_RATIO", + "typ": "i32", + "value": "16384", + "description": "Texture mipmap bias, percentage ratio (custom identifier)", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_REPEAT", + "typ": "i32", + "value": "10497", + "description": "GL_REPEAT", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_CLAMP", + "typ": "i32", + "value": "33071", + "description": "GL_CLAMP_TO_EDGE", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_MIRROR_REPEAT", + "typ": "i32", + "value": "33648", + "description": "GL_MIRRORED_REPEAT", + "custom": false + }, + { + "name": "RL_TEXTURE_WRAP_MIRROR_CLAMP", + "typ": "i32", + "value": "34626", + "description": "GL_MIRROR_CLAMP_EXT", + "custom": false + }, + { + "name": "RL_MODELVIEW", + "typ": "i32", + "value": "5888", + "description": "GL_MODELVIEW", + "custom": false + }, + { + "name": "RL_PROJECTION", + "typ": "i32", + "value": "5889", + "description": "GL_PROJECTION", + "custom": false + }, + { + "name": "RL_TEXTURE", + "typ": "i32", + "value": "5890", + "description": "GL_TEXTURE", + "custom": false + }, + { + "name": "RL_LINES", + "typ": "i32", + "value": "1", + "description": "GL_LINES", + "custom": false + }, + { + "name": "RL_TRIANGLES", + "typ": "i32", + "value": "4", + "description": "GL_TRIANGLES", + "custom": false + }, + { + "name": "RL_QUADS", + "typ": "i32", + "value": "7", + "description": "GL_QUADS", + "custom": false + }, + { + "name": "RL_UNSIGNED_BYTE", + "typ": "i32", + "value": "5121", + "description": "GL_UNSIGNED_BYTE", + "custom": false + }, + { + "name": "RL_FLOAT", + "typ": "i32", + "value": "5126", + "description": "GL_FLOAT", + "custom": false + }, + { + "name": "RL_STREAM_DRAW", + "typ": "i32", + "value": "35040", + "description": "GL_STREAM_DRAW", + "custom": false + }, + { + "name": "RL_STREAM_READ", + "typ": "i32", + "value": "35041", + "description": "GL_STREAM_READ", + "custom": false + }, + { + "name": "RL_STREAM_COPY", + "typ": "i32", + "value": "35042", + "description": "GL_STREAM_COPY", + "custom": false + }, + { + "name": "RL_STATIC_DRAW", + "typ": "i32", + "value": "35044", + "description": "GL_STATIC_DRAW", + "custom": false + }, + { + "name": "RL_STATIC_READ", + "typ": "i32", + "value": "35045", + "description": "GL_STATIC_READ", + "custom": false + }, + { + "name": "RL_STATIC_COPY", + "typ": "i32", + "value": "35046", + "description": "GL_STATIC_COPY", + "custom": false + }, + { + "name": "RL_DYNAMIC_DRAW", + "typ": "i32", + "value": "35048", + "description": "GL_DYNAMIC_DRAW", + "custom": false + }, + { + "name": "RL_DYNAMIC_READ", + "typ": "i32", + "value": "35049", + "description": "GL_DYNAMIC_READ", + "custom": false + }, + { + "name": "RL_DYNAMIC_COPY", + "typ": "i32", + "value": "35050", + "description": "GL_DYNAMIC_COPY", + "custom": false + }, + { + "name": "RL_FRAGMENT_SHADER", + "typ": "i32", + "value": "35632", + "description": "GL_FRAGMENT_SHADER", + "custom": false + }, + { + "name": "RL_VERTEX_SHADER", + "typ": "i32", + "value": "35633", + "description": "GL_VERTEX_SHADER", + "custom": false + }, + { + "name": "RL_COMPUTE_SHADER", + "typ": "i32", + "value": "37305", + "description": "GL_COMPUTE_SHADER", + "custom": false + }, + { + "name": "RL_ZERO", + "typ": "i32", + "value": "0", + "description": "GL_ZERO", + "custom": false + }, + { + "name": "RL_ONE", + "typ": "i32", + "value": "1", + "description": "GL_ONE", + "custom": false + }, + { + "name": "RL_SRC_COLOR", + "typ": "i32", + "value": "768", + "description": "GL_SRC_COLOR", + "custom": false + }, + { + "name": "RL_ONE_MINUS_SRC_COLOR", + "typ": "i32", + "value": "769", + "description": "GL_ONE_MINUS_SRC_COLOR", + "custom": false + }, + { + "name": "RL_SRC_ALPHA", + "typ": "i32", + "value": "770", + "description": "GL_SRC_ALPHA", + "custom": false + }, + { + "name": "RL_ONE_MINUS_SRC_ALPHA", + "typ": "i32", + "value": "771", + "description": "GL_ONE_MINUS_SRC_ALPHA", + "custom": false + }, + { + "name": "RL_DST_ALPHA", + "typ": "i32", + "value": "772", + "description": "GL_DST_ALPHA", + "custom": false + }, + { + "name": "RL_ONE_MINUS_DST_ALPHA", + "typ": "i32", + "value": "773", + "description": "GL_ONE_MINUS_DST_ALPHA", + "custom": false + }, + { + "name": "RL_DST_COLOR", + "typ": "i32", + "value": "774", + "description": "GL_DST_COLOR", + "custom": false + }, + { + "name": "RL_ONE_MINUS_DST_COLOR", + "typ": "i32", + "value": "775", + "description": "GL_ONE_MINUS_DST_COLOR", + "custom": false + }, + { + "name": "RL_SRC_ALPHA_SATURATE", + "typ": "i32", + "value": "776", + "description": "GL_SRC_ALPHA_SATURATE", + "custom": false + }, + { + "name": "RL_CONSTANT_COLOR", + "typ": "i32", + "value": "32769", + "description": "GL_CONSTANT_COLOR", + "custom": false + }, + { + "name": "RL_ONE_MINUS_CONSTANT_COLOR", + "typ": "i32", + "value": "32770", + "description": "GL_ONE_MINUS_CONSTANT_COLOR", + "custom": false + }, + { + "name": "RL_CONSTANT_ALPHA", + "typ": "i32", + "value": "32771", + "description": "GL_CONSTANT_ALPHA", + "custom": false + }, + { + "name": "RL_ONE_MINUS_CONSTANT_ALPHA", + "typ": "i32", + "value": "32772", + "description": "GL_ONE_MINUS_CONSTANT_ALPHA", + "custom": false + }, + { + "name": "RL_FUNC_ADD", + "typ": "i32", + "value": "32774", + "description": "GL_FUNC_ADD", + "custom": false + }, + { + "name": "RL_MIN", + "typ": "i32", + "value": "32775", + "description": "GL_MIN", + "custom": false + }, + { + "name": "RL_MAX", + "typ": "i32", + "value": "32776", + "description": "GL_MAX", + "custom": false + }, + { + "name": "RL_FUNC_SUBTRACT", + "typ": "i32", + "value": "32778", + "description": "GL_FUNC_SUBTRACT", + "custom": false + }, + { + "name": "RL_FUNC_REVERSE_SUBTRACT", + "typ": "i32", + "value": "32779", + "description": "GL_FUNC_REVERSE_SUBTRACT", + "custom": false + }, + { + "name": "RL_BLEND_EQUATION", + "typ": "i32", + "value": "32777", + "description": "GL_BLEND_EQUATION", + "custom": false + }, + { + "name": "RL_BLEND_EQUATION_RGB", + "typ": "i32", + "value": "32777", + "description": "GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION)", + "custom": false + }, + { + "name": "RL_BLEND_EQUATION_ALPHA", + "typ": "i32", + "value": "34877", + "description": "GL_BLEND_EQUATION_ALPHA", + "custom": false + }, + { + "name": "RL_BLEND_DST_RGB", + "typ": "i32", + "value": "32968", + "description": "GL_BLEND_DST_RGB", + "custom": false + }, + { + "name": "RL_BLEND_SRC_RGB", + "typ": "i32", + "value": "32969", + "description": "GL_BLEND_SRC_RGB", + "custom": false + }, + { + "name": "RL_BLEND_DST_ALPHA", + "typ": "i32", + "value": "32970", + "description": "GL_BLEND_DST_ALPHA", + "custom": false + }, + { + "name": "RL_BLEND_SRC_ALPHA", + "typ": "i32", + "value": "32971", + "description": "GL_BLEND_SRC_ALPHA", + "custom": false + }, + { + "name": "RL_BLEND_COLOR", + "typ": "i32", + "value": "32773", + "description": "GL_BLEND_COLOR", + "custom": false + }, + { + "name": "RL_READ_FRAMEBUFFER", + "typ": "i32", + "value": "36008", + "description": "GL_READ_FRAMEBUFFER", + "custom": false + }, + { + "name": "RL_DRAW_FRAMEBUFFER", + "typ": "i32", + "value": "36009", + "description": "GL_DRAW_FRAMEBUFFER", + "custom": false + }, + { + "name": "GL_SHADING_LANGUAGE_VERSION", + "typ": "i32", + "value": "35724", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGB_S3TC_DXT1_EXT", + "typ": "i32", + "value": "33776", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", + "typ": "i32", + "value": "33777", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", + "typ": "i32", + "value": "33778", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", + "typ": "i32", + "value": "33779", + "description": "", + "custom": false + }, + { + "name": "GL_ETC1_RGB8_OES", + "typ": "i32", + "value": "36196", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGB8_ETC2", + "typ": "i32", + "value": "37492", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA8_ETC2_EAC", + "typ": "i32", + "value": "37496", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", + "typ": "i32", + "value": "35840", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", + "typ": "i32", + "value": "35842", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_ASTC_4x4_KHR", + "typ": "i32", + "value": "37808", + "description": "", + "custom": false + }, + { + "name": "GL_COMPRESSED_RGBA_ASTC_8x8_KHR", + "typ": "i32", + "value": "37815", + "description": "", + "custom": false + }, + { + "name": "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", + "typ": "i32", + "value": "34047", + "description": "", + "custom": false + }, + { + "name": "GL_TEXTURE_MAX_ANISOTROPY_EXT", + "typ": "i32", + "value": "34046", + "description": "", + "custom": false + }, + { + "name": "GL_UNSIGNED_SHORT_5_6_5", + "typ": "i32", + "value": "33635", + "description": "", + "custom": false + }, + { + "name": "GL_UNSIGNED_SHORT_5_5_5_1", + "typ": "i32", + "value": "32820", + "description": "", + "custom": false + }, + { + "name": "GL_UNSIGNED_SHORT_4_4_4_4", + "typ": "i32", + "value": "32819", + "description": "", + "custom": false + }, + { + "name": "GL_LUMINANCE", + "typ": "i32", + "value": "6409", + "description": "", + "custom": false + }, + { + "name": "GL_LUMINANCE_ALPHA", + "typ": "i32", + "value": "6410", + "description": "", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION", + "typ": "[]const u8", + "value": "\"vertexPosition\"", + "description": "Bound by default to shader location: 0", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD", + "typ": "[]const u8", + "value": "\"vertexTexCoord\"", + "description": "Bound by default to shader location: 1", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL", + "typ": "[]const u8", + "value": "\"vertexNormal\"", + "description": "Bound by default to shader location: 2", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR", + "typ": "[]const u8", + "value": "\"vertexColor\"", + "description": "Bound by default to shader location: 3", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT", + "typ": "[]const u8", + "value": "\"vertexTangent\"", + "description": "Bound by default to shader location: 4", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2", + "typ": "[]const u8", + "value": "\"vertexTexCoord2\"", + "description": "Bound by default to shader location: 5", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_MVP", + "typ": "[]const u8", + "value": "\"mvp\"", + "description": "model-view-projection matrix", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW", + "typ": "[]const u8", + "value": "\"matView\"", + "description": "view matrix", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION", + "typ": "[]const u8", + "value": "\"matProjection\"", + "description": "projection matrix", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL", + "typ": "[]const u8", + "value": "\"matModel\"", + "description": "model matrix", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL", + "typ": "[]const u8", + "value": "\"matNormal\"", + "description": "normal matrix (transpose(inverse(matModelView))", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR", + "typ": "[]const u8", + "value": "\"colDiffuse\"", + "description": "color diffuse (base tint color, multiplied by texture color)", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0", + "typ": "[]const u8", + "value": "\"texture0\"", + "description": "texture0 (texture slot active 0)", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1", + "typ": "[]const u8", + "value": "\"texture1\"", + "description": "texture1 (texture slot active 1)", + "custom": false + }, + { + "name": "RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2", + "typ": "[]const u8", + "value": "\"texture2\"", + "description": "texture2 (texture slot active 2)", + "custom": false + }, + { + "name": "EPSILON", + "typ": "f32", + "value": "0.000001", + "description": "", + "custom": false + } + ] +} \ No newline at end of file diff --git a/libs/raylib/build.zig b/libs/raylib/build.zig new file mode 100644 index 0000000..c38f6a9 --- /dev/null +++ b/libs/raylib/build.zig @@ -0,0 +1,144 @@ +const std = @import("std"); +const generate = @import("generate.zig"); + +pub fn build(b: *std.Build) !void { + const raylibSrc = "raylib/src/"; + + const target = b.standardTargetOptions(.{}); + + //--- parse raylib and generate JSONs for all signatures -------------------------------------- + const jsons = b.step("parse", "parse raylib headers and generate raylib jsons"); + const raylib_parser_build = b.addExecutable(.{ + .name = "raylib_parser", + .root_source_file = std.build.FileSource.relative("raylib_parser.zig"), + .target = target, + .optimize = .ReleaseFast, + }); + raylib_parser_build.addCSourceFile(.{ .file = .{ .path = "raylib/parser/raylib_parser.c" }, .flags = &.{} }); + raylib_parser_build.linkLibC(); + + //raylib + const raylib_H = b.addRunArtifact(raylib_parser_build); + raylib_H.addArgs(&.{ + "-i", raylibSrc ++ "raylib.h", + "-o", "raylib.json", + "-f", "JSON", + "-d", "RLAPI", + }); + jsons.dependOn(&raylib_H.step); + + //raymath + const raymath_H = b.addRunArtifact(raylib_parser_build); + raymath_H.addArgs(&.{ + "-i", raylibSrc ++ "raymath.h", + "-o", "raymath.json", + "-f", "JSON", + "-d", "RMAPI", + }); + jsons.dependOn(&raymath_H.step); + + //rlgl + const rlgl_H = b.addRunArtifact(raylib_parser_build); + rlgl_H.addArgs(&.{ + "-i", raylibSrc ++ "rlgl.h", + "-o", "rlgl.json", + "-f", "JSON", + "-d", "RLAPI", + }); + jsons.dependOn(&rlgl_H.step); + + //--- Generate intermediate ------------------------------------------------------------------- + const intermediate = b.step("intermediate", "generate intermediate representation of the results from 'zig build parse' (keep custom=true)"); + var intermediateZigStep = b.addRunArtifact(b.addExecutable(.{ + .name = "intermediate", + .root_source_file = std.build.FileSource.relative("intermediate.zig"), + .target = target, + })); + intermediate.dependOn(&intermediateZigStep.step); + + //--- Generate bindings ----------------------------------------------------------------------- + const bindings = b.step("bindings", "generate bindings in from bindings.json"); + var generateZigStep = b.addRunArtifact(b.addExecutable(.{ + .name = "generate", + .root_source_file = std.build.FileSource.relative("generate.zig"), + .target = target, + })); + const fmt = b.addFmt(.{ .paths = &.{generate.outputFile} }); + fmt.step.dependOn(&generateZigStep.step); + bindings.dependOn(&fmt.step); + + //--- just build raylib_parser.exe ------------------------------------------------------------ + const raylib_parser_install = b.step("raylib_parser", "build ./zig-out/bin/raylib_parser.exe"); + const generateBindings_install = b.addInstallArtifact(raylib_parser_build, .{}); + raylib_parser_install.dependOn(&generateBindings_install.step); +} + +// above: generate library +// below: linking (use as dependency) + +fn current_file() []const u8 { + return @src().file; +} + +const cwd = std.fs.path.dirname(current_file()).?; +const sep = std.fs.path.sep_str; +const dir_raylib = cwd ++ sep ++ "raylib/src"; + +const raylib_build = @import("raylib/src/build.zig"); + +fn linkThisLibrary(b: *std.Build, target: std.zig.CrossTarget, optimize: std.builtin.Mode) *std.build.LibExeObjStep { + const lib = b.addStaticLibrary(.{ .name = "raylib-zig", .target = target, .optimize = optimize }); + lib.addIncludePath(.{ .path = dir_raylib }); + lib.addIncludePath(.{ .path = cwd }); + lib.linkLibC(); + lib.addCSourceFile(.{ .file = .{ .path = cwd ++ sep ++ "marshal.c" }, .flags = &.{} }); + return lib; +} + +/// add this package to exe +pub fn addTo(b: *std.Build, exe: *std.build.Step.Compile, target: std.zig.CrossTarget, optimize: std.builtin.Mode, raylibOptions: raylib_build.Options) void { + exe.addAnonymousModule("raylib", .{ .source_file = .{ .path = cwd ++ sep ++ "raylib.zig" } }); + exe.addIncludePath(.{ .path = dir_raylib }); + exe.addIncludePath(.{ .path = cwd }); + const lib = linkThisLibrary(b, target, optimize); + const lib_raylib = raylib_build.addRaylib(b, target, optimize, raylibOptions); + exe.linkLibrary(lib_raylib); + exe.linkLibrary(lib); +} + +pub fn linkSystemDependencies(exe: *std.build.Step.Compile) void { + switch (exe.target.getOsTag()) { + .macos => { + exe.linkFramework("Foundation"); + exe.linkFramework("Cocoa"); + exe.linkFramework("OpenGL"); + exe.linkFramework("CoreAudio"); + exe.linkFramework("CoreVideo"); + exe.linkFramework("IOKit"); + }, + .linux => { + exe.addLibraryPath(.{ .path = "/usr/lib" }); + exe.addIncludePath(.{ .path = "/usr/include" }); + exe.linkSystemLibrary("GL"); + exe.linkSystemLibrary("rt"); + exe.linkSystemLibrary("dl"); + exe.linkSystemLibrary("m"); + exe.linkSystemLibrary("X11"); + }, + .freebsd, .openbsd, .netbsd, .dragonfly => { + exe.linkSystemLibrary("GL"); + exe.linkSystemLibrary("rt"); + exe.linkSystemLibrary("dl"); + exe.linkSystemLibrary("m"); + exe.linkSystemLibrary("X11"); + exe.linkSystemLibrary("Xrandr"); + exe.linkSystemLibrary("Xinerama"); + exe.linkSystemLibrary("Xi"); + exe.linkSystemLibrary("Xxf86vm"); + exe.linkSystemLibrary("Xcursor"); + }, + else => {}, + } + + exe.linkLibC(); +} diff --git a/libs/raylib/emscripten/entry.c b/libs/raylib/emscripten/entry.c new file mode 100644 index 0000000..245e9e5 --- /dev/null +++ b/libs/raylib/emscripten/entry.c @@ -0,0 +1,24 @@ +#include +#include + +#include "emscripten/emscripten.h" +#include "raylib.h" + +// Zig compiles C code with -fstack-protector-strong which requires the following two symbols +// which don't seem to be provided by the emscripten toolchain(?) +void *__stack_chk_guard = (void *)0xdeadbeef; +void __stack_chk_fail(void) +{ + exit(1); +} + + +// emsc_main() is the Zig entry function in main.zig +extern int emsc_main(void); + +extern void emsc_set_window_size(int width, int height); + +int main() +{ + return emsc_main(); +} diff --git a/libs/raylib/emscripten/minshell.html b/libs/raylib/emscripten/minshell.html new file mode 100644 index 0000000..5095ad8 --- /dev/null +++ b/libs/raylib/emscripten/minshell.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + demo + + + + + + + + + + + + + {{{ SCRIPT }}} + + + \ No newline at end of file diff --git a/libs/raylib/emscripten/shell.html b/libs/raylib/emscripten/shell.html new file mode 100644 index 0000000..3ab8c3a --- /dev/null +++ b/libs/raylib/emscripten/shell.html @@ -0,0 +1,328 @@ + + + + + + + raylib web game + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + {{{ SCRIPT }}} + + diff --git a/libs/raylib/generate.zig b/libs/raylib/generate.zig new file mode 100644 index 0000000..3071531 --- /dev/null +++ b/libs/raylib/generate.zig @@ -0,0 +1,529 @@ +const std = @import("std"); +const fs = std.fs; +const json = std.json; +const allocPrint = std.fmt.allocPrint; +const mapping = @import("type_mapping.zig"); +const intermediate = @import("intermediate.zig"); + +pub const outputFile = "raylib.zig"; +pub const injectFile = "inject.zig"; + +fn trim(s: []const u8) []const u8 { + return std.mem.trim(u8, s, &[_]u8{ ' ', '\t', '\n' }); +} + +pub fn main() !void { + std.log.info("generating raylib.zig ...", .{}); + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + defer { + if (gpa.deinit() == .leak) { + std.log.err("memory leak detected", .{}); + } + } + const allocator = gpa.allocator(); + var arena = std.heap.ArenaAllocator.init(allocator); + defer arena.deinit(); + + const bindingsData = try fs.cwd().readFileAlloc(arena.allocator(), intermediate.bindingsJSON, std.math.maxInt(usize)); + + const bindings = try json.parseFromSliceLeaky(mapping.Intermediate, arena.allocator(), bindingsData, .{ + .ignore_unknown_fields = true, + }); + + var file = try fs.cwd().createFile(outputFile, .{}); + defer file.close(); + + try file.writeAll("\n\n"); + + const inject = try Injections.load(arena.allocator()); + try writeInjections(arena.allocator(), &file, inject); + + try writeFunctions(arena.allocator(), &file, bindings, inject); + var h = try fs.cwd().createFile("marshal.h", .{}); + defer h.close(); + var c = try fs.cwd().createFile("marshal.c", .{}); + defer c.close(); + const raylib: mapping.CombinedRaylib = try mapping.CombinedRaylib.load(arena.allocator(), intermediate.jsonFiles); + try writeCFunctions(arena.allocator(), &h, &c, inject, raylib); + + try writeStructs(arena.allocator(), &file, bindings, inject); + try writeEnums(arena.allocator(), &file, bindings, inject); + try writeDefines(arena.allocator(), &file, bindings, inject); + + std.log.info("... done", .{}); +} + +const Injections = struct { + lines: []const []const u8, + symbols: []const []const u8, + + pub fn load(allocator: std.mem.Allocator) !@This() { + var injectZigLines = std.ArrayList([]const u8).init(allocator); + var symbols = std.ArrayList([]const u8).init(allocator); + + var file = try fs.cwd().openFile(injectFile, .{}); + var reader = file.reader(); + while (try reader.readUntilDelimiterOrEofAlloc(allocator, '\n', std.math.maxInt(usize))) |line| { + if (std.mem.indexOf(u8, line, "pub const ")) |startIndex| { + if (std.mem.indexOf(u8, line, " = extern struct {")) |endIndex| { + const s = line["pub const ".len + startIndex .. endIndex]; + try symbols.append(s); + std.log.debug("inject symbol: {s}", .{s}); + } else if (std.mem.indexOf(u8, line, " = packed struct(u32) {")) |endIndex| { + const s = line["pub const ".len + startIndex .. endIndex]; + try symbols.append(s); + std.log.debug("inject symbol: {s}", .{s}); + } + } + if (std.mem.indexOf(u8, line, "pub fn ")) |startIndex| { + if (std.mem.indexOf(u8, line, "(")) |endIndex| { + const s = line["pub fn ".len + startIndex .. endIndex]; + try symbols.append(s); + std.log.debug("inject symbol: {s}", .{s}); + } + } + try injectZigLines.append(line); + } + + return @This(){ + .lines = try injectZigLines.toOwnedSlice(), + .symbols = try symbols.toOwnedSlice(), + }; + } + + pub fn containsSymbol(self: @This(), name: []const u8) bool { + for (self.symbols) |s| { + if (eql(s, name)) return true; + } + return false; + } +}; + +fn writeFunctions( + allocator: std.mem.Allocator, + file: *fs.File, + bindings: mapping.Intermediate, + inject: Injections, +) !void { + var buf: [51200]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + for (bindings.functions) |func| { + if (inject.containsSymbol(func.name)) continue; + defer fba.reset(); + + //--- signature ------------------------- + const funcDescription: []const u8 = func.description orelse ""; + try file.writeAll( + try allocPrint( + allocator, + "\n/// {s}\npub fn {s} (\n", + .{ funcDescription, func.name }, + ), + ); + + for (func.params) |param| { + if (param.description) |description| { + try file.writeAll(try allocPrint( + allocator, + "/// {s}\n", + .{description}, + )); + } + try file.writeAll(try allocPrint( + allocator, + "{s}: {s},\n", + .{ param.name, param.typ }, + )); + } + + if (func.custom) { + try file.writeAll( + try allocPrint( + allocator, + ") {s} {{\n", + .{func.returnType}, + ), + ); + } else if (isPointer(func.returnType)) { + if (eql("u8", (stripType(func.returnType)))) { + try file.writeAll( + try allocPrint( + allocator, + ") [*:0]const {s} {{\n", + .{stripType(func.returnType)}, + ), + ); + } else { + try file.writeAll( + try allocPrint( + allocator, + ") {s} {{\n", + .{func.returnType}, + ), + ); + } + } else { + try file.writeAll( + try allocPrint( + allocator, + ") {s} {{\n", + .{func.returnType}, + ), + ); + } + const returnTypeIsVoid = eql(func.returnType, "void"); + + //--- body ------------------------------ + if (isPointer(func.returnType)) { + try file.writeAll(try allocPrint(allocator, "return @ptrCast({s},\n", .{func.returnType})); + } else if (isPrimitiveOrPointer(func.returnType)) { + try file.writeAll("return "); + } else if (!returnTypeIsVoid) { + try file.writeAll(try allocPrint(allocator, "var out: {s} = undefined;\n", .{func.returnType})); + } + try file.writeAll(try allocPrint(allocator, "raylib.m{s}(\n", .{func.name})); + + if (!isPrimitiveOrPointer(func.returnType)) { + if (bindings.containsStruct(stripType(func.returnType))) { + try file.writeAll(try allocPrint(allocator, "@ptrCast([*c]raylib.{s}, &out),\n", .{func.returnType})); + } else if (!returnTypeIsVoid) { + try file.writeAll(try allocPrint(allocator, "@ptrCast([*c]{s}, &out),\n", .{func.returnType})); + } + } + + for (func.params) |param| { + if (isFunctionPointer(param.typ)) { + try file.writeAll(try allocPrint(allocator, "@ptrCast({s}),\n", .{param.name})); + } else if (bindings.containsStruct(stripType(param.typ)) and isPointer(param.typ)) { + try file.writeAll(try allocPrint(allocator, "@intToPtr([*c]raylib.{s}, @ptrToInt({s})),\n", .{ stripType(param.typ), param.name })); + } else if (bindings.containsEnum(param.typ)) { + try file.writeAll(try allocPrint(allocator, "@enumToInt({s}),\n", .{param.name})); + } else if (bindings.containsStruct(stripType(param.typ))) { + try file.writeAll(try allocPrint(allocator, "@intToPtr([*c]raylib.{s}, @ptrToInt(&{s})),\n", .{ stripType(param.typ), param.name })); + } else if (isPointer(param.typ)) { + if (std.mem.endsWith(u8, param.typ, "anyopaque")) { + try file.writeAll(try allocPrint(allocator, "{s},\n", .{param.name})); + } else if (isConst(param.typ)) { + try file.writeAll(try allocPrint(allocator, "@intToPtr([*c]const {s}, @ptrToInt({s})),\n", .{ stripType(param.typ), param.name })); + } else { + try file.writeAll(try allocPrint(allocator, "@ptrCast([*c]{s}, {s}),\n", .{ stripType(param.typ), param.name })); + } + } else { + try file.writeAll(try allocPrint(allocator, "{s},\n", .{param.name})); + } + } + + if (isPointer(func.returnType)) { + try file.writeAll("),\n);\n"); + } else { + try file.writeAll(");\n"); + } + + if (!isPrimitiveOrPointer(func.returnType) and !returnTypeIsVoid) { + try file.writeAll("return out;\n"); + } + + try file.writeAll("}\n"); + } + + std.log.info("generated functions", .{}); +} + +/// write: RETURN NAME(PARAMS...) +/// or: void NAME(RETURN*, PARAMS...) +fn writeCSignature( + allocator: std.mem.Allocator, + file: *fs.File, + func: mapping.RaylibFunction, +) !void { + const returnType = func.returnType; + + //return directly + if (mapping.isPrimitiveOrPointer(returnType)) { + try file.writeAll(try allocPrint(allocator, "{s} m{s}(", .{ returnType, func.name })); + if (func.params == null or func.params.?.len == 0) { + try file.writeAll("void"); + } + } + //wrap return type and put as first function parameter + else { + try file.writeAll(try allocPrint(allocator, "void m{s}({s} *out", .{ func.name, returnType })); + if (func.params != null and func.params.?.len > 0) { + try file.writeAll(", "); + } + } + + if (func.params) |params| { + for (params, 0..) |param, i| { + const paramType = param.type; + if (mapping.isPrimitiveOrPointer(paramType) or isFunctionPointer(paramType)) { + try file.writeAll(try allocPrint(allocator, "{s} {s}", .{ paramType, param.name })); + } else { + try file.writeAll(try allocPrint(allocator, "{s} *{s}", .{ paramType, param.name })); + } + + if (i < params.len - 1) { + try file.writeAll(", "); + } + } + } + + try file.writeAll(")"); +} + +fn writeCFunctions( + allocator: std.mem.Allocator, + h: *fs.File, + c: *fs.File, + inject: Injections, + rl: mapping.CombinedRaylib, +) !void { + var hInject = try fs.cwd().openFile("inject.h", .{}); + defer hInject.close(); + try h.writeFileAll(hInject, .{}); + var cInject = try fs.cwd().openFile("inject.c", .{}); + defer cInject.close(); + try c.writeFileAll(cInject, .{}); + + for (rl.functions.values()) |func| { + if (inject.containsSymbol(func.name)) continue; + + //--- C-HEADER ----------------------------- + + try h.writeAll(try allocPrint(allocator, "// {s}\n", .{func.description})); + try writeCSignature(allocator, h, func); + try h.writeAll(";\n\n"); + + try writeCSignature(allocator, c, func); + try c.writeAll("\n{\n"); + + //--- C-IMPLEMENT ----------------------------- + + if (eql(func.returnType, "void")) { + try c.writeAll("\t"); + } else if (mapping.isPrimitiveOrPointer(func.returnType)) { + try c.writeAll("\treturn "); + } else { + try c.writeAll("\t*out = "); + } + + try c.writeAll( + try allocPrint( + allocator, + "{s}(", + .{func.name}, + ), + ); + + if (func.params) |params| { + for (params, 0..) |param, i| { + if (mapping.isPrimitiveOrPointer(param.type) or isFunctionPointer(param.type)) { + try c.writeAll( + try allocPrint( + allocator, + "{s}", + .{param.name}, + ), + ); + } else { + try c.writeAll( + try allocPrint( + allocator, + "*{s}", + .{param.name}, + ), + ); + } + + if (i < params.len - 1) { + try c.writeAll(", "); + } + } + } + + try c.writeAll(");\n}\n\n"); + } +} + +fn writeStructs( + allocator: std.mem.Allocator, + file: *fs.File, + bindings: mapping.Intermediate, + inject: Injections, +) !void { + var buf: [51200]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + for (bindings.structs) |s| { + if (inject.containsSymbol(s.name)) continue; + defer fba.reset(); + + try file.writeAll( + try allocPrint( + allocator, + "\n/// {?s}\npub const {s} = extern struct {{\n", + .{ s.description, s.name }, + ), + ); + + for (s.fields) |field| { + try file.writeAll(try allocPrint(allocator, "/// {?s}\n\t{s}: {s},\n", .{ + field.description, + field.name, + field.typ, + })); + } + + try file.writeAll("\n};\n"); + } + + std.log.info("generated structs", .{}); +} + +fn writeEnums( + allocator: std.mem.Allocator, + file: *fs.File, + bindings: mapping.Intermediate, + inject: Injections, +) !void { + var buf: [51200]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + for (bindings.enums) |e| { + if (inject.containsSymbol(e.name)) continue; + defer fba.reset(); + + try file.writeAll( + try allocPrint( + allocator, + "\n/// {?s}\npub const {s} = enum(i32) {{\n", + .{ e.description, e.name }, + ), + ); + + for (e.values) |value| { + try file.writeAll(try allocPrint(allocator, "/// {?s}\n{s} = {d},\n", .{ + value.description, + value.name, + value.value, + })); + } + + try file.writeAll("\n};\n"); + } + + std.log.info("generated enums", .{}); +} + +fn writeDefines( + allocator: std.mem.Allocator, + file: *fs.File, + bindings: mapping.Intermediate, + inject: Injections, +) !void { + var buf: [51200]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + for (bindings.defines) |d| { + if (inject.containsSymbol(d.name)) continue; + defer fba.reset(); + + try file.writeAll( + try allocPrint( + allocator, + "\n/// {?s}\npub const {s}: {s} = {s};\n", + .{ d.description, d.name, d.typ, d.value }, + ), + ); + } + + std.log.info("generated defines", .{}); +} + +fn writeInjections( + _: std.mem.Allocator, + file: *fs.File, + inject: Injections, +) !void { + var buf: [51200]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + for (inject.lines) |line| { + defer fba.reset(); + + try file.writeAll(try allocPrint(fba.allocator(), "{s}\n", .{line})); + } + + std.log.info("written inject.zig", .{}); +} + +fn eql(a: []const u8, b: []const u8) bool { + return std.mem.eql(u8, a, b); +} + +fn startsWith(haystack: []const u8, needle: []const u8) bool { + return std.mem.startsWith(u8, haystack, needle); +} + +fn endsWith(haystack: []const u8, needle: []const u8) bool { + return std.mem.endsWith(u8, haystack, needle); +} + +/// is pointer type +fn isPointer(z: []const u8) bool { + return pointerOffset(z) > 0; +} + +fn isFunctionPointer(z: []const u8) bool { + return std.mem.indexOf(u8, z, "fn(") != null or std.mem.endsWith(u8, z, "Callback"); +} + +fn pointerOffset(z: []const u8) usize { + if (startsWith(z, "*")) return 1; + if (startsWith(z, "?*")) return 2; + if (startsWith(z, "[*]")) return 3; + if (startsWith(z, "?[*]")) return 4; + if (startsWith(z, "[*c]")) return 4; + if (startsWith(z, "[*:0]")) return 5; + if (startsWith(z, "?[*:0]")) return 6; + + return 0; +} + +fn isConst(z: []const u8) bool { + return startsWith(z[pointerOffset(z)..], "const "); +} + +fn isVoid(z: []const u8) bool { + return eql(stripType(z), "void"); +} + +/// strips const and pointer annotations +/// *const TName -> TName +fn stripType(z: []const u8) []const u8 { + var name = z[pointerOffset(z)..]; + name = if (startsWith(name, "const ")) name["const ".len..] else name; + + return std.mem.trim(u8, name, " \t\n"); +} + +/// true if Zig type is primitive or a pointer to anything +/// this means we don't need to wrap it in a pointer +pub fn isPrimitiveOrPointer(z: []const u8) bool { + const primitiveTypes = std.ComptimeStringMap(void, .{ + // .{ "void", {} }, // zig void is zero sized while C void is >= 1 byte + .{ "bool", {} }, + .{ "u8", {} }, + .{ "i8", {} }, + .{ "i16", {} }, + .{ "u16", {} }, + .{ "i32", {} }, + .{ "u32", {} }, + .{ "i64", {} }, + .{ "u64", {} }, + .{ "f32", {} }, + .{ "f64", {} }, + }); + return primitiveTypes.has(stripType(z)) or pointerOffset(z) > 0; +} diff --git a/libs/raylib/gui_icons.h b/libs/raylib/gui_icons.h new file mode 100644 index 0000000..d8a9e45 --- /dev/null +++ b/libs/raylib/gui_icons.h @@ -0,0 +1,547 @@ +////////////////////////////////////////////////////////////////////////////////// +// // +// raygui Icons exporter v1.1 - Icons data exported as a values array // +// // +// more info and bugs-report: github.com/raysan5/raygui // +// feedback and support: ray[at]raylibtech.com // +// // +// Copyright (c) 2019-2021 raylib technologies (@raylibtech) // +// // +////////////////////////////////////////////////////////////////////////////////// + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +#define RAYGUI_ICON_SIZE 16 // Size of icons (squared) +#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons +#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id + +// Icons data is defined by bit array (every bit represents one pixel) +// Those arrays are stored as unsigned int data arrays, so every array +// element defines 32 pixels (bits) of information +// Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) +#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) + +//---------------------------------------------------------------------------------- +// Icons enumeration +//---------------------------------------------------------------------------------- +typedef enum { + RAYGUI_ICON_NONE = 0, + RAYGUI_ICON_FOLDER_FILE_OPEN = 1, + RAYGUI_ICON_FILE_SAVE_CLASSIC = 2, + RAYGUI_ICON_FOLDER_OPEN = 3, + RAYGUI_ICON_FOLDER_SAVE = 4, + RAYGUI_ICON_FILE_OPEN = 5, + RAYGUI_ICON_FILE_SAVE = 6, + RAYGUI_ICON_FILE_EXPORT = 7, + RAYGUI_ICON_FILE_NEW = 8, + RAYGUI_ICON_FILE_DELETE = 9, + RAYGUI_ICON_FILETYPE_TEXT = 10, + RAYGUI_ICON_FILETYPE_AUDIO = 11, + RAYGUI_ICON_FILETYPE_IMAGE = 12, + RAYGUI_ICON_FILETYPE_PLAY = 13, + RAYGUI_ICON_FILETYPE_VIDEO = 14, + RAYGUI_ICON_FILETYPE_INFO = 15, + RAYGUI_ICON_FILE_COPY = 16, + RAYGUI_ICON_FILE_CUT = 17, + RAYGUI_ICON_FILE_PASTE = 18, + RAYGUI_ICON_CURSOR_HAND = 19, + RAYGUI_ICON_CURSOR_POINTER = 20, + RAYGUI_ICON_CURSOR_CLASSIC = 21, + RAYGUI_ICON_PENCIL = 22, + RAYGUI_ICON_PENCIL_BIG = 23, + RAYGUI_ICON_BRUSH_CLASSIC = 24, + RAYGUI_ICON_BRUSH_PAINTER = 25, + RAYGUI_ICON_WATER_DROP = 26, + RAYGUI_ICON_COLOR_PICKER = 27, + RAYGUI_ICON_RUBBER = 28, + RAYGUI_ICON_COLOR_BUCKET = 29, + RAYGUI_ICON_TEXT_T = 30, + RAYGUI_ICON_TEXT_A = 31, + RAYGUI_ICON_SCALE = 32, + RAYGUI_ICON_RESIZE = 33, + RAYGUI_ICON_FILTER_POINT = 34, + RAYGUI_ICON_FILTER_BILINEAR = 35, + RAYGUI_ICON_CROP = 36, + RAYGUI_ICON_CROP_ALPHA = 37, + RAYGUI_ICON_SQUARE_TOGGLE = 38, + RAYGUI_ICON_SIMMETRY = 39, + RAYGUI_ICON_SIMMETRY_HORIZONTAL = 40, + RAYGUI_ICON_SIMMETRY_VERTICAL = 41, + RAYGUI_ICON_LENS = 42, + RAYGUI_ICON_LENS_BIG = 43, + RAYGUI_ICON_EYE_ON = 44, + RAYGUI_ICON_EYE_OFF = 45, + RAYGUI_ICON_FILTER_TOP = 46, + RAYGUI_ICON_FILTER = 47, + RAYGUI_ICON_TARGET_POINT = 48, + RAYGUI_ICON_TARGET_SMALL = 49, + RAYGUI_ICON_TARGET_BIG = 50, + RAYGUI_ICON_TARGET_MOVE = 51, + RAYGUI_ICON_CURSOR_MOVE = 52, + RAYGUI_ICON_CURSOR_SCALE = 53, + RAYGUI_ICON_CURSOR_SCALE_RIGHT = 54, + RAYGUI_ICON_CURSOR_SCALE_LEFT = 55, + RAYGUI_ICON_UNDO = 56, + RAYGUI_ICON_REDO = 57, + RAYGUI_ICON_REREDO = 58, + RAYGUI_ICON_MUTATE = 59, + RAYGUI_ICON_ROTATE = 60, + RAYGUI_ICON_REPEAT = 61, + RAYGUI_ICON_SHUFFLE = 62, + RAYGUI_ICON_EMPTYBOX = 63, + RAYGUI_ICON_TARGET = 64, + RAYGUI_ICON_TARGET_SMALL_FILL = 65, + RAYGUI_ICON_TARGET_BIG_FILL = 66, + RAYGUI_ICON_TARGET_MOVE_FILL = 67, + RAYGUI_ICON_CURSOR_MOVE_FILL = 68, + RAYGUI_ICON_CURSOR_SCALE_FILL = 69, + RAYGUI_ICON_CURSOR_SCALE_RIGHT_FILL = 70, + RAYGUI_ICON_CURSOR_SCALE_LEFT_FILL = 71, + RAYGUI_ICON_UNDO_FILL = 72, + RAYGUI_ICON_REDO_FILL = 73, + RAYGUI_ICON_REREDO_FILL = 74, + RAYGUI_ICON_MUTATE_FILL = 75, + RAYGUI_ICON_ROTATE_FILL = 76, + RAYGUI_ICON_REPEAT_FILL = 77, + RAYGUI_ICON_SHUFFLE_FILL = 78, + RAYGUI_ICON_EMPTYBOX_SMALL = 79, + RAYGUI_ICON_BOX = 80, + RAYGUI_ICON_BOX_TOP = 81, + RAYGUI_ICON_BOX_TOP_RIGHT = 82, + RAYGUI_ICON_BOX_RIGHT = 83, + RAYGUI_ICON_BOX_BOTTOM_RIGHT = 84, + RAYGUI_ICON_BOX_BOTTOM = 85, + RAYGUI_ICON_BOX_BOTTOM_LEFT = 86, + RAYGUI_ICON_BOX_LEFT = 87, + RAYGUI_ICON_BOX_TOP_LEFT = 88, + RAYGUI_ICON_BOX_CENTER = 89, + RAYGUI_ICON_BOX_CIRCLE_MASK = 90, + RAYGUI_ICON_POT = 91, + RAYGUI_ICON_ALPHA_MULTIPLY = 92, + RAYGUI_ICON_ALPHA_CLEAR = 93, + RAYGUI_ICON_DITHERING = 94, + RAYGUI_ICON_MIPMAPS = 95, + RAYGUI_ICON_BOX_GRID = 96, + RAYGUI_ICON_GRID = 97, + RAYGUI_ICON_BOX_CORNERS_SMALL = 98, + RAYGUI_ICON_BOX_CORNERS_BIG = 99, + RAYGUI_ICON_FOUR_BOXES = 100, + RAYGUI_ICON_GRID_FILL = 101, + RAYGUI_ICON_BOX_MULTISIZE = 102, + RAYGUI_ICON_ZOOM_SMALL = 103, + RAYGUI_ICON_ZOOM_MEDIUM = 104, + RAYGUI_ICON_ZOOM_BIG = 105, + RAYGUI_ICON_ZOOM_ALL = 106, + RAYGUI_ICON_ZOOM_CENTER = 107, + RAYGUI_ICON_BOX_DOTS_SMALL = 108, + RAYGUI_ICON_BOX_DOTS_BIG = 109, + RAYGUI_ICON_BOX_CONCENTRIC = 110, + RAYGUI_ICON_BOX_GRID_BIG = 111, + RAYGUI_ICON_OK_TICK = 112, + RAYGUI_ICON_CROSS = 113, + RAYGUI_ICON_ARROW_LEFT = 114, + RAYGUI_ICON_ARROW_RIGHT = 115, + RAYGUI_ICON_ARROW_BOTTOM = 116, + RAYGUI_ICON_ARROW_TOP = 117, + RAYGUI_ICON_ARROW_LEFT_FILL = 118, + RAYGUI_ICON_ARROW_RIGHT_FILL = 119, + RAYGUI_ICON_ARROW_BOTTOM_FILL = 120, + RAYGUI_ICON_ARROW_TOP_FILL = 121, + RAYGUI_ICON_AUDIO = 122, + RAYGUI_ICON_FX = 123, + RAYGUI_ICON_WAVE = 124, + RAYGUI_ICON_WAVE_SINUS = 125, + RAYGUI_ICON_WAVE_SQUARE = 126, + RAYGUI_ICON_WAVE_TRIANGULAR = 127, + RAYGUI_ICON_CROSS_SMALL = 128, + RAYGUI_ICON_PLAYER_PREVIOUS = 129, + RAYGUI_ICON_PLAYER_PLAY_BACK = 130, + RAYGUI_ICON_PLAYER_PLAY = 131, + RAYGUI_ICON_PLAYER_PAUSE = 132, + RAYGUI_ICON_PLAYER_STOP = 133, + RAYGUI_ICON_PLAYER_NEXT = 134, + RAYGUI_ICON_PLAYER_RECORD = 135, + RAYGUI_ICON_MAGNET = 136, + RAYGUI_ICON_LOCK_CLOSE = 137, + RAYGUI_ICON_LOCK_OPEN = 138, + RAYGUI_ICON_CLOCK = 139, + RAYGUI_ICON_TOOLS = 140, + RAYGUI_ICON_GEAR = 141, + RAYGUI_ICON_GEAR_BIG = 142, + RAYGUI_ICON_BIN = 143, + RAYGUI_ICON_HAND_POINTER = 144, + RAYGUI_ICON_LASER = 145, + RAYGUI_ICON_COIN = 146, + RAYGUI_ICON_EXPLOSION = 147, + RAYGUI_ICON_1UP = 148, + RAYGUI_ICON_PLAYER = 149, + RAYGUI_ICON_PLAYER_JUMP = 150, + RAYGUI_ICON_KEY = 151, + RAYGUI_ICON_DEMON = 152, + RAYGUI_ICON_TEXT_POPUP = 153, + RAYGUI_ICON_GEAR_EX = 154, + RAYGUI_ICON_CRACK = 155, + RAYGUI_ICON_CRACK_POINTS = 156, + RAYGUI_ICON_STAR = 157, + RAYGUI_ICON_DOOR = 158, + RAYGUI_ICON_EXIT = 159, + RAYGUI_ICON_MODE_2D = 160, + RAYGUI_ICON_MODE_3D = 161, + RAYGUI_ICON_CUBE = 162, + RAYGUI_ICON_CUBE_FACE_TOP = 163, + RAYGUI_ICON_CUBE_FACE_LEFT = 164, + RAYGUI_ICON_CUBE_FACE_FRONT = 165, + RAYGUI_ICON_CUBE_FACE_BOTTOM = 166, + RAYGUI_ICON_CUBE_FACE_RIGHT = 167, + RAYGUI_ICON_CUBE_FACE_BACK = 168, + RAYGUI_ICON_CAMERA = 169, + RAYGUI_ICON_SPECIAL = 170, + RAYGUI_ICON_LINK_NET = 171, + RAYGUI_ICON_LINK_BOXES = 172, + RAYGUI_ICON_LINK_MULTI = 173, + RAYGUI_ICON_LINK = 174, + RAYGUI_ICON_LINK_BROKE = 175, + RAYGUI_ICON_TEXT_NOTES = 176, + RAYGUI_ICON_NOTEBOOK = 177, + RAYGUI_ICON_SUITCASE = 178, + RAYGUI_ICON_SUITCASE_ZIP = 179, + RAYGUI_ICON_MAILBOX = 180, + RAYGUI_ICON_MONITOR = 181, + RAYGUI_ICON_PRINTER = 182, + RAYGUI_ICON_PHOTO_CAMERA = 183, + RAYGUI_ICON_PHOTO_CAMERA_FLASH = 184, + RAYGUI_ICON_HOUSE = 185, + RAYGUI_ICON_HEART = 186, + RAYGUI_ICON_CORNER = 187, + RAYGUI_ICON_VERTICAL_BARS = 188, + RAYGUI_ICON_VERTICAL_BARS_FILL = 189, + RAYGUI_ICON_LIFE_BARS = 190, + RAYGUI_ICON_INFO = 191, + RAYGUI_ICON_CROSSLINE = 192, + RAYGUI_ICON_HELP = 193, + RAYGUI_ICON_FILETYPE_ALPHA = 194, + RAYGUI_ICON_FILETYPE_HOME = 195, + RAYGUI_ICON_LAYERS_VISIBLE = 196, + RAYGUI_ICON_LAYERS = 197, + RAYGUI_ICON_WINDOW = 198, + RAYGUI_ICON_199 = 199, + RAYGUI_ICON_200 = 200, + RAYGUI_ICON_201 = 201, + RAYGUI_ICON_202 = 202, + RAYGUI_ICON_203 = 203, + RAYGUI_ICON_204 = 204, + RAYGUI_ICON_205 = 205, + RAYGUI_ICON_206 = 206, + RAYGUI_ICON_207 = 207, + RAYGUI_ICON_208 = 208, + RAYGUI_ICON_209 = 209, + RAYGUI_ICON_210 = 210, + RAYGUI_ICON_211 = 211, + RAYGUI_ICON_212 = 212, + RAYGUI_ICON_213 = 213, + RAYGUI_ICON_214 = 214, + RAYGUI_ICON_215 = 215, + RAYGUI_ICON_216 = 216, + RAYGUI_ICON_217 = 217, + RAYGUI_ICON_218 = 218, + RAYGUI_ICON_219 = 219, + RAYGUI_ICON_220 = 220, + RAYGUI_ICON_221 = 221, + RAYGUI_ICON_222 = 222, + RAYGUI_ICON_223 = 223, + RAYGUI_ICON_224 = 224, + RAYGUI_ICON_225 = 225, + RAYGUI_ICON_226 = 226, + RAYGUI_ICON_227 = 227, + RAYGUI_ICON_228 = 228, + RAYGUI_ICON_229 = 229, + RAYGUI_ICON_230 = 230, + RAYGUI_ICON_231 = 231, + RAYGUI_ICON_232 = 232, + RAYGUI_ICON_233 = 233, + RAYGUI_ICON_234 = 234, + RAYGUI_ICON_235 = 235, + RAYGUI_ICON_236 = 236, + RAYGUI_ICON_237 = 237, + RAYGUI_ICON_238 = 238, + RAYGUI_ICON_239 = 239, + RAYGUI_ICON_240 = 240, + RAYGUI_ICON_241 = 241, + RAYGUI_ICON_242 = 242, + RAYGUI_ICON_243 = 243, + RAYGUI_ICON_244 = 244, + RAYGUI_ICON_245 = 245, + RAYGUI_ICON_246 = 246, + RAYGUI_ICON_247 = 247, + RAYGUI_ICON_248 = 248, + RAYGUI_ICON_249 = 249, + RAYGUI_ICON_250 = 250, + RAYGUI_ICON_251 = 251, + RAYGUI_ICON_252 = 252, + RAYGUI_ICON_253 = 253, + RAYGUI_ICON_254 = 254, + RAYGUI_ICON_255 = 255, +} guiIconName; + +//---------------------------------------------------------------------------------- +// Icons data +//---------------------------------------------------------------------------------- +static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_NONE + 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // RAYGUI_ICON_FOLDER_FILE_OPEN + 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // RAYGUI_ICON_FILE_SAVE_CLASSIC + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // RAYGUI_ICON_FOLDER_OPEN + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // RAYGUI_ICON_FOLDER_SAVE + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // RAYGUI_ICON_FILE_OPEN + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // RAYGUI_ICON_FILE_SAVE + 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // RAYGUI_ICON_FILE_EXPORT + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // RAYGUI_ICON_FILE_NEW + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // RAYGUI_ICON_FILE_DELETE + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // RAYGUI_ICON_FILETYPE_TEXT + 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // RAYGUI_ICON_FILETYPE_AUDIO + 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // RAYGUI_ICON_FILETYPE_IMAGE + 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // RAYGUI_ICON_FILETYPE_PLAY + 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // RAYGUI_ICON_FILETYPE_VIDEO + 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // RAYGUI_ICON_FILETYPE_INFO + 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // RAYGUI_ICON_FILE_COPY + 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // RAYGUI_ICON_FILE_CUT + 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // RAYGUI_ICON_FILE_PASTE + 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_CURSOR_HAND + 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // RAYGUI_ICON_CURSOR_POINTER + 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // RAYGUI_ICON_CURSOR_CLASSIC + 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // RAYGUI_ICON_PENCIL + 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // RAYGUI_ICON_PENCIL_BIG + 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // RAYGUI_ICON_BRUSH_CLASSIC + 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // RAYGUI_ICON_BRUSH_PAINTER + 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // RAYGUI_ICON_WATER_DROP + 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // RAYGUI_ICON_COLOR_PICKER + 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // RAYGUI_ICON_RUBBER + 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // RAYGUI_ICON_COLOR_BUCKET + 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // RAYGUI_ICON_TEXT_T + 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // RAYGUI_ICON_TEXT_A + 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // RAYGUI_ICON_SCALE + 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // RAYGUI_ICON_RESIZE + 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // RAYGUI_ICON_FILTER_POINT + 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // RAYGUI_ICON_FILTER_BILINEAR + 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // RAYGUI_ICON_CROP + 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // RAYGUI_ICON_CROP_ALPHA + 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // RAYGUI_ICON_SQUARE_TOGGLE + 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // RAYGUI_ICON_SIMMETRY + 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // RAYGUI_ICON_SIMMETRY_HORIZONTAL + 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // RAYGUI_ICON_SIMMETRY_VERTICAL + 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // RAYGUI_ICON_LENS + 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // RAYGUI_ICON_LENS_BIG + 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // RAYGUI_ICON_EYE_ON + 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // RAYGUI_ICON_EYE_OFF + 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // RAYGUI_ICON_FILTER_TOP + 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // RAYGUI_ICON_FILTER + 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET_POINT + 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET_SMALL + 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET_BIG + 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // RAYGUI_ICON_TARGET_MOVE + 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // RAYGUI_ICON_CURSOR_MOVE + 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // RAYGUI_ICON_CURSOR_SCALE + 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // RAYGUI_ICON_CURSOR_SCALE_RIGHT + 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // RAYGUI_ICON_CURSOR_SCALE_LEFT + 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // RAYGUI_ICON_UNDO + 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // RAYGUI_ICON_REDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // RAYGUI_ICON_REREDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // RAYGUI_ICON_MUTATE + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // RAYGUI_ICON_ROTATE + 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // RAYGUI_ICON_REPEAT + 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // RAYGUI_ICON_SHUFFLE + 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // RAYGUI_ICON_EMPTYBOX + 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET + 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET_SMALL_FILL + 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // RAYGUI_ICON_TARGET_BIG_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // RAYGUI_ICON_TARGET_MOVE_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // RAYGUI_ICON_CURSOR_MOVE_FILL + 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // RAYGUI_ICON_CURSOR_SCALE_FILL + 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // RAYGUI_ICON_CURSOR_SCALE_RIGHT_FILL + 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // RAYGUI_ICON_CURSOR_SCALE_LEFT_FILL + 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // RAYGUI_ICON_UNDO_FILL + 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // RAYGUI_ICON_REDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // RAYGUI_ICON_REREDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // RAYGUI_ICON_MUTATE_FILL + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // RAYGUI_ICON_ROTATE_FILL + 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // RAYGUI_ICON_REPEAT_FILL + 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // RAYGUI_ICON_SHUFFLE_FILL + 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // RAYGUI_ICON_EMPTYBOX_SMALL + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX + 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_TOP + 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_TOP_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // RAYGUI_ICON_BOX_BOTTOM_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // RAYGUI_ICON_BOX_BOTTOM + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // RAYGUI_ICON_BOX_BOTTOM_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_LEFT + 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_TOP_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // RAYGUI_ICON_BOX_CENTER + 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // RAYGUI_ICON_BOX_CIRCLE_MASK + 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // RAYGUI_ICON_POT + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // RAYGUI_ICON_ALPHA_MULTIPLY + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // RAYGUI_ICON_ALPHA_CLEAR + 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // RAYGUI_ICON_DITHERING + 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // RAYGUI_ICON_MIPMAPS + 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // RAYGUI_ICON_BOX_GRID + 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // RAYGUI_ICON_GRID + 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // RAYGUI_ICON_BOX_CORNERS_SMALL + 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // RAYGUI_ICON_BOX_CORNERS_BIG + 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // RAYGUI_ICON_FOUR_BOXES + 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // RAYGUI_ICON_GRID_FILL + 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // RAYGUI_ICON_BOX_MULTISIZE + 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // RAYGUI_ICON_ZOOM_SMALL + 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // RAYGUI_ICON_ZOOM_MEDIUM + 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // RAYGUI_ICON_ZOOM_BIG + 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // RAYGUI_ICON_ZOOM_ALL + 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // RAYGUI_ICON_ZOOM_CENTER + 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // RAYGUI_ICON_BOX_DOTS_SMALL + 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // RAYGUI_ICON_BOX_DOTS_BIG + 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // RAYGUI_ICON_BOX_CONCENTRIC + 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // RAYGUI_ICON_BOX_GRID_BIG + 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // RAYGUI_ICON_OK_TICK + 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // RAYGUI_ICON_CROSS + 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // RAYGUI_ICON_ARROW_LEFT + 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // RAYGUI_ICON_ARROW_RIGHT + 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // RAYGUI_ICON_ARROW_BOTTOM + 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_ARROW_TOP + 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // RAYGUI_ICON_ARROW_LEFT_FILL + 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // RAYGUI_ICON_ARROW_RIGHT_FILL + 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // RAYGUI_ICON_ARROW_BOTTOM_FILL + 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_ARROW_TOP_FILL + 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // RAYGUI_ICON_AUDIO + 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // RAYGUI_ICON_FX + 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // RAYGUI_ICON_WAVE + 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // RAYGUI_ICON_WAVE_SINUS + 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // RAYGUI_ICON_WAVE_SQUARE + 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_WAVE_TRIANGULAR + 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // RAYGUI_ICON_CROSS_SMALL + 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // RAYGUI_ICON_PLAYER_PREVIOUS + 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // RAYGUI_ICON_PLAYER_PLAY_BACK + 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // RAYGUI_ICON_PLAYER_PLAY + 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // RAYGUI_ICON_PLAYER_PAUSE + 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // RAYGUI_ICON_PLAYER_STOP + 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // RAYGUI_ICON_PLAYER_NEXT + 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // RAYGUI_ICON_PLAYER_RECORD + 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // RAYGUI_ICON_MAGNET + 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // RAYGUI_ICON_LOCK_CLOSE + 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // RAYGUI_ICON_LOCK_OPEN + 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // RAYGUI_ICON_CLOCK + 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // RAYGUI_ICON_TOOLS + 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // RAYGUI_ICON_GEAR + 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // RAYGUI_ICON_GEAR_BIG + 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // RAYGUI_ICON_BIN + 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // RAYGUI_ICON_HAND_POINTER + 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // RAYGUI_ICON_LASER + 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // RAYGUI_ICON_COIN + 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // RAYGUI_ICON_EXPLOSION + 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // RAYGUI_ICON_1UP + 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // RAYGUI_ICON_PLAYER + 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // RAYGUI_ICON_PLAYER_JUMP + 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // RAYGUI_ICON_KEY + 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // RAYGUI_ICON_DEMON + 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // RAYGUI_ICON_TEXT_POPUP + 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // RAYGUI_ICON_GEAR_EX + 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // RAYGUI_ICON_CRACK + 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // RAYGUI_ICON_CRACK_POINTS + 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // RAYGUI_ICON_STAR + 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // RAYGUI_ICON_DOOR + 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // RAYGUI_ICON_EXIT + 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // RAYGUI_ICON_MODE_2D + 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // RAYGUI_ICON_MODE_3D + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // RAYGUI_ICON_CUBE + 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_TOP + 0x7fe00000, 0x50386030, 0x47fe483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_LEFT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_FRONT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3ff27fe2, 0x0ffe1ffa, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_BOTTOM + 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_RIGHT + 0x7fe00000, 0x7fe87ff0, 0x7ffe7fe4, 0x7fe27fe2, 0x7fe27fe2, 0x24127fe2, 0x0c06140a, 0x000007fe, // RAYGUI_ICON_CUBE_FACE_BACK + 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // RAYGUI_ICON_CAMERA + 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // RAYGUI_ICON_SPECIAL + 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // RAYGUI_ICON_LINK_NET + 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // RAYGUI_ICON_LINK_BOXES + 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // RAYGUI_ICON_LINK_MULTI + 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // RAYGUI_ICON_LINK + 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // RAYGUI_ICON_LINK_BROKE + 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // RAYGUI_ICON_TEXT_NOTES + 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // RAYGUI_ICON_NOTEBOOK + 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // RAYGUI_ICON_SUITCASE + 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // RAYGUI_ICON_SUITCASE_ZIP + 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // RAYGUI_ICON_MAILBOX + 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // RAYGUI_ICON_MONITOR + 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // RAYGUI_ICON_PRINTER + 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // RAYGUI_ICON_PHOTO_CAMERA + 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // RAYGUI_ICON_PHOTO_CAMERA_FLASH + 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // RAYGUI_ICON_HOUSE + 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // RAYGUI_ICON_HEART + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // RAYGUI_ICON_CORNER + 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // RAYGUI_ICON_VERTICAL_BARS + 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // RAYGUI_ICON_VERTICAL_BARS_FILL + 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // RAYGUI_ICON_LIFE_BARS + 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // RAYGUI_ICON_INFO + 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // RAYGUI_ICON_CROSSLINE + 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // RAYGUI_ICON_HELP + 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // RAYGUI_ICON_FILETYPE_ALPHA + 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // RAYGUI_ICON_FILETYPE_HOME + 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // RAYGUI_ICON_LAYERS_VISIBLE + 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // RAYGUI_ICON_LAYERS + 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // RAYGUI_ICON_WINDOW + 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // RAYGUI_ICON_199 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_200 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_201 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_202 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_203 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_204 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_205 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_206 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_207 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_208 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_209 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_210 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_211 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_212 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_213 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_214 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_215 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_216 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_217 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_218 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_219 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_220 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_221 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_222 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_223 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_224 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_225 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_226 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_227 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_228 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_229 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_230 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_231 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_232 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_233 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_234 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_235 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_236 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_237 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_238 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_239 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_240 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_241 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_242 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_243 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_244 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_245 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_246 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_247 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_248 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_249 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_250 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_251 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_252 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_253 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_254 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // RAYGUI_ICON_255 +}; diff --git a/libs/raylib/inject.c b/libs/raylib/inject.c new file mode 100644 index 0000000..45a38fa --- /dev/null +++ b/libs/raylib/inject.c @@ -0,0 +1,5 @@ +#define GRAPHICS_API_OPENGL_11 +// #define RLGL_IMPLEMENTATION +#include "raylib.h" +#include "rlgl.h" +#include "raymath.h" diff --git a/libs/raylib/inject.h b/libs/raylib/inject.h new file mode 100644 index 0000000..7249d2b --- /dev/null +++ b/libs/raylib/inject.h @@ -0,0 +1,12 @@ +//--- CORE ---------------------------------------------------------------------------------------- +#define GRAPHICS_API_OPENGL_11 +// #define RLGL_IMPLEMENTATION +#include "raylib.h" +#include "rlgl.h" +#include "raymath.h" + +// Enable vertex state pointer +void rlEnableStatePointer(int vertexAttribType, void *buffer); + +// Disable vertex state pointer +void rlDisableStatePointer(int vertexAttribType); \ No newline at end of file diff --git a/libs/raylib/inject.zig b/libs/raylib/inject.zig new file mode 100644 index 0000000..444436f --- /dev/null +++ b/libs/raylib/inject.zig @@ -0,0 +1,999 @@ +const std = @import("std"); +const raylib = @cImport({ + @cInclude("raylib.h"); + + @cDefine("GRAPHICS_API_OPENGL_11", {}); + // @cDefine("RLGL_IMPLEMENTATION", {}); + @cInclude("rlgl.h"); + + @cDefine("RAYMATH_IMPLEMENTATION", {}); + @cInclude("raymath.h"); + + @cInclude("marshal.h"); +}); + +//--- structs ------------------------------------------------------------------------------------- + +/// System/Window config flags +pub const ConfigFlags = packed struct(u32) { + FLAG_UNKNOWN_1: bool = false, // 0x0001 + /// Set to run program in fullscreen + FLAG_FULLSCREEN_MODE: bool = false, // 0x0002, + /// Set to allow resizable window + FLAG_WINDOW_RESIZABLE: bool = false, // 0x0004, + /// Set to disable window decoration (frame and buttons) + FLAG_WINDOW_UNDECORATED: bool = false, // 0x0008, + /// Set to allow transparent framebuffer + FLAG_WINDOW_TRANSPARENT: bool = false, // 0x0010, + /// Set to try enabling MSAA 4X + FLAG_MSAA_4X_HINT: bool = false, // 0x0020, + /// Set to try enabling V-Sync on GPU + FLAG_VSYNC_HINT: bool = false, // 0x0040, + /// Set to hide window + FLAG_WINDOW_HIDDEN: bool = false, // 0x0080, + /// Set to allow windows running while minimized + FLAG_WINDOW_ALWAYS_RUN: bool = false, // 0x0100, + /// Set to minimize window (iconify) + FLAG_WINDOW_MINIMIZED: bool = false, // 0x0200, + /// Set to maximize window (expanded to monitor) + FLAG_WINDOW_MAXIMIZED: bool = false, // 0x0400, + /// Set to window non focused + FLAG_WINDOW_UNFOCUSED: bool = false, // 0x0800, + /// Set to window always on top + FLAG_WINDOW_TOPMOST: bool = false, // 0x1000, + /// Set to support HighDPI + FLAG_WINDOW_HIGHDPI: bool = false, // 0x2000, + /// Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED + FLAG_WINDOW_MOUSE_PASSTHROUGH: bool = false, // 0x4000, + FLAG_UNKNOWN_2: bool = false, // 0x8000 + /// Set to try enabling interlaced video format (for V3D) + FLAG_INTERLACED_HINT: bool = false, // 0x10000 + FLAG_PADDING: u15 = 0, // 0xFFFE0000 +}; + +/// Transform, vectex transformation data +pub const Transform = extern struct { + /// Translation + translation: Vector3, + /// Rotation + rotation: Vector4, + /// Scale + scale: Vector3, +}; + +/// Matrix, 4x4 components, column major, OpenGL style, right handed +pub const Matrix = extern struct { + /// Matrix first row (4 components) [m0, m4, m8, m12] + m0: f32, + m4: f32, + m8: f32, + m12: f32, + /// Matrix second row (4 components) [m1, m5, m9, m13] + m1: f32, + m5: f32, + m9: f32, + m13: f32, + /// Matrix third row (4 components) [m2, m6, m10, m14] + m2: f32, + m6: f32, + m10: f32, + m14: f32, + /// Matrix fourth row (4 components) [m3, m7, m11, m15] + m3: f32, + m7: f32, + m11: f32, + m15: f32, + + pub fn zero() @This() { + return @This(){ + .m0 = 0, + .m1 = 0, + .m2 = 0, + .m3 = 0, + .m4 = 0, + .m5 = 0, + .m6 = 0, + .m7 = 0, + .m8 = 0, + .m9 = 0, + .m10 = 0, + .m11 = 0, + .m12 = 0, + .m13 = 0, + .m14 = 0, + .m15 = 0, + }; + } + + pub fn identity() @This() { + return MatrixIdentity(); + } +}; + +pub const Rectangle = extern struct { + x: f32 = 0, + y: f32 = 0, + width: f32 = 0, + height: f32 = 0, + + pub fn toI32(self: @This()) RectangleI { + return .{ + .x = @as(i32, @intFromFloat(self.x)), + .y = @as(i32, @intFromFloat(self.y)), + .width = @as(i32, @intFromFloat(self.width)), + .height = @as(i32, @intFromFloat(self.height)), + }; + } + + pub fn pos(self: @This()) Vector2 { + return .{ + .x = self.x, + .y = self.y, + }; + } + + pub fn size(self: @This()) Vector2 { + return .{ + .x = self.width, + .y = self.height, + }; + } + + pub fn topLeft(self: @This()) Vector2 { + return .{ + .x = self.x, + .y = self.y, + }; + } + + pub fn topCenter(self: @This()) Vector2 { + return .{ + .x = self.x + self.width / 2, + .y = self.y, + }; + } + + pub fn topRight(self: @This()) Vector2 { + return .{ + .x = self.x + self.width, + .y = self.y, + }; + } + + pub fn centerLeft(self: @This()) Vector2 { + return .{ + .x = self.x, + .y = self.y + self.height / 2, + }; + } + + pub fn center(self: @This()) Vector2 { + return .{ + .x = self.x + self.width / 2, + .y = self.y + self.height / 2, + }; + } + + pub fn centerRight(self: @This()) Vector2 { + return .{ + .x = self.x + self.width, + .y = self.y + self.height / 2, + }; + } + + pub fn bottomLeft(self: @This()) Vector2 { + return .{ + .x = self.x + 0, + .y = self.y + self.height, + }; + } + + pub fn bottomCenter(self: @This()) Vector2 { + return .{ + .x = self.x + self.width / 2, + .y = self.y + self.height, + }; + } + + pub fn bottomRight(self: @This()) Vector2 { + return .{ + .x = self.x + self.width, + .y = self.y + self.height, + }; + } + + pub fn area(self: @This()) f32 { + return self.width * self.height; + } + + pub fn include(self: @This(), other: @This()) @This() { + return self.includePoint(other.topLeft()).includePoint(other.bottomRight()); + } + + pub fn includePoint(self: @This(), point: Vector2) @This() { + const minX = @min(self.x, point.x); + const minY = @min(self.y, point.y); + const maxX = @max(self.x + self.width, point.x); + const maxY = @max(self.y + self.height, point.y); + + return .{ + .x = minX, + .y = minY, + .width = maxX - minX, + .height = maxY - minY, + }; + } +}; + +pub const RectangleI = extern struct { + x: i32 = 0, + y: i32 = 0, + width: i32 = 0, + height: i32 = 0, + + pub fn toF32(self: @This()) Rectangle { + return .{ + .x = @as(f32, @floatFromInt(self.x)), + .y = @as(f32, @floatFromInt(self.y)), + .width = @as(f32, @floatFromInt(self.width)), + .height = @as(f32, @floatFromInt(self.height)), + }; + } + + pub fn pos(self: @This()) Vector2i { + return .{ + .x = self.x, + .y = self.y, + }; + } +}; + +pub const Vector2 = extern struct { + x: f32 = 0, + y: f32 = 0, + + pub fn zero() @This() { + return .{ .x = 0, .y = 0 }; + } + + pub fn setZero(self: *@This()) void { + self.x = 0; + self.y = 0; + } + + pub fn one() @This() { + return @This(){ .x = 1, .y = 1 }; + } + + pub fn neg(self: @This()) @This() { + return @This(){ .x = -self.x, .y = -self.y }; + } + + pub fn length2(self: @This()) f32 { + var sum = self.x * self.x; + sum += self.y * self.y; + return sum; + } + + pub fn length(self: @This()) f32 { + return std.math.sqrt(self.length2()); + } + + pub fn distanceTo(self: @This(), other: @This()) f32 { + return self.sub(other).length(); + } + + pub fn distanceToSquared(self: @This(), other: @This()) f32 { + return self.sub(other).length2(); + } + + pub fn normalize(self: @This()) @This() { + const l = self.length(); + if (l == 0.0) return @This().zero(); + return self.scale(1.0 / l); + } + + pub fn scale(self: @This(), factor: f32) @This() { + return @This(){ + .x = self.x * factor, + .y = self.y * factor, + }; + } + + pub fn add(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x + other.x, + .y = self.y + other.y, + }; + } + + /// same as add but assign result directly to this + pub fn addSet(self: *@This(), other: @This()) void { + self.x += other.x; + self.y += other.y; + } + + pub fn sub(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x - other.x, + .y = self.y - other.y, + }; + } + + pub fn lerp(self: @This(), other: @This(), t: f32) @This() { + return self.scale(1 - t).add(other.scale(t)); + } + + pub fn randomInUnitCircle(rng: std.rand.Random) @This() { + return randomOnUnitCircle(rng).scale(randomF32(rng, 0, 1)); + } + + pub fn randomOnUnitCircle(rng: std.rand.Random) @This() { + return (Vector2{ .x = 1 }).rotate(randomF32(rng, -PI, PI)); + } + + pub fn clampX(self: @This(), minX: f32, maxX: f32) @This() { + return .{ + .x = std.math.clamp(self.x, minX, maxX), + .y = self.y, + }; + } + pub fn clampY(self: @This(), minY: f32, maxY: f32) @This() { + return .{ + .x = self.x, + .y = std.math.clamp(self.y, minY, maxY), + }; + } + + pub fn int(self: @This()) Vector2i { + return .{ .x = @as(i32, @intFromFloat(self.x)), .y = @as(i32, @intFromFloat(self.y)) }; + } + + /// Cross product + pub fn cross(self: @This(), other: @This()) f32 { + return self.x * other.y - self.y * other.x; + } + + /// Dot product. + pub fn dot(self: @This(), other: @This()) f32 { + return self.x * other.x + self.y * other.y; + } + + pub fn rotate(self: @This(), a: f32) @This() { + return Vector2Rotate(self, a); + } + + pub fn fromAngle(a: f32) @This() { + return Vector2Rotate(.{ .x = 1 }, a); + } + + pub fn angle(this: @This()) f32 { + const zeroRotation: Vector2 = .{ .x = 1, .y = 0 }; + if (this.x == zeroRotation.x and this.y == zeroRotation.y) return 0; + + const c = zeroRotation.cross(this); + const d = zeroRotation.dot(this); + return std.math.atan2(f32, c, d); + } + + pub fn xy0(self: @This()) Vector3 { + return .{ .x = self.x, .y = self.y }; + } + + pub fn x0z(self: @This()) Vector3 { + return .{ .x = self.x, .z = self.y }; + } + + pub fn set(self: @This(), setter: struct { x: ?f32 = null, y: ?f32 = null }) Vector2 { + var copy = self; + if (setter.x) |x| copy.x = x; + if (setter.y) |y| copy.y = y; + return copy; + } +}; + +pub const Vector2i = extern struct { + x: i32 = 0, + y: i32 = 0, + + pub fn float(self: @This()) Vector2 { + return .{ .x = @as(f32, @floatFromInt(self.x)), .y = @as(f32, @floatFromInt(self.y)) }; + } +}; + +pub const Vector3 = extern struct { + x: f32 = 0, + y: f32 = 0, + z: f32 = 0, + + pub fn new(x: f32, y: f32, z: f32) @This() { + return @This(){ .x = x, .y = y, .z = z }; + } + + pub fn zero() @This() { + return @This(){ .x = 0, .y = 0, .z = 0 }; + } + + pub fn one() @This() { + return @This(){ .x = 1, .y = 1, .z = 1 }; + } + + pub fn length2(self: @This()) f32 { + var sum = self.x * self.x; + sum += self.y * self.y; + sum += self.z * self.z; + return sum; + } + + pub fn length(self: @This()) f32 { + return std.math.sqrt(self.length2()); + } + + pub fn normalize(self: @This()) @This() { + const l = self.length(); + if (l == 0.0) return @This().zero(); + return self.scale(1.0 / l); + } + + pub fn scale(self: @This(), factor: f32) @This() { + return @This(){ + .x = self.x * factor, + .y = self.y * factor, + .z = self.z * factor, + }; + } + + pub fn add(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x + other.x, + .y = self.y + other.y, + .z = self.z + other.z, + }; + } + pub fn sub(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x - other.x, + .y = self.y - other.y, + .z = self.z - other.z, + }; + } + + pub fn neg(this: @This()) @This() { + return .{ + .x = -this.x, + .y = -this.y, + .z = -this.z, + }; + } + + pub fn lerp(self: @This(), other: @This(), t: f32) @This() { + return self.scale(1 - t).add(other.scale(t)); + } + + pub fn forward() @This() { + return @This().new(0, 0, 1); + } + + pub fn rotate(self: @This(), quaternion: Vector4) @This() { + return Vector3RotateByQuaternion(self, quaternion); + } + + pub fn angleBetween(self: @This(), other: Vector3) f32 { + return Vector3Angle(self, other); + // return std.math.acos(self.dot(other) / (self.length() * other.length())); + } + + /// Dot product. + pub fn dot(self: @This(), other: @This()) f32 { + return self.x * other.x + self.y * other.y + self.z * other.z; + } + + pub fn xy(self: @This()) Vector2 { + return .{ .x = self.x, .y = self.y }; + } + + pub fn set(self: @This(), setter: struct { x: ?f32 = null, y: ?f32 = null, z: ?f32 = null }) Vector3 { + var copy = self; + if (setter.x) |x| copy.x = x; + if (setter.y) |y| copy.y = y; + if (setter.z) |z| copy.z = z; + return copy; + } +}; + +pub const Vector4 = extern struct { + x: f32 = 0, + y: f32 = 0, + z: f32 = 0, + w: f32 = 0, + + pub fn zero() @This() { + return @This(){ .x = 0, .y = 0, .z = 0 }; + } + + pub fn one() @This() { + return @This(){ .x = 1, .y = 1, .z = 1 }; + } + + pub fn length2(self: @This()) f32 { + var sum = self.x * self.x; + sum += self.y * self.y; + sum += self.z * self.z; + sum += self.w * self.w; + return sum; + } + + pub fn length(self: @This()) f32 { + return std.math.sqrt(self.length2()); + } + + pub fn normalize(self: @This()) @This() { + const l = self.length(); + if (l == 0.0) return @This().zero(); + return self.scale(1.0 / l); + } + + pub fn scale(self: @This(), factor: f32) @This() { + return @This(){ + .x = self.x * factor, + .y = self.y * factor, + .z = self.z * factor, + .w = self.w * factor, + }; + } + + pub fn add(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x + other.x, + .y = self.y + other.y, + .z = self.z + other.z, + .w = self.w + other.w, + }; + } + pub fn sub(self: @This(), other: @This()) @This() { + return @This(){ + .x = self.x - other.x, + .y = self.y - other.y, + .z = self.z - other.z, + .w = self.w - other.w, + }; + } + + pub fn lerp(self: @This(), other: @This(), t: f32) @This() { + return self.scale(1 - t).add(other.scale(t)); + } + + pub fn toColor(self: @This()) Color { + return .{ + .r = @as(u8, @intFromFloat(std.math.clamp(self.x * 255, 0, 255))), + .g = @as(u8, @intFromFloat(std.math.clamp(self.y * 255, 0, 255))), + .b = @as(u8, @intFromFloat(std.math.clamp(self.z * 255, 0, 255))), + .a = @as(u8, @intFromFloat(std.math.clamp(self.w * 255, 0, 255))), + }; + } + + pub fn fromAngleAxis(axis: Vector3, angle: f32) @This() { + return QuaternionFromAxisAngle(axis, angle); + } +}; + +/// Color type, RGBA (32bit) +pub const Color = extern struct { + r: u8 = 0, + g: u8 = 0, + b: u8 = 0, + a: u8 = 255, + + pub const ColorChangeConfig = struct { + r: ?u8 = null, + g: ?u8 = null, + b: ?u8 = null, + a: ?u8 = null, + }; + + pub fn set(self: @This(), c: ColorChangeConfig) Color { + return .{ + .r = if (c.r) |_r| _r else self.r, + .g = if (c.g) |_g| _g else self.g, + .b = if (c.b) |_b| _b else self.b, + .a = if (c.a) |_a| _a else self.a, + }; + } + + pub fn lerp(self: @This(), other: @This(), t: f32) @This() { + return self.toVector4().lerp(other.toVector4(), t).toColor(); + } + + pub fn lerpA(self: @This(), targetAlpha: u8, t: f32) @This() { + var copy = self; + const a = @as(f32, @floatFromInt(self.a)); + copy.a = @as(u8, @intFromFloat(a * (1 - t) + @as(f32, @floatFromInt(targetAlpha)) * t)); + return copy; + } + + pub fn toVector4(self: @This()) Vector4 { + return .{ + .x = @as(f32, @floatFromInt(self.r)) / 255.0, + .y = @as(f32, @floatFromInt(self.g)) / 255.0, + .z = @as(f32, @floatFromInt(self.b)) / 255.0, + .w = @as(f32, @floatFromInt(self.a)) / 255.0, + }; + } + + /// negate color (keep alpha) + pub fn neg(self: @This()) @This() { + return .{ + .r = 255 - self.r, + .g = 255 - self.g, + .b = 255 - self.b, + .a = self.a, + }; + } +}; + +/// Camera2D, defines position/orientation in 2d space +pub const Camera2D = extern struct { + /// Camera offset (displacement from target) + offset: Vector2 = Vector2.zero(), + /// Camera target (rotation and zoom origin) + target: Vector2, + /// Camera rotation in degrees + rotation: f32 = 0, + /// Camera zoom (scaling), should be 1.0f by default + zoom: f32 = 1, +}; + +pub const MATERIAL_MAP_DIFFUSE = @as(usize, @intCast(@intFromEnum(MaterialMapIndex.MATERIAL_MAP_ALBEDO))); +pub const MATERIAL_MAP_SPECULAR = @as(usize, @intCast(@intFromEnum(MaterialMapIndex.MATERIAL_MAP_METALNESS))); + +//--- callbacks ----------------------------------------------------------------------------------- + +/// Logging: Redirect trace log messages +pub const TraceLogCallback = *const fn (logLevel: c_int, text: [*c]const u8, args: ?*anyopaque) void; + +/// FileIO: Load binary data +pub const LoadFileDataCallback = *const fn (fileName: [*c]const u8, bytesRead: [*c]c_uint) [*c]u8; + +/// FileIO: Save binary data +pub const SaveFileDataCallback = *const fn (fileName: [*c]const u8, data: ?*anyopaque, bytesToWrite: c_uint) bool; + +/// FileIO: Load text data +pub const LoadFileTextCallback = *const fn (fileName: [*c]const u8) [*c]u8; + +/// FileIO: Save text data +pub const SaveFileTextCallback = *const fn (fileName: [*c]const u8, text: [*c]const u8) bool; + +/// Audio Loading and Playing Functions (Module: audio) +pub const AudioCallback = *const fn (bufferData: ?*anyopaque, frames: u32) void; + +//--- utils --------------------------------------------------------------------------------------- + +// Camera global state context data [56 bytes] +pub const CameraData = extern struct { + /// Current camera mode + mode: u32, + /// Camera distance from position to target + targetDistance: f32, + /// Player eyes position from ground (in meters) + playerEyesPosition: f32, + /// Camera angle in plane XZ + angle: Vector2, + /// Previous mouse position + previousMousePosition: Vector2, + + // Camera movement control keys + + /// Move controls (CAMERA_FIRST_PERSON) + moveControl: i32[6], + /// Smooth zoom control key + smoothZoomControl: i32, + /// Alternative control key + altControl: i32, + /// Pan view control key + panControl: i32, +}; + +pub fn randomF32(rng: std.rand.Random, min: f32, max: f32) f32 { + return rng.float(f32) * (max - min) + min; +} + +//--- functions ----------------------------------------------------------------------------------- + +/// Setup init configuration flags (view FLAGS) +pub fn SetConfigFlags( + flags: ConfigFlags, +) void { + raylib.SetConfigFlags(@as(c_uint, @bitCast(flags))); +} + +/// Load file data as byte array (read) +pub fn LoadFileData(fileName: [*:0]const u8) ![]const u8 { + var bytesRead: u32 = undefined; + const data = raylib.LoadFileData( + @as([*c]const u8, @ptrFromInt(@intFromPtr(fileName))), + @as([*c]c_int, @ptrCast(&bytesRead)), + ); + + if (data == null) return error.FileNotFound; + + return data[0..bytesRead]; +} + +/// Unload file data allocated by LoadFileData() +pub fn UnloadFileData( + data: []const u8, +) void { + raylib.UnloadFileData( + @as([*c]u8, @ptrFromInt(@intFromPtr(data.ptr))), + ); +} + +/// Set custom trace log +pub fn SetTraceLogCallback( + _: TraceLogCallback, +) void { + @panic("use log.zig for that"); +} + +/// Generate image font atlas using chars info +pub fn GenImageFontAtlas( + chars: [*]const GlyphInfo, + recs: [*]const [*]const Rectangle, + glyphCount: i32, + fontSize: i32, + padding: i32, + packMethod: i32, +) Image { + var out: Image = undefined; + mGenImageFontAtlas( + @as([*c]raylib.Image, @ptrCast(&out)), + @as([*c]raylib.GlyphInfo, @ptrCast(chars)), + @as([*c][*c]raylib.Rectangle, @ptrCast(recs)), + glyphCount, + fontSize, + padding, + packMethod, + ); + return out; +} +export fn mGenImageFontAtlas( + out: [*c]raylib.Image, + chars: [*c]raylib.GlyphInfo, + recs: [*c][*c]raylib.Rectangle, + glyphCount: i32, + fontSize: i32, + padding: i32, + packMethod: i32, +) void { + out.* = raylib.GenImageFontAtlas( + chars, + recs, + glyphCount, + fontSize, + padding, + packMethod, + ); +} + +/// Get native window handle +pub fn GetWindowHandle() ?*anyopaque { + return raylib.GetWindowHandle(); +} + +/// Internal memory allocator +pub fn MemAlloc( + size: i32, +) ?*anyopaque { + return raylib.MemAlloc(size); +} + +/// Internal memory reallocator +pub fn MemRealloc( + ptr: ?*anyopaque, + size: i32, +) ?*anyopaque { + return raylib.MemRealloc(ptr, size); +} + +/// Internal memory free +pub fn MemFree( + ptr: ?*anyopaque, +) void { + raylib.MemFree(ptr); +} + +/// Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) +pub fn TraceLog( + logLevel: i32, + text: [*:0]const u8, +) void { + raylib.TraceLog(logLevel, text); +} + +/// Text formatting with variables (sprintf() style) +/// caller owns memory +pub fn TextFormat(allocator: std.mem.Allocator, comptime fmt: []const u8, args: anytype) std.fmt.AllocPrintError![*:0]const u8 { + return (try std.fmt.allocPrintZ(allocator, fmt, args)).ptr; +} + +/// Split text into multiple strings +pub fn TextSplit(allocator: std.mem.Allocator, text: []const u8, delimiter: []const u8, count: i32) ![]const []const u8 { + var list = std.ArrayList([]const u8).init(allocator); + var it = std.mem.split(u8, text, delimiter); + var i = 0; + var n = 0; + while (it.next()) |slice| : (i += 1) { + if (i >= count) { + break; + } + + try list.append(slice); + n += slice.len; + } + if (n < text.len) { + try list.append(text[n..]); + } + return list.toOwnedSlice(); +} + +/// Join text strings with delimiter +pub fn TextJoin(allocator: std.mem.Allocator, textList: []const []const u8, delimiter: []const u8) ![:0]const u8 { + return (try std.mem.joinZ(allocator, delimiter, textList)).ptr; +} + +/// Append text at specific position and move cursor! +pub fn TextAppend(allocator: std.mem.Allocator, text: []const u8, append: []const u8, position: i32) std.fmt.AllocPrintError![:0]u8 { + return (try std.fmt.allocPrintZ(allocator, "{s}{s}{s}", .{ + text[0..position], + append, + text[position..], + })).ptr; +} + +//--- RLGL ---------------------------------------------------------------------------------------- + +pub const DEG2RAD: f32 = PI / 180; +pub const RAD2DEG: f32 = 180 / PI; + +/// +pub const rlglData = extern struct { + /// Current render batch + currentBatch: ?*rlRenderBatch, + /// Default internal render batch + defaultBatch: rlRenderBatch, + + pub const State = extern struct { + /// Current active render batch vertex counter (generic, used for all batches) + vertexCounter: i32, + /// Current active texture coordinate X (added on glVertex*()) + texcoordx: f32, + /// Current active texture coordinate Y (added on glVertex*()) + texcoordy: f32, + /// Current active normal X (added on glVertex*()) + normalx: f32, + /// Current active normal Y (added on glVertex*()) + normaly: f32, + /// Current active normal Z (added on glVertex*()) + normalz: f32, + /// Current active color R (added on glVertex*()) + colorr: u8, + /// Current active color G (added on glVertex*()) + colorg: u8, + /// Current active color B (added on glVertex*()) + colorb: u8, + /// Current active color A (added on glVertex*()) + colora: u8, + /// Current matrix mode + currentMatrixMode: i32, + /// Current matrix pointer + currentMatrix: ?*Matrix, + /// Default modelview matrix + modelview: Matrix, + /// Default projection matrix + projection: Matrix, + /// Transform matrix to be used with rlTranslate, rlRotate, rlScale + transform: Matrix, + /// Require transform matrix application to current draw-call vertex (if required) + transformRequired: bool, + /// Matrix stack for push/pop + stack: [RL_MAX_MATRIX_STACK_SIZE]Matrix, + /// Matrix stack counter + stackCounter: i32, + /// Default texture used on shapes/poly drawing (required by shader) + defaultTextureId: u32, + /// Active texture ids to be enabled on batch drawing (0 active by default) + activeTextureId: [RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS]u32, + /// Default vertex shader id (used by default shader program) + defaultVShaderId: u32, + /// Default fragment shader id (used by default shader program) + defaultFShaderId: u32, + /// Default shader program id, supports vertex color and diffuse texture + defaultShaderId: u32, + /// Default shader locations pointer to be used on rendering + defaultShaderLocs: [*]i32, + /// Current shader id to be used on rendering (by default, defaultShaderId) + currentShaderId: u32, + /// Current shader locations pointer to be used on rendering (by default, defaultShaderLocs) + currentShaderLocs: [*]i32, + /// Stereo rendering flag + stereoRender: bool, + /// VR stereo rendering eyes projection matrices + projectionStereo: [2]Matrix, + /// VR stereo rendering eyes view offset matrices + viewOffsetStereo: [2]Matrix, + /// Blending mode active + currentBlendMode: i32, + /// Blending source factor + glBlendSrcFactor: i32, + /// Blending destination factor + glBlendDstFactor: i32, + /// Blending equation + glBlendEquation: i32, + /// Current framebuffer width + framebufferWidth: i32, + /// Current framebuffer height + framebufferHeight: i32, + }; + + pub const ExtSupported = extern struct { + /// VAO support (OpenGL ES2 could not support VAO extension) (GL_ARB_vertex_array_object) + vao: bool, + /// Instancing supported (GL_ANGLE_instanced_arrays, GL_EXT_draw_instanced + GL_EXT_instanced_arrays) + instancing: bool, + /// NPOT textures full support (GL_ARB_texture_non_power_of_two, GL_OES_texture_npot) + texNPOT: bool, + /// Depth textures supported (GL_ARB_depth_texture, GL_WEBGL_depth_texture, GL_OES_depth_texture) + texDepth: bool, + /// float textures support (32 bit per channel) (GL_OES_texture_float) + texFloat32: bool, + /// DDS texture compression support (GL_EXT_texture_compression_s3tc, GL_WEBGL_compressed_texture_s3tc, GL_WEBKIT_WEBGL_compressed_texture_s3tc) + texCompDXT: bool, + /// ETC1 texture compression support (GL_OES_compressed_ETC1_RGB8_texture, GL_WEBGL_compressed_texture_etc1) + texCompETC1: bool, + /// ETC2/EAC texture compression support (GL_ARB_ES3_compatibility) + texCompETC2: bool, + /// PVR texture compression support (GL_IMG_texture_compression_pvrtc) + texCompPVRT: bool, + /// ASTC texture compression support (GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr) + texCompASTC: bool, + /// Clamp mirror wrap mode supported (GL_EXT_texture_mirror_clamp) + texMirrorClamp: bool, + /// Anisotropic texture filtering support (GL_EXT_texture_filter_anisotropic) + texAnisoFilter: bool, + /// Compute shaders support (GL_ARB_compute_shader) + computeShader: bool, + /// Shader storage buffer object support (GL_ARB_shader_storage_buffer_object) + ssbo: bool, + /// Maximum anisotropy level supported (minimum is 2.0f) + maxAnisotropyLevel: f32, + /// Maximum bits for depth component + maxDepthBits: i32, + }; +}; + +/// Enable attribute state pointer +pub fn rlEnableStatePointer( + vertexAttribType: i32, + buffer: *anyopaque, +) void { + raylib.rlEnableStatePointer( + vertexAttribType, + @as([*c]anyopaque, @ptrCast(buffer)), + ); +} + +/// Disable attribute state pointer +pub fn rlDisableStatePointer( + vertexAttribType: i32, +) void { + raylib.rlDisableStatePointer( + vertexAttribType, + ); +} + +/// Get the last gamepad button pressed +pub fn GetGamepadButtonPressed() ?GamepadButton { + if (raylib.GetGamepadButtonPressed() == -1) return null; + + return @as(GamepadButton, @enumFromInt(raylib.GetGamepadButtonPressed())); +} diff --git a/libs/raylib/intermediate.zig b/libs/raylib/intermediate.zig new file mode 100644 index 0000000..6a9d5db --- /dev/null +++ b/libs/raylib/intermediate.zig @@ -0,0 +1,48 @@ +const std = @import("std"); +const fs = std.fs; +const mapping = @import("type_mapping.zig"); +const json = std.json; + +pub const jsonFiles: []const []const u8 = &.{ + "raylib.json", + "rlgl.json", + "raymath.json", +}; +pub const bindingsJSON = "bindings.json"; + +pub fn main() !void { + std.log.info("updating bindings.json ...", .{}); + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + defer { + if (gpa.deinit() == .leak) { + std.log.err("memory leak detected", .{}); + } + } + const allocator = gpa.allocator(); + var arena = std.heap.ArenaAllocator.init(allocator); + defer arena.deinit(); + + const raylib: mapping.CombinedRaylib = try mapping.CombinedRaylib.load(arena.allocator(), jsonFiles); + + var bindings: mapping.Intermediate = mapping.Intermediate.loadCustoms(arena.allocator(), bindingsJSON) catch |err| Catch: { + std.log.warn("could not open {s}: {?}\n", .{ bindingsJSON, err }); + break :Catch mapping.Intermediate{ + .enums = &[_]mapping.Enum{}, + .structs = &[_]mapping.Struct{}, + .functions = &[_]mapping.Function{}, + .defines = &[_]mapping.Define{}, + }; + }; + + try bindings.addNonCustom(arena.allocator(), raylib); + + var file = try fs.cwd().createFile(bindingsJSON, .{}); + defer file.close(); + + try json.stringify(bindings, .{ + .emit_null_optional_fields = false, + .whitespace = .indent_2, + }, file.writer()); + + std.log.info("... done", .{}); +} diff --git a/libs/raylib/logo.png b/libs/raylib/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0464dc6224b3005487686cc6633ce62fa3b49e0 GIT binary patch literal 1087 zcmeAS@N?(olHy`uVBq!ia0vp^{}~t<893O0teV{mHUTNd;vjb?hIQv;UNSH+|MYZm z45^s&_O7F!k|TpdphDc?z1KhXz1!PoUZ}o#))7fxmtC`#{o23Xgi*`)|CCUZvmgIH z{aC|LHv&pXz7-`aDwaI+t^ zPdpdR|Dfn{-Nxm69K%hIR@dFBVwi6H8Jb*8-_H7Py*XyhA&c_z%e|iyXO-@sDepE* z<