From 97f501240b3b23fa338ae589d484e914270f13eb Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Sat, 10 Feb 2024 19:13:34 +0200 Subject: [PATCH] initial commit --- .gitignore | 58 + .gitmodules | 3 + LICENSE | 21 + README.md | 116 + bindings.json | 17829 +++++++++++++++++++++++++++++++++++++ build.zig | 144 + emscripten/entry.c | 24 + emscripten/minshell.html | 96 + emscripten/shell.html | 328 + generate.zig | 529 ++ gui_icons.h | 547 ++ inject.c | 5 + inject.h | 12 + inject.zig | 999 +++ intermediate.zig | 48 + logo.png | Bin 0 -> 1087 bytes marshal.c | 4035 +++++++++ marshal.h | 2429 +++++ raylib | 1 + raylib.json | 11660 ++++++++++++++++++++++++ raylib.zig | 12171 +++++++++++++++++++++++++ raylib_parser.zig | 6 + raymath.json | 1954 ++++ rlgl.json | 3928 ++++++++ type_mapping.zig | 691 ++ 25 files changed, 57634 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bindings.json create mode 100644 build.zig create mode 100644 emscripten/entry.c create mode 100644 emscripten/minshell.html create mode 100644 emscripten/shell.html create mode 100644 generate.zig create mode 100644 gui_icons.h create mode 100644 inject.c create mode 100644 inject.h create mode 100644 inject.zig create mode 100644 intermediate.zig create mode 100644 logo.png create mode 100644 marshal.c create mode 100644 marshal.h create mode 160000 raylib create mode 100644 raylib.json create mode 100644 raylib.zig create mode 100644 raylib_parser.zig create mode 100644 raymath.json create mode 100644 rlgl.json create mode 100644 type_mapping.zig diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5bd9db1 --- /dev/null +++ b/.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/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fccf93a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "raylib"] + path = raylib + url = git@github.com:raysan5/raylib.git diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a3d23c1 --- /dev/null +++ b/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/README.md b/README.md new file mode 100644 index 0000000..c0c8870 --- /dev/null +++ b/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/bindings.json b/bindings.json new file mode 100644 index 0000000..3b3a395 --- /dev/null +++ b/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/build.zig b/build.zig new file mode 100644 index 0000000..c38f6a9 --- /dev/null +++ b/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/emscripten/entry.c b/emscripten/entry.c new file mode 100644 index 0000000..245e9e5 --- /dev/null +++ b/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/emscripten/minshell.html b/emscripten/minshell.html new file mode 100644 index 0000000..5095ad8 --- /dev/null +++ b/emscripten/minshell.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + demo + + + + + + + + + + + + + {{{ SCRIPT }}} + + + \ No newline at end of file diff --git a/emscripten/shell.html b/emscripten/shell.html new file mode 100644 index 0000000..3ab8c3a --- /dev/null +++ b/emscripten/shell.html @@ -0,0 +1,328 @@ + + + + + + + raylib web game + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + {{{ SCRIPT }}} + + diff --git a/generate.zig b/generate.zig new file mode 100644 index 0000000..3071531 --- /dev/null +++ b/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/gui_icons.h b/gui_icons.h new file mode 100644 index 0000000..d8a9e45 --- /dev/null +++ b/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/inject.c b/inject.c new file mode 100644 index 0000000..45a38fa --- /dev/null +++ b/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/inject.h b/inject.h new file mode 100644 index 0000000..7249d2b --- /dev/null +++ b/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/inject.zig b/inject.zig new file mode 100644 index 0000000..444436f --- /dev/null +++ b/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/intermediate.zig b/intermediate.zig new file mode 100644 index 0000000..6a9d5db --- /dev/null +++ b/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/logo.png b/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<