diff options
| author | Indrajith K L | 2025-11-03 19:43:05 +0530 |
|---|---|---|
| committer | Indrajith K L | 2025-11-03 19:43:05 +0530 |
| commit | 9bb3957d5fd3f176e8bd888c53a65c54f62cfab6 (patch) | |
| tree | 96aac66d2ef569a3352ee2b634d4e26ef64a25ba /tools/ReiLua_API.lua | |
| parent | 02d6be119fa130121a04799e81aff203472b6233 (diff) | |
| download | reilua-enhanced-9bb3957d5fd3f176e8bd888c53a65c54f62cfab6.tar.gz reilua-enhanced-9bb3957d5fd3f176e8bd888c53a65c54f62cfab6.tar.bz2 reilua-enhanced-9bb3957d5fd3f176e8bd888c53a65c54f62cfab6.zip | |
cleaned up root folder, organized files into docs/scripts/tools dirs
Diffstat (limited to 'tools/ReiLua_API.lua')
| -rw-r--r-- | tools/ReiLua_API.lua | 9054 |
1 files changed, 9054 insertions, 0 deletions
diff --git a/tools/ReiLua_API.lua b/tools/ReiLua_API.lua new file mode 100644 index 0000000..1ba8b71 --- /dev/null +++ b/tools/ReiLua_API.lua @@ -0,0 +1,9054 @@ +-- Put this file into your project folder to provide annotations when using Lua language server. + +RL={} + +-- Functions. + +---This function will be called after window has been initialized. Should be used as the main init point. +function RL.init() end +---This function will be called every frame during execution. It will get time duration from last frame on argument 'delta' +---@param delta number +function RL.update( delta ) end +---This function will be called every frame after update and it should have all rendering related functions. Note: Engine will call Raylib functions 'BeginDrawing()' before this function call and 'EndDrawing()' after it. You can still use RL.BeginDrawing() and RL.EndDrawing() manually from anywhere. +function RL.draw() end +---This function will be called on events input. Content of event table is determined by event type. +---@param event table +function RL.event( event ) end +---This function can be used for custom log message handling. +---@param logLevel integer +---@param message string +function RL.log( logLevel, message ) end +---This function will be called on program close. Cleanup could be done here. +function RL.exit() end +---This function will be called before InitWindow. Note! Only place where you should call InitWindow manually. Doesn't have OpenGL context at this point. +function RL.config() end + +-- Defines - System/Window config flags + +---Set to try enabling V-Sync on GPU +RL.FLAG_VSYNC_HINT=64 +---Set to run program in fullscreen +RL.FLAG_FULLSCREEN_MODE=2 +---Set to allow resizable window +RL.FLAG_WINDOW_RESIZABLE=4 +---Set to disable window decoration (frame and buttons) +RL.FLAG_WINDOW_UNDECORATED=8 +---Set to hide window +RL.FLAG_WINDOW_HIDDEN=128 +---Set to minimize window (iconify) +RL.FLAG_WINDOW_MINIMIZED=512 +---Set to maximize window (expanded to monitor) +RL.FLAG_WINDOW_MAXIMIZED=1024 +---Set to window non focused +RL.FLAG_WINDOW_UNFOCUSED=2048 +---Set to window always on top +RL.FLAG_WINDOW_TOPMOST=4096 +---Set to allow windows running while minimized +RL.FLAG_WINDOW_ALWAYS_RUN=256 +---Set to allow transparent framebuffer +RL.FLAG_WINDOW_TRANSPARENT=16 +---Set to support HighDPI +RL.FLAG_WINDOW_HIGHDPI=8192 +---Set to support mouse passthrough, only supported when FLAG_WINDOW_UNDECORATED +RL.FLAG_WINDOW_MOUSE_PASSTHROUGH=16384 +---Set to try enabling MSAA 4X +RL.FLAG_MSAA_4X_HINT=32 +---Set to try enabling interlaced video format (for V3D) +RL.FLAG_INTERLACED_HINT=65536 + +-- Defines - Trace log level + +---Display all logs +RL.LOG_ALL=0 +---Trace logging, intended for internal use only +RL.LOG_TRACE=1 +---Debug logging, used for internal debugging, it should be disabled on release builds +RL.LOG_DEBUG=2 +---Info logging, used for program execution info +RL.LOG_INFO=3 +---Warning logging, used on recoverable failures +RL.LOG_WARNING=4 +---Error logging, used on unrecoverable failures +RL.LOG_ERROR=5 +---Fatal logging, used to abort program: exit(EXIT_FAILURE) +RL.LOG_FATAL=6 +---Disable logging +RL.LOG_NONE=7 + +-- Defines - Keyboard keys (US keyboard layout) + +---Key: NULL, used for no key pressed +RL.KEY_NULL=0 +---Key: ' +RL.KEY_APOSTROPHE=39 +---Key: , +RL.KEY_COMMA=44 +---Key: - +RL.KEY_MINUS=45 +---Key: . +RL.KEY_PERIOD=46 +---Key: / +RL.KEY_SLASH=47 +---Key: 0 +RL.KEY_ZERO=48 +---Key: 1 +RL.KEY_ONE=49 +---Key: 2 +RL.KEY_TWO=50 +---Key: 3 +RL.KEY_THREE=51 +---Key: 4 +RL.KEY_FOUR=52 +---Key: 5 +RL.KEY_FIVE=53 +---Key: 6 +RL.KEY_SIX=54 +---Key: 7 +RL.KEY_SEVEN=55 +---Key: 8 +RL.KEY_EIGHT=56 +---Key: 9 +RL.KEY_NINE=57 +---Key: ; +RL.KEY_SEMICOLON=59 +---Key: = +RL.KEY_EQUAL=61 +---Key: A | a +RL.KEY_A=65 +---Key: B | b +RL.KEY_B=66 +---Key: C | c +RL.KEY_C=67 +---Key: D | d +RL.KEY_D=68 +---Key: E | e +RL.KEY_E=69 +---Key: F | f +RL.KEY_F=70 +---Key: G | g +RL.KEY_G=71 +---Key: H | h +RL.KEY_H=72 +---Key: I | i +RL.KEY_I=73 +---Key: J | j +RL.KEY_J=74 +---Key: K | k +RL.KEY_K=75 +---Key: L | l +RL.KEY_L=76 +---Key: M | m +RL.KEY_M=77 +---Key: N | n +RL.KEY_N=78 +---Key: O | o +RL.KEY_O=79 +---Key: P | p +RL.KEY_P=80 +---Key: Q | q +RL.KEY_Q=81 +---Key: R | r +RL.KEY_R=82 +---Key: S | s +RL.KEY_S=83 +---Key: T | t +RL.KEY_T=84 +---Key: U | u +RL.KEY_U=85 +---Key: V | v +RL.KEY_V=86 +---Key: W | w +RL.KEY_W=87 +---Key: X | x +RL.KEY_X=88 +---Key: Y | y +RL.KEY_Y=89 +---Key: Z | z +RL.KEY_Z=90 +---Key: [ +RL.KEY_LEFT_BRACKET=91 +---Key: '\' +RL.KEY_BACKSLASH=92 +---Key: ] +RL.KEY_RIGHT_BRACKET=93 +---Key: ` +RL.KEY_GRAVE=96 +---Key: Space +RL.KEY_SPACE=32 +---Key: Esc +RL.KEY_ESCAPE=256 +---Key: Enter +RL.KEY_ENTER=257 +---Key: Tab +RL.KEY_TAB=258 +---Key: Backspace +RL.KEY_BACKSPACE=259 +---Key: Ins +RL.KEY_INSERT=260 +---Key: Del +RL.KEY_DELETE=261 +---Key: Cursor right +RL.KEY_RIGHT=262 +---Key: Cursor left +RL.KEY_LEFT=263 +---Key: Cursor down +RL.KEY_DOWN=264 +---Key: Cursor up +RL.KEY_UP=265 +---Key: Page up +RL.KEY_PAGE_UP=266 +---Key: Page down +RL.KEY_PAGE_DOWN=267 +---Key: Home +RL.KEY_HOME=268 +---Key: End +RL.KEY_END=269 +---Key: Caps lock +RL.KEY_CAPS_LOCK=280 +---Key: Scroll down +RL.KEY_SCROLL_LOCK=281 +---Key: Num lock +RL.KEY_NUM_LOCK=282 +---Key: Print screen +RL.KEY_PRINT_SCREEN=283 +---Key: Pause +RL.KEY_PAUSE=284 +---Key: F1 +RL.KEY_F1=290 +---Key: F2 +RL.KEY_F2=291 +---Key: F3 +RL.KEY_F3=292 +---Key: F4 +RL.KEY_F4=293 +---Key: F5 +RL.KEY_F5=294 +---Key: F6 +RL.KEY_F6=295 +---Key: F7 +RL.KEY_F7=296 +---Key: F8 +RL.KEY_F8=297 +---Key: F9 +RL.KEY_F9=298 +---Key: F10 +RL.KEY_F10=299 +---Key: F11 +RL.KEY_F11=300 +---Key: F12 +RL.KEY_F12=301 +---Key: Shift left +RL.KEY_LEFT_SHIFT=340 +---Key: Control left +RL.KEY_LEFT_CONTROL=341 +---Key: Alt left +RL.KEY_LEFT_ALT=342 +---Key: Super left +RL.KEY_LEFT_SUPER=343 +---Key: Shift right +RL.KEY_RIGHT_SHIFT=344 +---Key: Control right +RL.KEY_RIGHT_CONTROL=345 +---Key: Alt right +RL.KEY_RIGHT_ALT=346 +---Key: Super right +RL.KEY_RIGHT_SUPER=347 +---Key: KB menu +RL.KEY_KB_MENU=348 +---Key: Keypad 0 +RL.KEY_KP_0=320 +---Key: Keypad 1 +RL.KEY_KP_1=321 +---Key: Keypad 2 +RL.KEY_KP_2=322 +---Key: Keypad 3 +RL.KEY_KP_3=323 +---Key: Keypad 4 +RL.KEY_KP_4=324 +---Key: Keypad 5 +RL.KEY_KP_5=325 +---Key: Keypad 6 +RL.KEY_KP_6=326 +---Key: Keypad 7 +RL.KEY_KP_7=327 +---Key: Keypad 8 +RL.KEY_KP_8=328 +---Key: Keypad 9 +RL.KEY_KP_9=329 +---Key: Keypad . +RL.KEY_KP_DECIMAL=330 +---Key: Keypad / +RL.KEY_KP_DIVIDE=331 +---Key: Keypad * +RL.KEY_KP_MULTIPLY=332 +---Key: Keypad - +RL.KEY_KP_SUBTRACT=333 +---Key: Keypad + +RL.KEY_KP_ADD=334 +---Key: Keypad Enter +RL.KEY_KP_ENTER=335 +---Key: Keypad = +RL.KEY_KP_EQUAL=336 +---Key: Android back button +RL.KEY_BACK=4 +---Key: Android menu button +RL.KEY_MENU=5 +---Key: Android volume up button +RL.KEY_VOLUME_UP=24 +---Key: Android volume down button +RL.KEY_VOLUME_DOWN=25 + +-- Defines - Mouse buttons + +---Mouse button left +RL.MOUSE_BUTTON_LEFT=0 +---Mouse button right +RL.MOUSE_BUTTON_RIGHT=1 +---Mouse button middle (pressed wheel) +RL.MOUSE_BUTTON_MIDDLE=2 +---Mouse button side (advanced mouse device) +RL.MOUSE_BUTTON_SIDE=3 +---Mouse button extra (advanced mouse device) +RL.MOUSE_BUTTON_EXTRA=4 +---Mouse button forward (advanced mouse device) +RL.MOUSE_BUTTON_FORWARD=5 +---Mouse button back (advanced mouse device) +RL.MOUSE_BUTTON_BACK=6 + +-- Defines - Mouse cursor + +---Default pointer shape +RL.MOUSE_CURSOR_DEFAULT=0 +---Arrow shape +RL.MOUSE_CURSOR_ARROW=1 +---Text writing cursor shape +RL.MOUSE_CURSOR_IBEAM=2 +---Cross shape +RL.MOUSE_CURSOR_CROSSHAIR=3 +---Pointing hand cursor +RL.MOUSE_CURSOR_POINTING_HAND=4 +---Horizontal resize/move arrow shape +RL.MOUSE_CURSOR_RESIZE_EW=5 +---Vertical resize/move arrow shape +RL.MOUSE_CURSOR_RESIZE_NS=6 +---Top-left to bottom-right diagonal resize/move arrow shape +RL.MOUSE_CURSOR_RESIZE_NWSE=7 +---The top-right to bottom-left diagonal resize/move arrow shape +RL.MOUSE_CURSOR_RESIZE_NESW=8 +---The omnidirectional resize/move cursor shape +RL.MOUSE_CURSOR_RESIZE_ALL=9 +---The operation-not-allowed shape +RL.MOUSE_CURSOR_NOT_ALLOWED=10 + +-- Defines - Gamepad buttons + +---Unknown button, just for error checking +RL.GAMEPAD_BUTTON_UNKNOWN=0 +---Gamepad left DPAD up button +RL.GAMEPAD_BUTTON_LEFT_FACE_UP=1 +---Gamepad left DPAD right button +RL.GAMEPAD_BUTTON_LEFT_FACE_RIGHT=2 +---Gamepad left DPAD down button +RL.GAMEPAD_BUTTON_LEFT_FACE_DOWN=3 +---Gamepad left DPAD left button +RL.GAMEPAD_BUTTON_LEFT_FACE_LEFT=4 +---Gamepad right button up (i.e. PS3: Triangle, Xbox: Y) +RL.GAMEPAD_BUTTON_RIGHT_FACE_UP=5 +---Gamepad right button right (i.e. PS3: Square, Xbox: X) +RL.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT=6 +---Gamepad right button down (i.e. PS3: Cross, Xbox: A) +RL.GAMEPAD_BUTTON_RIGHT_FACE_DOWN=7 +---Gamepad right button left (i.e. PS3: Circle, Xbox: B) +RL.GAMEPAD_BUTTON_RIGHT_FACE_LEFT=8 +---Gamepad top/back trigger left (first), it could be a trailing button +RL.GAMEPAD_BUTTON_LEFT_TRIGGER_1=9 +---Gamepad top/back trigger left (second), it could be a trailing button +RL.GAMEPAD_BUTTON_LEFT_TRIGGER_2=10 +---Gamepad top/back trigger right (one), it could be a trailing button +RL.GAMEPAD_BUTTON_RIGHT_TRIGGER_1=11 +---Gamepad top/back trigger right (second), it could be a trailing button +RL.GAMEPAD_BUTTON_RIGHT_TRIGGER_2=12 +---Gamepad center buttons, left one (i.e. PS3: Select) +RL.GAMEPAD_BUTTON_MIDDLE_LEFT=13 +---Gamepad center buttons, middle one (i.e. PS3: PS, Xbox: XBOX) +RL.GAMEPAD_BUTTON_MIDDLE=14 +---Gamepad center buttons, right one (i.e. PS3: Start) +RL.GAMEPAD_BUTTON_MIDDLE_RIGHT=15 +---Gamepad joystick pressed button left +RL.GAMEPAD_BUTTON_LEFT_THUMB=16 +---Gamepad joystick pressed button right +RL.GAMEPAD_BUTTON_RIGHT_THUMB=17 + +-- Defines - Gamepad axis + +---Gamepad left stick X axis +RL.GAMEPAD_AXIS_LEFT_X=0 +---Gamepad left stick Y axis +RL.GAMEPAD_AXIS_LEFT_Y=1 +---Gamepad right stick X axis +RL.GAMEPAD_AXIS_RIGHT_X=2 +---Gamepad right stick Y axis +RL.GAMEPAD_AXIS_RIGHT_Y=3 +---Gamepad back trigger left, pressure level: [1..-1] +RL.GAMEPAD_AXIS_LEFT_TRIGGER=4 +---Gamepad back trigger right, pressure level: [1..-1] +RL.GAMEPAD_AXIS_RIGHT_TRIGGER=5 + +-- Defines - Material map index + +---Albedo material (same as: MATERIAL_MAP_DIFFUSE) +RL.MATERIAL_MAP_ALBEDO=0 +---Metalness material (same as: MATERIAL_MAP_SPECULAR) +RL.MATERIAL_MAP_METALNESS=1 +---Normal material +RL.MATERIAL_MAP_NORMAL=2 +---Roughness material +RL.MATERIAL_MAP_ROUGHNESS=3 +---Ambient occlusion material +RL.MATERIAL_MAP_OCCLUSION=4 +---Emission material +RL.MATERIAL_MAP_EMISSION=5 +---Heightmap material +RL.MATERIAL_MAP_HEIGHT=6 +---Cubemap material (NOTE: Uses GL_TEXTURE_CUBE_MAP) +RL.MATERIAL_MAP_CUBEMAP=7 +---Irradiance material (NOTE: Uses GL_TEXTURE_CUBE_MAP) +RL.MATERIAL_MAP_IRRADIANCE=8 +---Prefilter material (NOTE: Uses GL_TEXTURE_CUBE_MAP) +RL.MATERIAL_MAP_PREFILTER=9 +---Brdf material +RL.MATERIAL_MAP_BRDF=10 +---Diffuce material (same as: MATERIAL_MAP_ALBEDO) +RL.MATERIAL_MAP_DIFFUSE=0 +---Specular material (same as: MATERIAL_MAP_METALNESS) +RL.MATERIAL_MAP_SPECULAR=1 + +-- Defines - Shader location index + +---Shader location: vertex attribute: position +RL.SHADER_LOC_VERTEX_POSITION=0 +---Shader location: vertex attribute: texcoord01 +RL.SHADER_LOC_VERTEX_TEXCOORD01=1 +---Shader location: vertex attribute: texcoord02 +RL.SHADER_LOC_VERTEX_TEXCOORD02=2 +---Shader location: vertex attribute: normal +RL.SHADER_LOC_VERTEX_NORMAL=3 +---Shader location: vertex attribute: tangent +RL.SHADER_LOC_VERTEX_TANGENT=4 +---Shader location: vertex attribute: color +RL.SHADER_LOC_VERTEX_COLOR=5 +---Shader location: matrix uniform: model-view-projection +RL.SHADER_LOC_MATRIX_MVP=6 +---Shader location: matrix uniform: view (camera transform) +RL.SHADER_LOC_MATRIX_VIEW=7 +---Shader location: matrix uniform: projection +RL.SHADER_LOC_MATRIX_PROJECTION=8 +---Shader location: matrix uniform: model (transform) +RL.SHADER_LOC_MATRIX_MODEL=9 +---Shader location: matrix uniform: normal +RL.SHADER_LOC_MATRIX_NORMAL=10 +---Shader location: vector uniform: view +RL.SHADER_LOC_VECTOR_VIEW=11 +---Shader location: vector uniform: diffuse color +RL.SHADER_LOC_COLOR_DIFFUSE=12 +---Shader location: vector uniform: specular color +RL.SHADER_LOC_COLOR_SPECULAR=13 +---Shader location: vector uniform: ambient color +RL.SHADER_LOC_COLOR_AMBIENT=14 +---Shader location: sampler2d texture: albedo (same as: SHADER_LOC_MAP_DIFFUSE) +RL.SHADER_LOC_MAP_ALBEDO=15 +---Shader location: sampler2d texture: metalness (same as: SHADER_LOC_MAP_SPECULAR) +RL.SHADER_LOC_MAP_METALNESS=16 +---Shader location: sampler2d texture: normal +RL.SHADER_LOC_MAP_NORMAL=17 +---Shader location: sampler2d texture: roughness +RL.SHADER_LOC_MAP_ROUGHNESS=18 +---Shader location: sampler2d texture: occlusion +RL.SHADER_LOC_MAP_OCCLUSION=19 +---Shader location: sampler2d texture: emission +RL.SHADER_LOC_MAP_EMISSION=20 +---Shader location: sampler2d texture: height +RL.SHADER_LOC_MAP_HEIGHT=21 +---Shader location: samplerCube texture: cubemap +RL.SHADER_LOC_MAP_CUBEMAP=22 +---Shader location: samplerCube texture: irradiance +RL.SHADER_LOC_MAP_IRRADIANCE=23 +---Shader location: samplerCube texture: prefilter +RL.SHADER_LOC_MAP_PREFILTER=24 +---Shader location: sampler2d texture: brdf +RL.SHADER_LOC_MAP_BRDF=25 +---Shader location: vertex attribute: boneIds +RL.SHADER_LOC_VERTEX_BONEIDS=26 +---Shader location: vertex attribute: boneWeights +RL.SHADER_LOC_VERTEX_BONEWEIGHTS=27 +---Shader location: array of matrices uniform: boneMatrices +RL.SHADER_LOC_BONE_MATRICES=28 +---Shader location: sampler2d texture: diffuce (same as: SHADER_LOC_MAP_ALBEDO) +RL.SHADER_LOC_MAP_DIFFUSE=15 +---Shader location: sampler2d texture: specular (same as: SHADER_LOC_MAP_METALNESS) +RL.SHADER_LOC_MAP_SPECULAR=16 + +-- Defines - Shader uniform data type + +---Shader uniform type: float +RL.SHADER_UNIFORM_FLOAT=0 +---Shader uniform type: vec2 (2 float) +RL.SHADER_UNIFORM_VEC2=1 +---Shader uniform type: vec3 (3 float) +RL.SHADER_UNIFORM_VEC3=2 +---Shader uniform type: vec4 (4 float) +RL.SHADER_UNIFORM_VEC4=3 +---Shader uniform type: int +RL.SHADER_UNIFORM_INT=4 +---Shader uniform type: ivec2 (2 int) +RL.SHADER_UNIFORM_IVEC2=5 +---Shader uniform type: ivec3 (3 int) +RL.SHADER_UNIFORM_IVEC3=6 +---Shader uniform type: ivec4 (4 int) +RL.SHADER_UNIFORM_IVEC4=7 +---Shader uniform type: sampler2d +RL.SHADER_UNIFORM_SAMPLER2D=8 + +-- Defines - Shader attribute data types + +---Shader attribute type: float +RL.SHADER_ATTRIB_FLOAT=0 +---Shader attribute type: vec2 (2 float) +RL.SHADER_ATTRIB_VEC2=1 +---Shader attribute type: vec3 (3 float) +RL.SHADER_ATTRIB_VEC3=2 +---Shader attribute type: vec4 (4 float) +RL.SHADER_ATTRIB_VEC4=3 + +-- Defines - Pixel formats + +---8 bit per pixel (no alpha) +RL.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE=1 +---8*2 bpp (2 channels) +RL.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA=2 +---16 bpp +RL.PIXELFORMAT_UNCOMPRESSED_R5G6B5=3 +---24 bpp +RL.PIXELFORMAT_UNCOMPRESSED_R8G8B8=4 +---16 bpp (1 bit alpha) +RL.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1=5 +---16 bpp (4 bit alpha) +RL.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4=6 +---32 bpp +RL.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8=7 +---32 bpp (1 channel - float) +RL.PIXELFORMAT_UNCOMPRESSED_R32=8 +---32*3 bpp (3 channels - float) +RL.PIXELFORMAT_UNCOMPRESSED_R32G32B32=9 +---32*4 bpp (4 channels - float) +RL.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32=10 +---4 bpp (no alpha) +RL.PIXELFORMAT_COMPRESSED_DXT1_RGB=14 +---4 bpp (1 bit alpha) +RL.PIXELFORMAT_COMPRESSED_DXT1_RGBA=15 +---8 bpp +RL.PIXELFORMAT_COMPRESSED_DXT3_RGBA=16 +---8 bpp +RL.PIXELFORMAT_COMPRESSED_DXT5_RGBA=17 +---4 bpp +RL.PIXELFORMAT_COMPRESSED_ETC1_RGB=18 +---4 bpp +RL.PIXELFORMAT_COMPRESSED_ETC2_RGB=19 +---8 bpp +RL.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA=20 +---4 bpp +RL.PIXELFORMAT_COMPRESSED_PVRT_RGB=21 +---4 bpp +RL.PIXELFORMAT_COMPRESSED_PVRT_RGBA=22 +---8 bpp +RL.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA=23 +---2 bpp +RL.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA=24 + +-- Defines - Texture parameters: filter mode + +---No filter, just pixel approximation +RL.TEXTURE_FILTER_POINT=0 +---Linear filtering +RL.TEXTURE_FILTER_BILINEAR=1 +---Trilinear filtering (linear with mipmaps) +RL.TEXTURE_FILTER_TRILINEAR=2 +---Anisotropic filtering 4x +RL.TEXTURE_FILTER_ANISOTROPIC_4X=3 +---Anisotropic filtering 8x +RL.TEXTURE_FILTER_ANISOTROPIC_8X=4 +---Anisotropic filtering 16x +RL.TEXTURE_FILTER_ANISOTROPIC_16X=5 + +-- Defines - Texture parameters: wrap mode + +---Repeats texture in tiled mode +RL.TEXTURE_WRAP_REPEAT=0 +---Clamps texture to edge pixel in tiled mode +RL.TEXTURE_WRAP_CLAMP=1 +---Mirrors and repeats the texture in tiled mode +RL.TEXTURE_WRAP_MIRROR_REPEAT=2 +---Mirrors and clamps to border the texture in tiled mode +RL.TEXTURE_WRAP_MIRROR_CLAMP=3 + +-- Defines - Cubemap layouts + +---Automatically detect layout type +RL.CUBEMAP_LAYOUT_AUTO_DETECT=0 +---Layout is defined by a vertical line with faces +RL.CUBEMAP_LAYOUT_LINE_VERTICAL=1 +---Layout is defined by a horizontal line with faces +RL.CUBEMAP_LAYOUT_LINE_HORIZONTAL=2 +---Layout is defined by a 3x4 cross with cubemap faces +RL.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR=3 +---Layout is defined by a 4x3 cross with cubemap faces +RL.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE=4 + +-- Defines - Font type, defines generation method + +---Default font generation, anti-aliased +RL.FONT_DEFAULT=0 +---Bitmap font generation, no anti-aliasing +RL.FONT_BITMAP=1 +---SDF font generation, requires external shader +RL.FONT_SDF=2 + +-- Defines - Color blending modes (pre-defined) + +---Blend textures considering alpha (default) +RL.BLEND_ALPHA=0 +---Blend textures adding colors +RL.BLEND_ADDITIVE=1 +---Blend textures multiplying colors +RL.BLEND_MULTIPLIED=2 +---Blend textures adding colors (alternative) +RL.BLEND_ADD_COLORS=3 +---Blend textures subtracting colors (alternative) +RL.BLEND_SUBTRACT_COLORS=4 +---Blend premultiplied textures considering alpha +RL.BLEND_ALPHA_PREMULTIPLY=5 +---Blend textures using custom src/dst factors (use rlSetBlendFactors()) +RL.BLEND_CUSTOM=6 +---Blend textures using custom rgb/alpha separate src/dst factors (use rlSetBlendFactorsSeparate()) +RL.BLEND_CUSTOM_SEPARATE=7 + +-- Defines - Gesture + +---No gesture +RL.GESTURE_NONE=0 +---Tap gesture +RL.GESTURE_TAP=1 +---Double tap gesture +RL.GESTURE_DOUBLETAP=2 +---Hold gesture +RL.GESTURE_HOLD=4 +---Drag gesture +RL.GESTURE_DRAG=8 +---Swipe right gesture +RL.GESTURE_SWIPE_RIGHT=16 +---Swipe left gesture +RL.GESTURE_SWIPE_LEFT=32 +---Swipe up gesture +RL.GESTURE_SWIPE_UP=64 +---Swipe down gesture +RL.GESTURE_SWIPE_DOWN=128 +---Pinch in gesture +RL.GESTURE_PINCH_IN=256 +---Pinch out gesture +RL.GESTURE_PINCH_OUT=512 + +-- Defines - Camera system modes + +---Custom camera +RL.CAMERA_CUSTOM=0 +---Free camera +RL.CAMERA_FREE=1 +---Orbital camera +RL.CAMERA_ORBITAL=2 +---First person camera +RL.CAMERA_FIRST_PERSON=3 +---Third person camera +RL.CAMERA_THIRD_PERSON=4 + +-- Defines - Camera projection + +---Perspective projection +RL.CAMERA_PERSPECTIVE=0 +---Orthographic projection +RL.CAMERA_ORTHOGRAPHIC=1 + +-- Defines - N-patch layout + +---Npatch layout: 3x3 tiles +RL.NPATCH_NINE_PATCH=0 +---Npatch layout: 1x3 tiles +RL.NPATCH_THREE_PATCH_VERTICAL=1 +---Npatch layout: 3x1 tiles +RL.NPATCH_THREE_PATCH_HORIZONTAL=2 + +-- Defines - Colors + +---Light Gray +RL.LIGHTGRAY={200,200,200,255} +---Gray +RL.GRAY={130,130,130,255} +---Dark Gray +RL.DARKGRAY={80,80,80,255} +---Yellow +RL.YELLOW={253,249,0,255} +---Gold +RL.GOLD={255,203,0,255} +---Orange +RL.ORANGE={255,161,0,255} +---Pink +RL.PINK={255,109,194,255} +---Red +RL.RED={230,41,55,255} +---Maroon +RL.MAROON={190,33,55,255} +---Green +RL.GREEN={0,228,48,255} +---Lime +RL.LIME={0,158,47,255} +---Dark Green +RL.DARKGREEN={0,117,44,255} +---Sky Blue +RL.SKYBLUE={102,191,255,255} +---Blue +RL.BLUE={0,121,241,255} +---Dark Blue +RL.DARKBLUE={0,82,172,255} +---Purple +RL.PURPLE={200,122,255,255} +---Violet +RL.VIOLET={135,60,190,255} +---Dark Purple +RL.DARKPURPLE={112,31,126,255} +---Beige +RL.BEIGE={211,176,131,255} +---Brown +RL.BROWN={127,106,79,255} +---Dark Brown +RL.DARKBROWN={76,63,47,255} +---White +RL.WHITE={255,255,255,255} +---Black +RL.BLACK={0,0,0,255} +---Blank (Transparent) +RL.BLANK={0,0,0,0} +---Magenta +RL.MAGENTA={255,0,255,255} +---My own White (raylib logo) +RL.RAYWHITE={245,245,245,255} + +-- Defines - Math + +---Pi +RL.PI=3.1415927410126 +---Epsilon +RL.EPSILON=9.9999999747524e-07 +---Degrees to radians +RL.DEG2RAD=0.017453292384744 +---Radians to degrees +RL.RAD2DEG=57.295776367188 + +-- Defines - Gui control state + +RL.STATE_NORMAL=0 +RL.STATE_FOCUSED=1 +RL.STATE_PRESSED=2 +RL.STATE_DISABLED=3 + +-- Defines - Gui control text alignment + +RL.TEXT_ALIGN_LEFT=0 +RL.TEXT_ALIGN_CENTER=1 +RL.TEXT_ALIGN_RIGHT=2 + +-- Defines - Gui control text alignment vertical + +RL.TEXT_ALIGN_TOP=0 +RL.TEXT_ALIGN_MIDDLE=1 +RL.TEXT_ALIGN_BOTTOM=2 + +-- Defines - Gui control text wrap mode + +RL.TEXT_WRAP_NONE=0 +RL.TEXT_WRAP_CHAR=1 +RL.TEXT_WRAP_WORD=2 + +-- Defines - Gui controls + +RL.DEFAULT=0 +---Used also for: LABELBUTTON +RL.LABEL=1 +RL.BUTTON=2 +---Used also for: TOGGLEGROUP +RL.TOGGLE=3 +---Used also for: SLIDERBAR +RL.SLIDER=4 +RL.PROGRESSBAR=5 +RL.CHECKBOX=6 +RL.COMBOBOX=7 +RL.DROPDOWNBOX=8 +---Used also for: TEXTBOXMULTI +RL.TEXTBOX=9 +RL.VALUEBOX=10 +---Uses: BUTTON, VALUEBOX +RL.SPINNER=11 +RL.LISTVIEW=12 +RL.COLORPICKER=13 +RL.SCROLLBAR=14 +RL.STATUSBAR=15 + +-- Defines - Gui base properties for every control + +RL.BORDER_COLOR_NORMAL=0 +RL.BASE_COLOR_NORMAL=1 +RL.TEXT_COLOR_NORMAL=2 +RL.BORDER_COLOR_FOCUSED=3 +RL.BASE_COLOR_FOCUSED=4 +RL.TEXT_COLOR_FOCUSED=5 +RL.BORDER_COLOR_PRESSED=6 +RL.BASE_COLOR_PRESSED=7 +RL.TEXT_COLOR_PRESSED=8 +RL.BORDER_COLOR_DISABLED=9 +RL.BASE_COLOR_DISABLED=10 +RL.TEXT_COLOR_DISABLED=11 +RL.BORDER_WIDTH=12 +RL.TEXT_PADDING=13 +RL.TEXT_ALIGNMENT=14 + +-- Defines - Gui extended properties depend on control + +---Text size (glyphs max height) +RL.TEXT_SIZE=16 +---Text spacing between glyphs +RL.TEXT_SPACING=17 +---Line control color +RL.LINE_COLOR=18 +---Background color +RL.BACKGROUND_COLOR=19 +---Text spacing between lines +RL.TEXT_LINE_SPACING=20 +---Text vertical alignment inside text bounds (after border and padding) +RL.TEXT_ALIGNMENT_VERTICAL=21 +---Text wrap-mode inside text bounds +RL.TEXT_WRAP_MODE=22 + +-- Defines - Gui Toggle/ToggleGroup + +---ToggleGroup separation between toggles +RL.GROUP_PADDING=16 + +-- Defines - Gui Slider/SliderBar + +---Slider size of internal bar +RL.SLIDER_WIDTH=16 +---Slider/SliderBar internal bar padding +RL.SLIDER_PADDING=17 + +-- Defines - Gui ProgressBar + +---ProgressBar internal padding +RL.PROGRESS_PADDING=16 + +-- Defines - Gui ScrollBar + +RL.ARROWS_SIZE=16 +RL.ARROWS_VISIBLE=17 +---(SLIDERBAR, SLIDER_PADDING) +RL.SCROLL_SLIDER_PADDING=18 +RL.SCROLL_SLIDER_SIZE=19 +RL.SCROLL_PADDING=20 +RL.SCROLL_SPEED=21 + +-- Defines - Gui CheckBox + +---CheckBox internal check padding +RL.CHECK_PADDING=16 + +-- Defines - Gui ComboBox + +---ComboBox right button width +RL.COMBO_BUTTON_WIDTH=16 +---ComboBox button separation +RL.COMBO_BUTTON_SPACING=17 + +-- Defines - Gui DropdownBox + +---DropdownBox arrow separation from border and items +RL.ARROW_PADDING=16 +---DropdownBox items separation +RL.DROPDOWN_ITEMS_SPACING=17 + +-- Defines - Gui TextBox/TextBoxMulti/ValueBox/Spinner + +---TextBox in read-only mode: 0-text editable, 1-text no-editable +RL.TEXT_READONLY=16 + +-- Defines - Gui Spinner + +---Spinner left/right buttons width +RL.SPIN_BUTTON_WIDTH=16 +---Spinner buttons separation +RL.SPIN_BUTTON_SPACING=17 + +-- Defines - Gui ListView + +---ListView items height +RL.LIST_ITEMS_HEIGHT=16 +---ListView items separation +RL.LIST_ITEMS_SPACING=17 +---ListView scrollbar size (usually width) +RL.SCROLLBAR_WIDTH=18 +---ListView scrollbar side (0-left, 1-right) +RL.SCROLLBAR_SIDE=19 + +-- Defines - Gui ColorPicker + +RL.COLOR_SELECTOR_SIZE=16 +---ColorPicker right hue bar width +RL.HUEBAR_WIDTH=17 +---ColorPicker right hue bar separation from panel +RL.HUEBAR_PADDING=18 +---ColorPicker right hue bar selector height +RL.HUEBAR_SELECTOR_HEIGHT=19 +---ColorPicker right hue bar selector overflow +RL.HUEBAR_SELECTOR_OVERFLOW=20 + +-- Defines - Gui Icons enumeration + +RL.ICON_NONE=0 +RL.ICON_FOLDER_FILE_OPEN=1 +RL.ICON_FILE_SAVE_CLASSIC=2 +RL.ICON_FOLDER_OPEN=3 +RL.ICON_FOLDER_SAVE=4 +RL.ICON_FILE_OPEN=5 +RL.ICON_FILE_SAVE=6 +RL.ICON_FILE_EXPORT=7 +RL.ICON_FILE_ADD=8 +RL.ICON_FILE_DELETE=9 +RL.ICON_FILETYPE_TEXT=10 +RL.ICON_FILETYPE_AUDIO=11 +RL.ICON_FILETYPE_IMAGE=12 +RL.ICON_FILETYPE_PLAY=13 +RL.ICON_FILETYPE_VIDEO=14 +RL.ICON_FILETYPE_INFO=15 +RL.ICON_FILE_COPY=16 +RL.ICON_FILE_CUT=17 +RL.ICON_FILE_PASTE=18 +RL.ICON_CURSOR_HAND=19 +RL.ICON_CURSOR_POINTER=20 +RL.ICON_CURSOR_CLASSIC=21 +RL.ICON_PENCIL=22 +RL.ICON_PENCIL_BIG=23 +RL.ICON_BRUSH_CLASSIC=24 +RL.ICON_BRUSH_PAINTER=25 +RL.ICON_WATER_DROP=26 +RL.ICON_COLOR_PICKER=27 +RL.ICON_RUBBER=28 +RL.ICON_COLOR_BUCKET=29 +RL.ICON_TEXT_T=30 +RL.ICON_TEXT_A=31 +RL.ICON_SCALE=32 +RL.ICON_RESIZE=33 +RL.ICON_FILTER_POINT=34 +RL.ICON_FILTER_BILINEAR=35 +RL.ICON_CROP=36 +RL.ICON_CROP_ALPHA=37 +RL.ICON_SQUARE_TOGGLE=38 +RL.ICON_SYMMETRY=39 +RL.ICON_SYMMETRY_HORIZONTAL=40 +RL.ICON_SYMMETRY_VERTICAL=41 +RL.ICON_LENS=42 +RL.ICON_LENS_BIG=43 +RL.ICON_EYE_ON=44 +RL.ICON_EYE_OFF=45 +RL.ICON_FILTER_TOP=46 +RL.ICON_FILTER=47 +RL.ICON_TARGET_POINT=48 +RL.ICON_TARGET_SMALL=49 +RL.ICON_TARGET_BIG=50 +RL.ICON_TARGET_MOVE=51 +RL.ICON_CURSOR_MOVE=52 +RL.ICON_CURSOR_SCALE=53 +RL.ICON_CURSOR_SCALE_RIGHT=54 +RL.ICON_CURSOR_SCALE_LEFT=55 +RL.ICON_UNDO=56 +RL.ICON_REDO=57 +RL.ICON_REREDO=58 +RL.ICON_MUTATE=59 +RL.ICON_ROTATE=60 +RL.ICON_REPEAT=61 +RL.ICON_SHUFFLE=62 +RL.ICON_EMPTYBOX=63 +RL.ICON_TARGET=64 +RL.ICON_TARGET_SMALL_FILL=65 +RL.ICON_TARGET_BIG_FILL=66 +RL.ICON_TARGET_MOVE_FILL=67 +RL.ICON_CURSOR_MOVE_FILL=68 +RL.ICON_CURSOR_SCALE_FILL=69 +RL.ICON_CURSOR_SCALE_RIGHT_FILL=70 +RL.ICON_CURSOR_SCALE_LEFT_FILL=71 +RL.ICON_UNDO_FILL=72 +RL.ICON_REDO_FILL=73 +RL.ICON_REREDO_FILL=74 +RL.ICON_MUTATE_FILL=75 +RL.ICON_ROTATE_FILL=76 +RL.ICON_REPEAT_FILL=77 +RL.ICON_SHUFFLE_FILL=78 +RL.ICON_EMPTYBOX_SMALL=79 +RL.ICON_BOX=80 +RL.ICON_BOX_TOP=81 +RL.ICON_BOX_TOP_RIGHT=82 +RL.ICON_BOX_RIGHT=83 +RL.ICON_BOX_BOTTOM_RIGHT=84 +RL.ICON_BOX_BOTTOM=85 +RL.ICON_BOX_BOTTOM_LEFT=86 +RL.ICON_BOX_LEFT=87 +RL.ICON_BOX_TOP_LEFT=88 +RL.ICON_BOX_CENTER=89 +RL.ICON_BOX_CIRCLE_MASK=90 +RL.ICON_POT=91 +RL.ICON_ALPHA_MULTIPLY=92 +RL.ICON_ALPHA_CLEAR=93 +RL.ICON_DITHERING=94 +RL.ICON_MIPMAPS=95 +RL.ICON_BOX_GRID=96 +RL.ICON_GRID=97 +RL.ICON_BOX_CORNERS_SMALL=98 +RL.ICON_BOX_CORNERS_BIG=99 +RL.ICON_FOUR_BOXES=100 +RL.ICON_GRID_FILL=101 +RL.ICON_BOX_MULTISIZE=102 +RL.ICON_ZOOM_SMALL=103 +RL.ICON_ZOOM_MEDIUM=104 +RL.ICON_ZOOM_BIG=105 +RL.ICON_ZOOM_ALL=106 +RL.ICON_ZOOM_CENTER=107 +RL.ICON_BOX_DOTS_SMALL=108 +RL.ICON_BOX_DOTS_BIG=109 +RL.ICON_BOX_CONCENTRIC=110 +RL.ICON_BOX_GRID_BIG=111 +RL.ICON_OK_TICK=112 +RL.ICON_CROSS=113 +RL.ICON_ARROW_LEFT=114 +RL.ICON_ARROW_RIGHT=115 +RL.ICON_ARROW_DOWN=116 +RL.ICON_ARROW_UP=117 +RL.ICON_ARROW_LEFT_FILL=118 +RL.ICON_ARROW_RIGHT_FILL=119 +RL.ICON_ARROW_DOWN_FILL=120 +RL.ICON_ARROW_UP_FILL=121 +RL.ICON_AUDIO=122 +RL.ICON_FX=123 +RL.ICON_WAVE=124 +RL.ICON_WAVE_SINUS=125 +RL.ICON_WAVE_SQUARE=126 +RL.ICON_WAVE_TRIANGULAR=127 +RL.ICON_CROSS_SMALL=128 +RL.ICON_PLAYER_PREVIOUS=129 +RL.ICON_PLAYER_PLAY_BACK=130 +RL.ICON_PLAYER_PLAY=131 +RL.ICON_PLAYER_PAUSE=132 +RL.ICON_PLAYER_STOP=133 +RL.ICON_PLAYER_NEXT=134 +RL.ICON_PLAYER_RECORD=135 +RL.ICON_MAGNET=136 +RL.ICON_LOCK_CLOSE=137 +RL.ICON_LOCK_OPEN=138 +RL.ICON_CLOCK=139 +RL.ICON_TOOLS=140 +RL.ICON_GEAR=141 +RL.ICON_GEAR_BIG=142 +RL.ICON_BIN=143 +RL.ICON_HAND_POINTER=144 +RL.ICON_LASER=145 +RL.ICON_COIN=146 +RL.ICON_EXPLOSION=147 +RL.ICON_1UP=148 +RL.ICON_PLAYER=149 +RL.ICON_PLAYER_JUMP=150 +RL.ICON_KEY=151 +RL.ICON_DEMON=152 +RL.ICON_TEXT_POPUP=153 +RL.ICON_GEAR_EX=154 +RL.ICON_CRACK=155 +RL.ICON_CRACK_POINTS=156 +RL.ICON_STAR=157 +RL.ICON_DOOR=158 +RL.ICON_EXIT=159 +RL.ICON_MODE_2D=160 +RL.ICON_MODE_3D=161 +RL.ICON_CUBE=162 +RL.ICON_CUBE_FACE_TOP=163 +RL.ICON_CUBE_FACE_LEFT=164 +RL.ICON_CUBE_FACE_FRONT=165 +RL.ICON_CUBE_FACE_BOTTOM=166 +RL.ICON_CUBE_FACE_RIGHT=167 +RL.ICON_CUBE_FACE_BACK=168 +RL.ICON_CAMERA=169 +RL.ICON_SPECIAL=170 +RL.ICON_LINK_NET=171 +RL.ICON_LINK_BOXES=172 +RL.ICON_LINK_MULTI=173 +RL.ICON_LINK=174 +RL.ICON_LINK_BROKE=175 +RL.ICON_TEXT_NOTES=176 +RL.ICON_NOTEBOOK=177 +RL.ICON_SUITCASE=178 +RL.ICON_SUITCASE_ZIP=179 +RL.ICON_MAILBOX=180 +RL.ICON_MONITOR=181 +RL.ICON_PRINTER=182 +RL.ICON_PHOTO_CAMERA=183 +RL.ICON_PHOTO_CAMERA_FLASH=184 +RL.ICON_HOUSE=185 +RL.ICON_HEART=186 +RL.ICON_CORNER=187 +RL.ICON_VERTICAL_BARS=188 +RL.ICON_VERTICAL_BARS_FILL=189 +RL.ICON_LIFE_BARS=190 +RL.ICON_INFO=191 +RL.ICON_CROSSLINE=192 +RL.ICON_HELP=193 +RL.ICON_FILETYPE_ALPHA=194 +RL.ICON_FILETYPE_HOME=195 +RL.ICON_LAYERS_VISIBLE=196 +RL.ICON_LAYERS=197 +RL.ICON_WINDOW=198 +RL.ICON_HIDPI=199 +RL.ICON_FILETYPE_BINARY=200 +RL.ICON_HEX=201 +RL.ICON_SHIELD=202 +RL.ICON_FILE_NEW=203 +RL.ICON_FOLDER_ADD=204 +RL.ICON_ALARM=205 +RL.ICON_CPU=206 +RL.ICON_ROM=207 +RL.ICON_STEP_OVER=208 +RL.ICON_STEP_INTO=209 +RL.ICON_STEP_OUT=210 +RL.ICON_RESTART=211 +RL.ICON_BREAKPOINT_ON=212 +RL.ICON_BREAKPOINT_OFF=213 +RL.ICON_BURGER_MENU=214 +RL.ICON_CASE_SENSITIVE=215 +RL.ICON_REG_EXP=216 +RL.ICON_FOLDER=217 +RL.ICON_FILE=218 +RL.ICON_SAND_TIMER=219 + +-- Defines - Light type + +---Directional light +RL.LIGHT_DIRECTIONAL=0 +---Point light +RL.LIGHT_POINT=1 + +-- Defines - RLGL Default internal render batch elements limits + +---Default internal render batch elements limits +RL.RL_DEFAULT_BATCH_BUFFER_ELEMENTS=8192 +---Default number of batch buffers (multi-buffering) +RL.RL_DEFAULT_BATCH_BUFFERS=1 +---Default number of batch draw calls (by state changes: mode, texture) +RL.RL_DEFAULT_BATCH_DRAWCALLS=256 +---Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture()) +RL.RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS=4 + +-- Defines - RLGL Internal Matrix stack + +---Maximum size of internal Matrix stack +RL.RL_MAX_MATRIX_STACK_SIZE=32 + +-- Defines - RLGL Shader limits + +---Maximum number of shader locations supported +RL.RL_MAX_SHADER_LOCATIONS=32 + +-- Defines - RLGL Projection matrix culling + +---Default projection matrix near cull distance +RL.RL_CULL_DISTANCE_NEAR=0.01 +---Default projection matrix far cull distance +RL.RL_CULL_DISTANCE_FAR=1000 + +-- Defines - RLGL Texture parameters + +---GL_TEXTURE_WRAP_S +RL.RL_TEXTURE_WRAP_S=10242 +---GL_TEXTURE_WRAP_T +RL.RL_TEXTURE_WRAP_T=10243 +---GL_TEXTURE_MAG_FILTER +RL.RL_TEXTURE_MAG_FILTER=10240 +---GL_TEXTURE_MIN_FILTER +RL.RL_TEXTURE_MIN_FILTER=10241 +---GL_NEAREST +RL.RL_TEXTURE_FILTER_NEAREST=9728 +---GL_LINEAR +RL.RL_TEXTURE_FILTER_LINEAR=9729 +---GL_NEAREST_MIPMAP_NEAREST +RL.RL_TEXTURE_FILTER_MIP_NEAREST=9984 +---GL_NEAREST_MIPMAP_LINEAR +RL.RL_TEXTURE_FILTER_NEAREST_MIP_LINEAR=9986 +---GL_LINEAR_MIPMAP_NEAREST +RL.RL_TEXTURE_FILTER_LINEAR_MIP_NEAREST=9985 +---GL_LINEAR_MIPMAP_LINEAR +RL.RL_TEXTURE_FILTER_MIP_LINEAR=9987 +---Anisotropic filter (custom identifier) +RL.RL_TEXTURE_FILTER_ANISOTROPIC=12288 +---Texture mipmap bias, percentage ratio (custom identifier) +RL.RL_TEXTURE_MIPMAP_BIAS_RATIO=16384 +---GL_REPEAT +RL.RL_TEXTURE_WRAP_REPEAT=10497 +---GL_CLAMP_TO_EDGE +RL.RL_TEXTURE_WRAP_CLAMP=33071 +---GL_MIRRORED_REPEAT +RL.RL_TEXTURE_WRAP_MIRROR_REPEAT=33648 +---GL_MIRROR_CLAMP_EXT +RL.RL_TEXTURE_WRAP_MIRROR_CLAMP=34626 + +-- Defines - RLGL Matrix modes (equivalent to OpenGL) + +---GL_MODELVIEW +RL.RL_MODELVIEW=5888 +---GL_PROJECTION +RL.RL_PROJECTION=5889 +---GL_TEXTURE +RL.RL_TEXTURE=5890 + +-- Defines - RLGL Primitive assembly draw modes + +---GL_LINES +RL.RL_LINES=1 +---GL_TRIANGLES +RL.RL_TRIANGLES=4 +---GL_QUADS +RL.RL_QUADS=7 + +-- Defines - RLGL GL equivalent data types + +---GL_UNSIGNED_BYTE +RL.RL_UNSIGNED_BYTE=5121 +---GL_FLOAT +RL.RL_FLOAT=5126 + +-- Defines - RLGL GL buffer usage hint + +---GL_STREAM_DRAW +RL.RL_STREAM_DRAW=35040 +---GL_STREAM_READ +RL.RL_STREAM_READ=35041 +---GL_STREAM_COPY +RL.RL_STREAM_COPY=35042 +---GL_STATIC_DRAW +RL.RL_STATIC_DRAW=35044 +---GL_STATIC_READ +RL.RL_STATIC_READ=35045 +---GL_STATIC_COPY +RL.RL_STATIC_COPY=35046 +---GL_DYNAMIC_DRAW +RL.RL_DYNAMIC_DRAW=35048 +---GL_DYNAMIC_READ +RL.RL_DYNAMIC_READ=35049 +---GL_DYNAMIC_COPY +RL.RL_DYNAMIC_COPY=35050 + +-- Defines - RLGL Shader type + +---GL_FRAGMENT_SHADER +RL.RL_FRAGMENT_SHADER=35632 +---GL_VERTEX_SHADER +RL.RL_VERTEX_SHADER=35633 +---GL_COMPUTE_SHADER +RL.RL_COMPUTE_SHADER=37305 + +-- Defines - RLGL GL blending factors + +---GL_ZERO +RL.RL_ZERO=0 +---GL_ONE +RL.RL_ONE=1 +---GL_SRC_COLOR +RL.RL_SRC_COLOR=768 +---GL_ONE_MINUS_SRC_COLOR +RL.RL_ONE_MINUS_SRC_COLOR=769 +---GL_SRC_ALPHA +RL.RL_SRC_ALPHA=770 +---GL_ONE_MINUS_SRC_ALPHA +RL.RL_ONE_MINUS_SRC_ALPHA=771 +---GL_DST_ALPHA +RL.RL_DST_ALPHA=772 +---GL_ONE_MINUS_DST_ALPHA +RL.RL_ONE_MINUS_DST_ALPHA=773 +---GL_DST_COLOR +RL.RL_DST_COLOR=774 +---GL_ONE_MINUS_DST_COLOR +RL.RL_ONE_MINUS_DST_COLOR=775 +---GL_SRC_ALPHA_SATURATE +RL.RL_SRC_ALPHA_SATURATE=776 +---GL_CONSTANT_COLOR +RL.RL_CONSTANT_COLOR=32769 +---GL_ONE_MINUS_CONSTANT_COLOR +RL.RL_ONE_MINUS_CONSTANT_COLOR=32770 +---GL_CONSTANT_ALPHA +RL.RL_CONSTANT_ALPHA=32771 +---GL_ONE_MINUS_CONSTANT_ALPHA +RL.RL_ONE_MINUS_CONSTANT_ALPHA=32772 + +-- Defines - RLGL GL blending functions/equations + +---GL_FUNC_ADD +RL.RL_FUNC_ADD=32774 +---GL_MIN +RL.RL_MIN=32775 +---GL_MAX +RL.RL_MAX=32776 +---GL_FUNC_SUBTRACT +RL.RL_FUNC_SUBTRACT=32778 +---GL_FUNC_REVERSE_SUBTRACT +RL.RL_FUNC_REVERSE_SUBTRACT=32779 +---GL_BLEND_EQUATION +RL.RL_BLEND_EQUATION=32777 +---GL_BLEND_EQUATION_RGB // (Same as BLEND_EQUATION) +RL.RL_BLEND_EQUATION_RGB=32777 +---GL_BLEND_EQUATION_ALPHA +RL.RL_BLEND_EQUATION_ALPHA=34877 +---GL_BLEND_DST_RGB +RL.RL_BLEND_DST_RGB=32968 +---GL_BLEND_SRC_RGB +RL.RL_BLEND_SRC_RGB=32969 +---GL_BLEND_DST_ALPHA +RL.RL_BLEND_DST_ALPHA=32970 +---GL_BLEND_SRC_ALPHA +RL.RL_BLEND_SRC_ALPHA=32971 +---GL_BLEND_COLOR +RL.RL_BLEND_COLOR=32773 +---GL_READ_FRAMEBUFFER +RL.RL_READ_FRAMEBUFFER=36008 +---GL_DRAW_FRAMEBUFFER +RL.RL_DRAW_FRAMEBUFFER=36009 + +-- Defines - RLGL Default shader vertex attribute locations + +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION=0 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD=1 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL=2 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR=3 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT=4 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2=5 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES=6 +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS=nil +RL.RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS=nil + +-- Defines - RLGL GlVersion + +---OpenGL 1.1 +RL.RL_OPENGL_11=1 +---OpenGL 2.1 (GLSL 120) +RL.RL_OPENGL_21=2 +---OpenGL 3.3 (GLSL 330) +RL.RL_OPENGL_33=3 +---OpenGL 4.3 (using GLSL 330) +RL.RL_OPENGL_43=4 +---OpenGL ES 2.0 (GLSL 100) +RL.RL_OPENGL_ES_20=5 + +-- Defines - RLGL Framebuffer attachment type + +---Framebuffer attachment type: color 0 +RL.RL_ATTACHMENT_COLOR_CHANNEL0=0 +---Framebuffer attachment type: color 1 +RL.RL_ATTACHMENT_COLOR_CHANNEL1=1 +---Framebuffer attachment type: color 2 +RL.RL_ATTACHMENT_COLOR_CHANNEL2=2 +---Framebuffer attachment type: color 3 +RL.RL_ATTACHMENT_COLOR_CHANNEL3=3 +---Framebuffer attachment type: color 4 +RL.RL_ATTACHMENT_COLOR_CHANNEL4=4 +---Framebuffer attachment type: color 5 +RL.RL_ATTACHMENT_COLOR_CHANNEL5=5 +---Framebuffer attachment type: color 6 +RL.RL_ATTACHMENT_COLOR_CHANNEL6=6 +---Framebuffer attachment type: color 7 +RL.RL_ATTACHMENT_COLOR_CHANNEL7=7 +---Framebuffer attachment type: depth +RL.RL_ATTACHMENT_DEPTH=100 +---Framebuffer attachment type: stencil +RL.RL_ATTACHMENT_STENCIL=200 + +-- Defines - RLGL Framebuffer texture attachment type + +---Framebuffer texture attachment type: cubemap, +X side +RL.RL_ATTACHMENT_CUBEMAP_POSITIVE_X=0 +---Framebuffer texture attachment type: cubemap, -X side +RL.RL_ATTACHMENT_CUBEMAP_NEGATIVE_X=1 +---Framebuffer texture attachment type: cubemap, +Y side +RL.RL_ATTACHMENT_CUBEMAP_POSITIVE_Y=2 +---Framebuffer texture attachment type: cubemap, -Y side +RL.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Y=3 +---Framebuffer texture attachment type: cubemap, +Z side +RL.RL_ATTACHMENT_CUBEMAP_POSITIVE_Z=4 +---Framebuffer texture attachment type: cubemap, -Z side +RL.RL_ATTACHMENT_CUBEMAP_NEGATIVE_Z=5 +---Framebuffer texture attachment type: texture2d +RL.RL_ATTACHMENT_TEXTURE2D=100 +---Framebuffer texture attachment type: renderbuffer +RL.RL_ATTACHMENT_RENDERBUFFER=200 + +-- Defines - RLGL CullMode + +RL.RL_CULL_FACE_FRONT=0 +RL.RL_CULL_FACE_BACK=1 + +-- Defines - OpenGL Bitfield mask + +RL.GL_COLOR_BUFFER_BIT=16384 +RL.GL_DEPTH_BUFFER_BIT=256 +RL.GL_STENCIL_BUFFER_BIT=1024 + +-- Defines - OpenGL Texture parameter + +RL.GL_NEAREST=9728 +RL.GL_LINEAR=9729 + +-- Defines - OpenGL Capability + +---If enabled, blend the computed fragment color values with the values in the color buffers. See glBlendFunc +RL.GL_BLEND=3042 +---If enabled, cull polygons based on their winding in window coordinates. See glCullFace +RL.GL_CULL_FACE=2884 +---If enabled, do depth comparisons and update the depth buffer. Note that even if the depth buffer exists and the depth mask is non-zero, the depth buffer is not updated if the depth test is disabled. See glDepthFunc and glDepthRangef +RL.GL_DEPTH_TEST=2929 +---If enabled, dither color components or indices before they are written to the color buffer +RL.GL_DITHER=3024 +---If enabled, an offset is added to depth values of a polygon's fragments produced by rasterization. See glPolygonOffset +RL.GL_POLYGON_OFFSET_FILL=32823 +RL.GL_POLYGON_OFFSET_LINE=10754 +RL.GL_POLYGON_OFFSET_POINT=10753 +---If enabled, compute a temporary coverage value where each bit is determined by the alpha value at the corresponding sample location. The temporary coverage value is then ANDed with the fragment coverage value +RL.GL_SAMPLE_ALPHA_TO_COVERAGE=32926 +---If enabled, the fragment's coverage is ANDed with the temporary coverage value. If GL_SAMPLE_COVERAGE_INVERT is set to GL_TRUE, invert the coverage value. See glSampleCoverage +RL.GL_SAMPLE_COVERAGE=32928 +---If enabled, discard fragments that are outside the scissor rectangle. See glScissor +RL.GL_SCISSOR_TEST=3089 +---If enabled, do stencil testing and update the stencil buffer. See glStencilFunc and glStencilOp +RL.GL_STENCIL_TEST=2960 + +-- Defines - OpenGL Test function + +---Always fails +RL.GL_NEVER=512 +---Passes if ( ref & mask ) < ( stencil & mask ) +RL.GL_LESS=513 +---Passes if ( ref & mask ) <= ( stencil & mask ) +RL.GL_LEQUAL=515 +---Passes if ( ref & mask ) > ( stencil & mask ) +RL.GL_GREATER=516 +---Passes if ( ref & mask ) >= ( stencil & mask ) +RL.GL_GEQUAL=518 +---Passes if ( ref & mask ) = ( stencil & mask ) +RL.GL_EQUAL=514 +---Passes if ( ref & mask ) != ( stencil & mask ) +RL.GL_NOTEQUAL=517 +---Always passes +RL.GL_ALWAYS=519 + +-- Defines - OpenGL Face + +RL.GL_FRONT=1028 +RL.GL_BACK=1029 +RL.GL_FRONT_AND_BACK=1032 + +-- Defines - OpenGL Stencil test + +---Keeps the current value +RL.GL_KEEP=7680 +---Sets the stencil buffer value to 0 +RL.GL_ZERO=0 +---Sets the stencil buffer value to ref, as specified by glStencilFunc +RL.GL_REPLACE=7681 +---Increments the current stencil buffer value. Clamps to the maximum representable unsigned value +RL.GL_INCR=7682 +---Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value +RL.GL_INCR_WRAP=34055 +---Decrements the current stencil buffer value. Clamps to 0 +RL.GL_DECR=7683 +---Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of zero +RL.GL_DECR_WRAP=34056 +---Bitwise inverts the current stencil buffer value +RL.GL_INVERT=5386 + +-- Defines - OpenGL Connection + +---Returns the company responsible for this GL implementation. This name does not change from release to release +RL.GL_VENDOR=7936 +---Returns the name of the renderer. This name is typically specific to a particular configuration of a hardware platform. It does not change from release to release +RL.GL_RENDERER=7937 +---Returns a version or release number of the form OpenGLES +RL.GL_VERSION=7938 +---Returns a version or release number for the shading language of the form OpenGLESGLSLES +RL.GL_SHADING_LANGUAGE_VERSION=35724 +---Returns a space-separated list of supported extensions to GL +RL.GL_EXTENSIONS=7939 + +-- Defines - CBuffer Data type + +---C type unsigned char +RL.BUFFER_UNSIGNED_CHAR=0 +---C type unsigned short +RL.BUFFER_UNSIGNED_SHORT=1 +---C type unsigned int +RL.BUFFER_UNSIGNED_INT=2 +---C type unsigned long +RL.BUFFER_UNSIGNED_LONG=3 +---C type char +RL.BUFFER_CHAR=4 +---C type short +RL.BUFFER_SHORT=5 +---C type int +RL.BUFFER_INT=6 +---C type long +RL.BUFFER_LONG=7 +---C type float +RL.BUFFER_FLOAT=8 +---C type double +RL.BUFFER_DOUBLE=9 + +-- Defines - Keyboard keys (US keyboard layout) + +---Key: Unknown +RL.GLFW_KEY_UNKNOWN=-1 + +-- Defines - GLFW API tokens. + +---The key or mouse button was released +RL.GLFW_RELEASE=0 +---The key or mouse button was pressed +RL.GLFW_PRESS=1 +---The key was held down until it repeated +RL.GLFW_REPEAT=2 +---Joystick connected +RL.GLFW_CONNECTED=262145 +---Joystick disconnected +RL.GLFW_DISCONNECTED=262146 + +-- Defines - GLFW Window Events. + +---GLFW event window size changed +RL.GLFW_WINDOW_SIZE_EVENT=0 +---GLFW event window maximize +RL.GLFW_WINDOW_MAXIMIZE_EVENT=1 +---GLFW event window iconify +RL.GLFW_WINDOW_ICONYFY_EVENT=2 +---GLFW event window focus +RL.GLFW_WINDOW_FOCUS_EVENT=3 +---GLFW event window drop +RL.GLFW_WINDOW_DROP_EVENT=4 + +-- Defines - GLFW Input Events. + +---GLFW event keyboard key +RL.GLFW_KEY_EVENT=5 +---GLFW event Unicode character +RL.GLFW_CHAR_EVENT=6 +---GLFW event mouse button +RL.GLFW_MOUSE_BUTTON_EVENT=7 +---GLFW event cursor position +RL.GLFW_MOUSE_CURSOR_POS_EVENT=8 +---GLFW event mouse scroll +RL.GLFW_MOUSE_SCROLL_EVENT=9 +---GLFW event cursor enter/leave +RL.GLFW_CURSOR_ENTER_EVENT=10 +---GLFW event joystick +RL.GLFW_JOYSTICK_EVENT=11 + +-- Defines - GLFW Pen Tablet Events. NOTE! Experimental. Needs glfw PR https://github.com/glfw/glfw/pull/1445. + +---// GLFW event pen tablet data +RL.assignGlobalInt=nil +---// GLFW event pen tablet cursor +RL.assignGlobalInt=nil +---// GLFW event pen tablet proximity +RL.assignGlobalInt=nil +-- Core - Window-related functions + +---Initialize window and OpenGL context. Note! Should be called only in RL.config. +---InitWindow will still be called automatically before RL.init +---@param size table +---@param title string +---@return any RL.InitWindow +function RL.InitWindow( size, title ) end + +---Close window and unload OpenGL context and free all resources +---@return any RL.CloseWindow +function RL.CloseWindow() end + +---Check if application should close (KEY_ESCAPE pressed or windows close icon clicked). +---Note! Not needed unless you want to make custom main loop +---@return any RL.WindowShouldClose +function RL.WindowShouldClose() end + +---Check if window has been initialized successfully +---- Success return bool +---@return any state +function RL.IsWindowReady() end + +---Check if window is currently fullscreen +---- Success return bool +---@return any state +function RL.IsWindowFullscreen() end + +---Check if window is currently hidden (only PLATFORM_DESKTOP) +---- Success return bool +---@return any state +function RL.IsWindowHidden() end + +---Check if window is currently minimized (only PLATFORM_DESKTOP) +---- Success return bool +---@return any state +function RL.IsWindowMinimized() end + +---Check if window is currently maximized (only PLATFORM_DESKTOP) +---- Success return bool +---@return any state +function RL.IsWindowMaximized() end + +---Check if window is currently focused (only PLATFORM_DESKTOP) +---- Success return bool +---@return any state +function RL.IsWindowFocused() end + +---Check if window has been resized from last frame +---- Success return bool +---@return any resized +function RL.IsWindowResized() end + +---Check if one specific window flag is enabled (FLAG_FULLSCREEN_MODE, FLAG_WINDOW_RESIZABLE...) +---- Success return bool +---@param flag integer +---@return any state +function RL.IsWindowState( flag ) end + +---Set window configuration state using flags (FLAG_FULLSCREEN_MODE, FLAG_WINDOW_RESIZABLE...) +---@param flag integer +---@return any RL.SetWindowState +function RL.SetWindowState( flag ) end + +---Clear window configuration state flags (FLAG_FULLSCREEN_MODE, FLAG_WINDOW_RESIZABLE...) +---- Success return bool +---@param flag integer +---@return any resized +function RL.ClearWindowState( flag ) end + +---Toggle window state: fullscreen/windowed, resizes monitor to match window resolution +---@return any RL.ToggleFullscreen +function RL.ToggleFullscreen() end + +---Toggle window state: borderless windowed, resizes window to match monitor resolution +---@return any RL.ToggleBorderlessWindowed +function RL.ToggleBorderlessWindowed() end + +---Set window state: maximized, if resizable (only PLATFORM_DESKTOP) +---@return any RL.MaximizeWindow +function RL.MaximizeWindow() end + +---Set window state: minimized, if resizable (only PLATFORM_DESKTOP) +---@return any RL.MinimizeWindow +function RL.MinimizeWindow() end + +---Set window state: not minimized/maximized (only PLATFORM_DESKTOP) +---@return any RL.RestoreWindow +function RL.RestoreWindow() end + +---Set icon for window (Only PLATFORM_DESKTOP) +---@param image any +---@return any RL.SetWindowIcon +function RL.SetWindowIcon( image ) end + +---Set icon for window (multiple images, RGBA 32bit, only PLATFORM_DESKTOP) +---@param images table +---@return any RL.SetWindowIcons +function RL.SetWindowIcons( images ) end + +---Set title for window (only PLATFORM_DESKTOP and PLATFORM_WEB) +---@param title string +---@return any RL.SetWindowTitle +function RL.SetWindowTitle( title ) end + +---Set window position on screen +---@param pos table +---@return any RL.SetWindowPosition +function RL.SetWindowPosition( pos ) end + +---Set monitor for the current window +---@param monitor integer +---@return any RL.SetWindowMonitor +function RL.SetWindowMonitor( monitor ) end + +---Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE) +---@param size table +---@return any RL.SetWindowMinSize +function RL.SetWindowMinSize( size ) end + +---Set window maximum dimensions (for FLAG_WINDOW_RESIZABLE) +---@param size table +---@return any RL.SetWindowMaxSize +function RL.SetWindowMaxSize( size ) end + +---Set window dimensions +---@param size table +---@return any RL.SetWindowSize +function RL.SetWindowSize( size ) end + +---Set window opacity [0.0f..1.0f] (only PLATFORM_DESKTOP) +---@param opacity number +---@return any RL.SetWindowOpacity +function RL.SetWindowOpacity( opacity ) end + +---Set window focused (only PLATFORM_DESKTOP) +---@return any RL.SetWindowFocused +function RL.SetWindowFocused() end + +---Get native window handle. Return as lightuserdata +---- Success return lightuserdata +---@return any windowHandle +function RL.GetWindowHandle() end + +---Get screen size +---- Success return Vector2 +---@return any size +function RL.GetScreenSize() end + +---Get render size +---- Success return Vector2 +---@return any size +function RL.GetRenderSize() end + +---Get number of connected monitors +---- Success return int +---@return any count +function RL.GetMonitorCount() end + +---Get current connected monitor +---- Success return int +---@return any monitor +function RL.GetCurrentMonitor() end + +---Get specified monitor position +---- Success return Vector2 +---@param monitor integer +---@return any position +function RL.GetMonitorPosition( monitor ) end + +---Get specified monitor size +---- Success return Vector2 +---@param monitor integer +---@return any size +function RL.GetMonitorSize( monitor ) end + +---Get specified monitor physical size in millimetres +---- Success return Vector2 +---@param monitor integer +---@return any size +function RL.GetMonitorPhysicalSize( monitor ) end + +---Get specified monitor refresh rate +---- Success return int +---@param monitor integer +---@return any refreshRate +function RL.GetMonitorRefreshRate( monitor ) end + +---Get window position on monitor +---- Success return Vector2 +---@return any position +function RL.GetWindowPosition() end + +---Get window scale DPI factor +---- Success return Vector2 +---@return any dpi +function RL.GetWindowScaleDPI() end + +---Get the human-readable, UTF-8 encoded name of the specified monitor +---- Success return string +---@param monitor integer +---@return any name +function RL.GetMonitorName( monitor ) end + +---Set clipboard text content +---@param text string +---@return any RL.SetClipboardText +function RL.SetClipboardText( text ) end + +---Get clipboard text content +---- Success return string +---@return any text +function RL.GetClipboardText() end + +---Get clipboard image content +---- Success return Image +---@return any image +function RL.GetClipboardImage() end + +---Enable waiting for events on EndDrawing(), no automatic event polling +---@return any RL.EnableEventWaiting +function RL.EnableEventWaiting() end + +---Disable waiting for events on EndDrawing(), automatic events polling +---@return any RL.DisableEventWaiting +function RL.DisableEventWaiting() end + +-- Core - Cursor-related functions + +---Shows cursor +---@return any RL.ShowCursor +function RL.ShowCursor() end + +---Hides cursor +---@return any RL.HideCursor +function RL.HideCursor() end + +---Check if cursor is not visible +---- Success return bool +---@return any hidden +function RL.IsCursorHidden() end + +---Enables cursor (unlock cursor) +---@return any RL.EnableCursor +function RL.EnableCursor() end + +---Disables cursor (lock cursor) +---@return any RL.DisableCursor +function RL.DisableCursor() end + +---Check if cursor is on the screen +---- Success return bool +---@return any onSreen +function RL.IsCursorOnScreen() end + +-- Core - Drawing-related functions + +---Set background color (framebuffer clear color) +---@param color table +---@return any RL.ClearBackground +function RL.ClearBackground( color ) end + +---Setup canvas (framebuffer) to start drawing +---@return any RL.BeginDrawing +function RL.BeginDrawing() end + +---End canvas drawing and swap buffers (double buffering) +---@return any RL.EndDrawing +function RL.EndDrawing() end + +---Begin 2D mode with custom camera (2D) +---@param camera any +---@return any RL.BeginMode2D +function RL.BeginMode2D( camera ) end + +---Ends 2D mode with custom camera +---@return any RL.EndMode2D +function RL.EndMode2D() end + +---Begin 3D mode with custom camera (3D) +---@param camera any +---@return any RL.BeginMode3D +function RL.BeginMode3D( camera ) end + +---Ends 3D mode and returns to default 2D orthographic mode +---@return any RL.EndMode3D +function RL.EndMode3D() end + +---Begin drawing to render texture +---@param target any +---@return any RL.BeginTextureMode +function RL.BeginTextureMode( target ) end + +---Ends drawing to render texture +---@return any RL.EndTextureMode +function RL.EndTextureMode() end + +---Begin custom shader drawing +---@param shader any +---@return any RL.BeginShaderMode +function RL.BeginShaderMode( shader ) end + +---End custom shader drawing (use default shader) +---@return any RL.EndShaderMode +function RL.EndShaderMode() end + +---Begin blending mode (BLEND_ALPHA, BLEND_ADDITIVE, BLEND_MULTIPLIED...) +---@param mode integer +---@return any RL.BeginBlendMode +function RL.BeginBlendMode( mode ) end + +---End blending mode (reset to default: BLEND_ALPHA) +---@return any RL.EndBlendMode +function RL.EndBlendMode() end + +---Begin scissor mode (define screen area for following drawing) +---@param rectange table +---@return any RL.BeginScissorMode +function RL.BeginScissorMode( rectange ) end + +---End scissor mode +---@return any RL.EndScissorMode +function RL.EndScissorMode() end + +-- Core - Shader management functions + +---Load shader from files and bind default locations. +---NOTE: Set nil if no shader +---- Failure return nil +---- Success return Shader +---@param vsFileName string|nil +---@param fsFileName string|nil +---@return any shader +function RL.LoadShader( vsFileName, fsFileName ) end + +---Load shader from code strings and bind default locations +---NOTE: Set nil if no shader +---- Failure return nil +---- Success return Shader +---@param vsCode string|nil +---@param fsCode string|nil +---@return any shader +function RL.LoadShaderFromMemory( vsCode, fsCode ) end + +---Check if a shader is valid (loaded on GPU) +---- Success return bool +---@param shader any +---@return any isValid +function RL.IsShaderValid( shader ) end + +---Get shader program id +---- Success return int +---@param shader any +---@return any shaderId +function RL.GetShaderId( shader ) end + +---Get shader uniform location +---- Success return int +---@param shader any +---@param uniformName string +---@return any location +function RL.GetShaderLocation( shader, uniformName ) end + +---Get shader attribute location +---- Success return int +---@param shader any +---@param attribName string +---@return any location +function RL.GetShaderLocationAttrib( shader, attribName ) end + +---Set shader location index +---@param shader any +---@param shaderLocationIndex integer +---@param location integer +---@return any RL.SetShaderLocationIndex +function RL.SetShaderLocationIndex( shader, shaderLocationIndex, location ) end + +---Get shader location index +---- Success return int +---@param shader any +---@param shaderLocationIndex integer +---@return any location +function RL.GetShaderLocationIndex( shader, shaderLocationIndex ) end + +---Set shader uniform value (matrix 4x4) +---@param shader any +---@param locIndex integer +---@param mat table +---@return any RL.SetShaderValueMatrix +function RL.SetShaderValueMatrix( shader, locIndex, mat ) end + +---Set shader uniform value for texture (sampler2d) +---@param shader any +---@param locIndex integer +---@param texture any +---@return any RL.SetShaderValueTexture +function RL.SetShaderValueTexture( shader, locIndex, texture ) end + +---Set shader uniform value +---NOTE: Even one value should be in table +---@param shader any +---@param locIndex integer +---@param values table +---@param uniformType integer +---@return any RL.SetShaderValue +function RL.SetShaderValue( shader, locIndex, values, uniformType ) end + +---Set shader uniform value vector +---NOTE: Even one value should be in table +---@param shader any +---@param locIndex integer +---@param values table +---@param uniformType integer +---@param count integer +---@return any RL.SetShaderValueV +function RL.SetShaderValueV( shader, locIndex, values, uniformType, count ) end + +---Set shader uniform value using Buffer object +---@param shader any +---@param locIndex integer +---@param values any +---@param uniformType integer +---@return any RL.SetShaderValueWithBuffer +function RL.SetShaderValueWithBuffer( shader, locIndex, values, uniformType ) end + +---Set shader uniform value vector using Buffer object +---@param shader any +---@param locIndex integer +---@param values any +---@param uniformType integer +---@param count integer +---@return any RL.SetShaderValueVWithBuffer +function RL.SetShaderValueVWithBuffer( shader, locIndex, values, uniformType, count ) end + +---Unload shader from GPU memory (VRAM) +---@param shader any +---@return any RL.UnloadShader +function RL.UnloadShader( shader ) end + +-- Core - Screen-space-related functions + +---Get a ray trace from screen position (i.e mouse) +---- Success return Ray +---@param mousePosition table +---@param camera any +---@return any ray +function RL.GetScreenToWorldRay( mousePosition, camera ) end + +---Get a ray trace from screen position (i.e mouse) in a viewport +---- Success return Ray +---@param mousePosition table +---@param camera any +---@param size table +---@return any ray +function RL.GetScreenToWorldRayEx( mousePosition, camera, size ) end + +---Get the screen space position for a 3d world space position +---- Success return Vector2 +---@param position table +---@param camera any +---@return any position +function RL.GetWorldToScreen( position, camera ) end + +---Get size position for a 3d world space position +---- Success return Vector2 +---@param position table +---@param camera any +---@param size table +---@return any position +function RL.GetWorldToScreenEx( position, camera, size ) end + +---Get the screen space position for a 2d camera world space position +---- Success return Vector2 +---@param position table +---@param camera any +---@return any position +function RL.GetWorldToScreen2D( position, camera ) end + +---Get the world space position for a 2d camera screen space position +---- Success return Vector2 +---@param position table +---@param camera any +---@return any position +function RL.GetScreenToWorld2D( position, camera ) end + +---Get camera transform matrix (view matrix) +---- Success return Matrix +---@param camera any +---@return any matrix +function RL.GetCameraMatrix( camera ) end + +---Get camera 2d transform matrix +---- Success return Matrix +---@param camera any +---@return any matrix +function RL.GetCameraMatrix2D( camera ) end + +-- Core - Timing-related functions + +---Set target FPS (maximum) +---@param fps integer +---@return any RL.SetTargetFPS +function RL.SetTargetFPS( fps ) end + +---Get time in seconds for last frame drawn (Delta time) +---- Success return float +---@return any delta +function RL.GetFrameTime() end + +---Get elapsed time in seconds since InitWindow() +---- Success return float +---@return any time +function RL.GetTime() end + +---Get current FPS +---- Success return int +---@return any FPS +function RL.GetFPS() end + +-- Core - Custom frame control functions + +---Swap back buffer with front buffer (screen drawing) +---@return any RL.SwapScreenBuffer +function RL.SwapScreenBuffer() end + +---Register all input events +---@return any RL.PollInputEvents +function RL.PollInputEvents() end + +---Wait for some time (halt program execution) +---@param seconds any +---@return any RL.WaitTime +function RL.WaitTime( seconds ) end + +-- Core - Random values generation functions + +---Set the seed for the random number generator +---@param seed integer +---@return any RL.SetRandomSeed +function RL.SetRandomSeed( seed ) end + +---Get a random value between min and max (both included) +---- Success return int +---@param min integer +---@param max integer +---@return any time +function RL.GetRandomValue( min, max ) end + +---Load random values sequence, no values repeated +---- Success return int{} +---@param count integer +---@param min integer +---@param max integer +---@return any sequence +function RL.LoadRandomSequence( count, min, max ) end + +-- Core - Misc + +---Takes a screenshot of current screen (filename extension defines format) +---@param fileName string +---@return any RL.TakeScreenshot +function RL.TakeScreenshot( fileName ) end + +---Setup init configuration flags (view FLAGS) +---@param flags integer +---@return any RL.SetConfigFlags +function RL.SetConfigFlags( flags ) end + +---Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...) +---@param logLevel integer +---@param text string +---@return any RL.TraceLog +function RL.TraceLog( logLevel, text ) end + +---Set the current threshold (minimum) log level +---@param logLevel integer +---@return any RL.SetTraceLogLevel +function RL.SetTraceLogLevel( logLevel ) end + +---Set the log level for bad function calls and invalid data formats. +---@param logLevel integer +---@return any RL.SetLogLevelInvalid +function RL.SetLogLevelInvalid( logLevel ) end + +---Get the log level for bad function calls and invalid data formats. +---- Success return int +---@return any logLevel +function RL.GetLogLevelInvalid() end + +---Open URL with default system browser (if available) +---@param url string +---@return any RL.OpenURL +function RL.OpenURL( url ) end + +---Check if Lua garbage collection is set to unload object data +---- Success return bool +---@return any enabled +function RL.IsGCUnloadEnabled() end + +---Set Lua garbage collection to unload object data +---@param enabled boolean +---@return any RL.SetGCUnload +function RL.SetGCUnload( enabled ) end + +---Get platform. Returns "Windows", "Linux", "FreeBSD", "OpenBSD", "Apple" or "Emscripten" +---- Success return string +---@return any platform +function RL.GetPlatform() end + +-- Core - Files management functions + +---Load file data as byte array (read). Buffer type is BUFFER_UNSIGNED_CHAR +---- Success return Buffer +---@param fileName string +---@return any buffer +function RL.LoadFileData( fileName ) end + +---Save data to file from byte array (write), returns true on success +---- Success return bool +---@param fileName string +---@param Buffer any +---@return any success +function RL.SaveFileData( fileName, Buffer ) end + +---Export data to code (.h), returns true on success +---- Success return bool +---@param buffer any +---@param fileName string +---@return any success +function RL.ExportDataAsCode( buffer, fileName ) end + +---Load text data from file (read) +---- Success return string +---@param fileName string +---@return any text +function RL.LoadFileText( fileName ) end + +---Save text data to file (write), returns true on success +---- Success return bool +---@param fileName string +---@param text string +---@return any success +function RL.SaveFileText( fileName, text ) end + +-- Core - Files system functions + +---Return game directory (where main.lua is located) +---- Success return string +---@return any path +function RL.GetBasePath() end + +---Check if file exists +---- Success return bool +---@param fileName string +---@return any fileExists +function RL.FileExists( fileName ) end + +---Check if a directory path exists +---- Success return bool +---@param dirPath string +---@return any dirExists +function RL.DirectoryExists( dirPath ) end + +---Check file extension (Including point: .png, .wav) +---- Success return bool +---@param fileName string +---@param ext string +---@return any hasFileExtension +function RL.IsFileExtension( fileName, ext ) end + +---Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h) +---- Success return int +---@param fileName string +---@return any length +function RL.GetFileLength( fileName ) end + +---Get pointer to extension for a filename string (Includes dot: '.png') +---- Success return string +---@param fileName string +---@return any extension +function RL.GetFileExtension( fileName ) end + +---Get pointer to filename for a path string +---- Success return string +---@param filePath string +---@return any fileName +function RL.GetFileName( filePath ) end + +---Get filename string without extension (Uses static string) +---- Success return string +---@param filePath string +---@return any fileName +function RL.GetFileNameWithoutExt( filePath ) end + +---Get full path for a given fileName with path (Uses static string) +---- Success return string +---@param filePath string +---@return any filePath +function RL.GetDirectoryPath( filePath ) end + +---Get previous directory path for a given path (Uses static string) +---- Success return string +---@param dirPath string +---@return any directory +function RL.GetPrevDirectoryPath( dirPath ) end + +---Get current working directory (Uses static string) +---- Success return string +---@return any directory +function RL.GetWorkingDirectory() end + +---Get the directory of the running application (uses static string) +---- Success return string +---@return any directory +function RL.GetApplicationDirectory() end + +---Create directories (including full path requested), returns 0 on success +---- Success return int +---@param dirPath string +---@return any success +function RL.MakeDirectory( dirPath ) end + +---Change working directory, return true on success +---- Success return bool +---@param directory string +---@return any success +function RL.ChangeDirectory( directory ) end + +---Check if a given path is a file or a directory +---- Success return bool +---@param path string +---@return any isFile +function RL.IsPathFile( path ) end + +---Check if fileName is valid for the platform/OS +---- Success return bool +---@param fileName string +---@return any isValid +function RL.IsFileNameValid( fileName ) end + +---Load directory filepaths +---- Success return string{} +---@param dirPath string +---@return any fileNames +function RL.LoadDirectoryFiles( dirPath ) end + +---Load directory filepaths with extension filtering and recursive directory scan +---- Success return string{} +---@param basePath string +---@param filter string|nil +---@param scanSubdirs boolean +---@return any fileNames +function RL.LoadDirectoryFilesEx( basePath, filter, scanSubdirs ) end + +---Check if a file has been dropped into window +---- Success return bool +---@return any iSFileDropped +function RL.IsFileDropped() end + +---Load dropped filepaths +---- Success return string{} +---@return any files +function RL.LoadDroppedFiles() end + +---Get file modification time (Last write time) +---- Success return int +---@param fileName string +---@return any time +function RL.GetFileModTime( fileName ) end + +-- Core - Compression/Encoding functionality + +---Compress data (DEFLATE algorithm) +---- Success return Buffer +---@param buffer any +---@return any compData +function RL.CompressData( buffer ) end + +---Decompress data (DEFLATE algorithm). +---- Success Buffer +---@param compData any +---@return any decompData +function RL.DecompressData( compData ) end + +---Encode data to Base64 string +---- Success return string, int +---@param data string +---@return any encodedData +---@return any outputSize +function RL.EncodeDataBase64( data ) end + +---Decode Base64 string data +---- Success return string, int +---@param data string +---@return any decodedData +---@return any outputSize +function RL.DecodeDataBase64( data ) end + +---Compute CRC32 hash code. +---- Failure return false +---- Success return int +---@param data any +---@return any code +function RL.ComputeCRC32( data ) end + +---Compute MD5 hash code, returns static int[4] (16 bytes). +---- Failure return false +---- Success return int{4} +---@param data any +---@return any code +function RL.ComputeMD5( data ) end + +---Compute SHA1 hash code, returns static int[5] (20 bytes). +---- Failure return false +---- Success return int{5} +---@param data any +---@return any code +function RL.ComputeSHA1( data ) end + +-- Core - Automation events functionality + +---Load automation events list from file, nil for empty list, capacity = MAX_AUTOMATION_EVENTS +---- Success return AutomationEventList +---@param fileName string|nil +---@return any eventList +function RL.LoadAutomationEventList( fileName ) end + +---Unload automation events list from file +---@param list any +---@return any RL.UnloadAutomationEventList +function RL.UnloadAutomationEventList( list ) end + +---Export automation events list as text file +---- Failure return false +---- Success return true +---@param fileName string +---@return any success +function RL.ExportAutomationEventList( fileName ) end + +---Set automation event list to record to +---@param list any +---@return any RL.SetAutomationEventList +function RL.SetAutomationEventList( list ) end + +---Set automation event internal base frame to start recording +---@param frame integer +---@return any RL.SetAutomationEventBaseFrame +function RL.SetAutomationEventBaseFrame( frame ) end + +---Start recording automation events (AutomationEventList must be set) +---@return any RL.StartAutomationEventRecording +function RL.StartAutomationEventRecording() end + +---Stop recording automation events +---@return any RL.StopAutomationEventRecording +function RL.StopAutomationEventRecording() end + +---Play a recorded automation event +---@param event any +---@return any RL.PlayAutomationEvent +function RL.PlayAutomationEvent( event ) end + +---Get automation event list capacity +---- Success return int +---@param list any +---@return any capacity +function RL.GetAutomationEventListCapacity( list ) end + +---Get automation event list count +---- Success return int +---@param list any +---@return any count +function RL.GetAutomationEventListCount( list ) end + +---Get automation event from automation event list. Return as lightuserdata +---- Failure return nil +---- Success return AutomationEvent +---@param list any +---@param index integer +---@return any event +function RL.GetAutomationEvent( list, index ) end + +---Get automation event frame +---- Success return int +---@param event any +---@return any frame +function RL.GetAutomationEventFrame( event ) end + +---Get automation event type +---- Success return int +---@param event any +---@return any type +function RL.GetAutomationEventType( event ) end + +---Get automation event params +---- Success return int{} +---@param event any +---@return any params +function RL.GetAutomationEventParams( event ) end + +-- Core - Input-related functions: keyboard + +---Detect if a key has been pressed once +---- Success return bool +---@param key integer +---@return any pressed +function RL.IsKeyPressed( key ) end + +---Check if a key has been pressed again (Only PLATFORM_DESKTOP) +---- Success return bool +---@param key integer +---@return any pressed +function RL.IsKeyPressedRepeat( key ) end + +---Detect if a key is being pressed +---- Success return bool +---@param key integer +---@return any pressed +function RL.IsKeyDown( key ) end + +---Detect if a key has been released once +---- Success return bool +---@param key integer +---@return any released +function RL.IsKeyReleased( key ) end + +---Check if a key is NOT being pressed +---- Success return bool +---@param key integer +---@return any released +function RL.IsKeyUp( key ) end + +---Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty +---- Success return int +---@return any keycode +function RL.GetKeyPressed() end + +---Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty +---- Success return int +---@return any unicode +function RL.GetCharPressed() end + +---Set a custom key to exit program (default is ESC) +---@param key integer +---@return any RL.SetExitKey +function RL.SetExitKey( key ) end + +-- Core - Input-related functions: gamepads + +---Detect if a gamepad is available +---- Success return bool +---@param gamepad integer +---@return any available +function RL.IsGamepadAvailable( gamepad ) end + +---Return gamepad internal name id +---- Success return string +---@param gamepad integer +---@return any name +function RL.GetGamepadName( gamepad ) end + +---Detect if a gamepad button has been pressed once +---- Success return bool +---@param gamepad integer +---@param button integer +---@return any pressed +function RL.IsGamepadButtonPressed( gamepad, button ) end + +---Detect if a gamepad button is being pressed +---- Success return bool +---@param gamepad integer +---@param button integer +---@return any pressed +function RL.IsGamepadButtonDown( gamepad, button ) end + +---Detect if a gamepad button has been released once +---- Success return bool +---@param gamepad integer +---@param button integer +---@return any released +function RL.IsGamepadButtonReleased( gamepad, button ) end + +---Check if a gamepad button is NOT being pressed +---- Success return bool +---@param gamepad integer +---@param button integer +---@return any notPressed +function RL.IsGamepadButtonUp( gamepad, button ) end + +---Get the last gamepad button pressed +---- Success return int +---@return any button +function RL.GetGamepadButtonPressed() end + +---Return gamepad axis count for a gamepad +---- Success return int +---@param gamepad integer +---@return any count +function RL.GetGamepadAxisCount( gamepad ) end + +---Return axis movement value for a gamepad axis +---- Success return float +---@param gamepad integer +---@param axis integer +---@return any value +function RL.GetGamepadAxisMovement( gamepad, axis ) end + +---Set internal gamepad mappings (SDL_GameControllerDB) +---- Success return int +---@param mappings string +---@return any result +function RL.SetGamepadMappings( mappings ) end + +---Set gamepad vibration for both motors (duration in seconds) +---@param gamepad integer +---@param leftMotor number +---@param rightMotor number +---@param duration number +---@return any RL.SetGamepadVibration +function RL.SetGamepadVibration( gamepad, leftMotor, rightMotor, duration ) end + +-- Core - Input-related functions: mouse + +---Detect if a mouse button has been pressed once +---- Success return bool +---@param button integer +---@return any pressed +function RL.IsMouseButtonPressed( button ) end + +---Detect if a mouse button is being pressed +---- Success return bool +---@param button integer +---@return any pressed +function RL.IsMouseButtonDown( button ) end + +---Detect if a mouse button has been released once +---- Success return bool +---@param button integer +---@return any released +function RL.IsMouseButtonReleased( button ) end + +---Check if a mouse button is NOT being pressed +---- Success return bool +---@param button integer +---@return any released +function RL.IsMouseButtonUp( button ) end + +---Returns mouse position +---- Success return Vector2 +---@return any position +function RL.GetMousePosition() end + +---Get mouse delta between frames +---- Success return Vector2 +---@return any position +function RL.GetMouseDelta() end + +---Set mouse position XY +---@param position table +---@return any RL.SetMousePosition +function RL.SetMousePosition( position ) end + +---Set mouse offset +---@param offset table +---@return any RL.SetMouseOffset +function RL.SetMouseOffset( offset ) end + +---Set mouse scaling +---@param scale table +---@return any RL.SetMouseScale +function RL.SetMouseScale( scale ) end + +---Get mouse offset +---- Success return Vector2 +---@return any offset +function RL.GetMouseOffset() end + +---Get mouse scale +---- Success return Vector2 +---@return any scale +function RL.GetMouseScale() end + +---Get mouse wheel movement for X or Y, whichever is larger +---- Success return float +---@return any movement +function RL.GetMouseWheelMove() end + +---Get mouse wheel movement for both X and Y +---- Success return Vector2 +---@return any movement +function RL.GetMouseWheelMoveV() end + +---Set mouse cursor +---@param cursor integer +---@return any RL.SetMouseCursor +function RL.SetMouseCursor( cursor ) end + +-- Core - Input-related functions: touch + +---Get touch position XY for a touch point index (relative to screen size) +---- Success return Vector2 +---@param index integer +---@return any position +function RL.GetTouchPosition( index ) end + +---Get touch point identifier for given index +---- Success return int +---@param index integer +---@return any id +function RL.GetTouchPointId( index ) end + +---Get touch point identifier for given index +---- Success return int +---@return any count +function RL.GetTouchPointCount() end + +-- Core - Input-related functions: gestures + +---Enable a set of gestures using flags +---@param int any +---@return any RL.SetGesturesEnabled +function RL.SetGesturesEnabled( int ) end + +---Check if a gesture have been detected +---- Success return bool +---@param gesture integer +---@return any detected +function RL.IsGestureDetected( gesture ) end + +---Get latest detected gesture +---- Success return int +---@return any gesture +function RL.GetGestureDetected() end + +---Get gesture hold time in milliseconds +---- Success return float +---@return any time +function RL.GetGestureHoldDuration() end + +---Get gesture drag vector +---- Success return Vector2 +---@return any vector +function RL.GetGestureDragVector() end + +---Get gesture drag angle +---- Success return float +---@return any angle +function RL.GetGestureDragAngle() end + +---Get gesture pinch delta +---- Success return Vector2 +---@return any vector +function RL.GetGesturePinchVector() end + +---Get gesture pinch angle +---- Success return float +---@return any angle +function RL.GetGesturePinchAngle() end + +-- Core - Camera2D System functions + +---Return camera2D set to default configuration +---- Success return Camera2D +---@return any camera2D +function RL.CreateCamera2D() end + +---Set camera target (rotation and zoom origin) +---@param camera any +---@param target table +---@return any RL.SetCamera2DTarget +function RL.SetCamera2DTarget( camera, target ) end + +---Set camera offset (displacement from target) +---@param camera any +---@param offset table +---@return any RL.SetCamera2DOffset +function RL.SetCamera2DOffset( camera, offset ) end + +---Set camera rotation in degrees +---@param camera any +---@param rotation number +---@return any RL.SetCamera2DRotation +function RL.SetCamera2DRotation( camera, rotation ) end + +---Set camera zoom (scaling), should be 1.0f by default +---@param camera any +---@param zoom number +---@return any RL.SetCamera2DZoom +function RL.SetCamera2DZoom( camera, zoom ) end + +---Get camera2D target +---- Success return Vector2 +---@param camera any +---@return any target +function RL.GetCamera2DTarget( camera ) end + +---Get camera2D offset +---- Success return Vector2 +---@param camera any +---@return any offset +function RL.GetCamera2DOffset( camera ) end + +---Get camera2D rotation +---- Success return float +---@param camera any +---@return any rotation +function RL.GetCamera2DRotation( camera ) end + +---Get camera2D zoom +---- Success return float +---@param camera any +---@return any zoom +function RL.GetCamera2DZoom( camera ) end + +-- Core - Camera3D System functions + +---Return camera3D id set to default configuration +---- Success return int +---@return any camera +function RL.CreateCamera3D() end + +---Set camera position (Remember to call "RL.UpdateCamera3D()" to apply changes) +---@param camera any +---@param position table +---@return any RL.SetCamera3DPosition +function RL.SetCamera3DPosition( camera, position ) end + +---Set camera target it looks-at +---@param camera any +---@param target table +---@return any RL.SetCamera3DTarget +function RL.SetCamera3DTarget( camera, target ) end + +---Set camera up vector (Rotation over it's axis) +---@param camera any +---@param up table +---@return any RL.SetCamera3DUp +function RL.SetCamera3DUp( camera, up ) end + +---Set camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic +---@param camera any +---@param fovy number +---@return any RL.SetCamera3DFovy +function RL.SetCamera3DFovy( camera, fovy ) end + +---Set camera projection mode (CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC) +---@param camera any +---@param projection integer +---@return any RL.SetCamera3DProjection +function RL.SetCamera3DProjection( camera, projection ) end + +---Get camera position +---- Success return Vector3 +---@param camera any +---@return any position +function RL.GetCamera3DPosition( camera ) end + +---Get camera target it looks-at +---- Success return Vector3 +---@param camera any +---@return any target +function RL.GetCamera3DTarget( camera ) end + +---Get camera up vector (Rotation over it's axis) +---- Success return Vector3 +---@param camera any +---@return any up +function RL.GetCamera3DUp( camera ) end + +---Get camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic +---- Success return float +---@param camera any +---@return any fovy +function RL.GetCamera3DFovy( camera ) end + +---Get camera projection mode +---- Success return int +---@param camera any +---@return any projection +function RL.GetCamera3DProjection( camera ) end + +---Returns the cameras forward vector (normalized) +---- Success return Vector3 +---@param camera any +---@return any forward +function RL.GetCamera3DForward( camera ) end + +---Returns the cameras up vector (normalized) +---Note: The up vector might not be perpendicular to the forward vector +---- Success return Vector3 +---@param camera any +---@return any up +function RL.GetCamera3DUpNormalized( camera ) end + +---Returns the cameras right vector (normalized) +---- Success return Vector3 +---@param camera any +---@return any right +function RL.GetCamera3DRight( camera ) end + +---Moves the camera in it's forward direction +---@param camera any +---@param distance number +---@param moveInWorldPlane boolean +---@return any RL.Camera3DMoveForward +function RL.Camera3DMoveForward( camera, distance, moveInWorldPlane ) end + +---Moves the camera in it's up direction +---@param camera any +---@param distance number +---@return any RL.Camera3DMoveUp +function RL.Camera3DMoveUp( camera, distance ) end + +---Moves the camera target in it's current right direction +---@param camera any +---@param distance number +---@param moveInWorldPlane boolean +---@return any RL.Camera3DMoveRight +function RL.Camera3DMoveRight( camera, distance, moveInWorldPlane ) end + +---Moves the camera position closer/farther to/from the camera target +---@param camera any +---@param delta number +---@return any RL.Camera3DMoveToTarget +function RL.Camera3DMoveToTarget( camera, delta ) end + +---Rotates the camera around it's up vector +---Yaw is "looking left and right" +---If rotateAroundTarget is false, the camera rotates around it's position +---Note: angle must be provided in radians +---@param camera any +---@param angle number +---@param rotateAroundTarget boolean +---@return any RL.Camera3DYaw +function RL.Camera3DYaw( camera, angle, rotateAroundTarget ) end + +---Rotates the camera around it's right vector, pitch is "looking up and down" +---- lockView prevents camera overrotation (aka "somersaults") +---- rotateAroundTarget defines if rotation is around target or around it's position +---- rotateUp rotates the up direction as well (typically only usefull in CAMERA_FREE) +---NOTE: angle must be provided in radians +---@param camera any +---@param angle number +---@param lockView boolean +---@param rotateAroundTarget boolean +---@param rotateUp boolean +---@return any RL.Camera3DPitch +function RL.Camera3DPitch( camera, angle, lockView, rotateAroundTarget, rotateUp ) end + +---Rotates the camera around it's forward vector +---Roll is "turning your head sideways to the left or right" +---Note: angle must be provided in radians +---@param camera any +---@param angle number +---@return any RL.Camera3DRoll +function RL.Camera3DRoll( camera, angle ) end + +---Returns the camera view matrix +---- Success return Matrix +---@param camera any +---@return any view +function RL.GetCamera3DViewMatrix( camera ) end + +---Returns the camera projection matrix +---- Success return Matrix +---@param camera any +---@param aspect number +---@return any projection +function RL.GetCamera3DProjectionMatrix( camera, aspect ) end + +---Update camera position for selected mode +---@param camera any +---@param mode integer +---@return any RL.UpdateCamera3D +function RL.UpdateCamera3D( camera, mode ) end + +---Update camera movement, movement/rotation values should be provided by user +---@param camera any +---@param movement table +---@param rotation table +---@param zoom number +---@return any RL.UpdateCamera3DPro +function RL.UpdateCamera3DPro( camera, movement, rotation, zoom ) end + +-- Core - Buffer management functions + +---Load Buffer. Type should be one of the Buffer types. Empty buffer will set data to NULL. +---- Success return Buffer +---@param buffer table +---@param type integer +---@return any buffer +function RL.LoadBuffer( buffer, type ) end + +---Load formatted buffer with all values set to 'value' +---- Success return Buffer +---@param length integer +---@param type integer +---@param value integer +---@return any buffer +function RL.LoadBufferFormatted( length, type, value ) end + +---Read buffer data from binary file +---- Failure return nil +---- Success return Buffer +---@param path string +---@param type integer +---@return any buffer +function RL.LoadBufferFromFile( path, type ) end + +---Read buffer data from string +---- Failure return nil +---- Success return Buffer +---@param buffer string +---@return any buffer +function RL.LoadBufferFromString( buffer ) end + +---Unload buffer data +---@param buffer any +---@return any RL.UnloadBuffer +function RL.UnloadBuffer( buffer ) end + +---Copy buffer data to another buffer. Size is in bytes +---@param dst any +---@param src any +---@param posDst integer +---@param posSrc integer +---@param size integer +---@return any RL.CopyBufferData +function RL.CopyBufferData( dst, src, posDst, posSrc, size ) end + +---Set buffer data value +---@param buffer any +---@param position integer +---@param values table +---@return any RL.SetBufferData +function RL.SetBufferData( buffer, position, values ) end + +---Swap buffer endianness from big endian to little endian and vice versa +---@param buffer any +---@return any RL.SwapBufferEndianness +function RL.SwapBufferEndianness( buffer ) end + +---Get buffer data as table in the format it was stored +---- Success return data{} +---@param buffer any +---@param position integer +---@param length integer +---@return any data +function RL.GetBufferData( buffer, position, length ) end + +---Get buffer as string +---- Success return string +---@param buffer any +---@return any string +function RL.GetBufferAsString( buffer ) end + +---Get buffer type +---- Success return int +---@param buffer any +---@return any type +function RL.GetBufferType( buffer ) end + +---Get buffer size in bytes +---- Success return int +---@param buffer any +---@return any size +function RL.GetBufferSize( buffer ) end + +---Get buffer element size in bytes +---- Success return int +---@param buffer any +---@return any size +function RL.GetBufferElementSize( buffer ) end + +---Get buffer element count +---- Success return int +---@param buffer any +---@return any length +function RL.GetBufferLength( buffer ) end + +---Write buffer data to binary file +---@param buffer any +---@param path string +---@return any RL.ExportBuffer +function RL.ExportBuffer( buffer, path ) end + +-- Shapes - Basic shapes drawing functions + +---Set texture and rectangle to be used on shapes drawing +---NOTE: It can be useful when using basic shapes and one single font, +---defining a font char white rectangle would allow drawing everything in a single draw call +---@param texture any +---@param source table +---@return any RL.SetShapesTexture +function RL.SetShapesTexture( texture, source ) end + +---Get texture that is used for shapes drawing. Return as lightuserdata +---- Success return Texture +---@return any texture +function RL.GetShapesTexture() end + +---Get texture source rectangle that is used for shapes drawing +---- Success return Rectangle +---@return any source +function RL.GetShapesTextureRectangle() end + +---Draw a pixel +---@param pos table +---@param color table +---@return any RL.DrawPixel +function RL.DrawPixel( pos, color ) end + +---Draw a line defining thickness +---@param startPos table +---@param endPos table +---@param thickness number +---@param color table +---@return any RL.DrawLine +function RL.DrawLine( startPos, endPos, thickness, color ) end + +---Draw lines sequence +---@param points table +---@param color table +---@return any RL.DrawLineStrip +function RL.DrawLineStrip( points, color ) end + +---Draw a line using cubic-bezier curves in-out +---@param startPos table +---@param endPos table +---@param thickness number +---@param color table +---@return any RL.DrawLineBezier +function RL.DrawLineBezier( startPos, endPos, thickness, color ) end + +---Draw a color-filled circle +---@param center table +---@param radius number +---@param color table +---@return any RL.DrawCircle +function RL.DrawCircle( center, radius, color ) end + +---Draw a piece of a circle +---@param center table +---@param radius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any RL.DrawCircleSector +function RL.DrawCircleSector( center, radius, startAngle, endAngle, segments, color ) end + +---Draw circle sector outline +---@param center table +---@param radius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any RL.DrawCircleSectorLines +function RL.DrawCircleSectorLines( center, radius, startAngle, endAngle, segments, color ) end + +---Draw a gradient-filled circle +---@param center table +---@param radius number +---@param color1 table +---@param color2 table +---@return any RL.DrawCircleGradient +function RL.DrawCircleGradient( center, radius, color1, color2 ) end + +---Draw circle outline +---@param center table +---@param radius number +---@param color table +---@return any RL.DrawCircleLines +function RL.DrawCircleLines( center, radius, color ) end + +---Draw ellipse +---@param center table +---@param radiusH number +---@param radiusV number +---@param color table +---@return any RL.DrawEllipse +function RL.DrawEllipse( center, radiusH, radiusV, color ) end + +---Draw ellipse outline +---@param center table +---@param radiusH number +---@param radiusV number +---@param color table +---@return any RL.DrawEllipseLines +function RL.DrawEllipseLines( center, radiusH, radiusV, color ) end + +---Draw ring +---@param center table +---@param innerRadius number +---@param outerRadius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any RL.DrawRing +function RL.DrawRing( center, innerRadius, outerRadius, startAngle, endAngle, segments, color ) end + +---Draw ring outline +---@param center table +---@param innerRadius number +---@param outerRadius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any RL.DrawRingLines +function RL.DrawRingLines( center, innerRadius, outerRadius, startAngle, endAngle, segments, color ) end + +---Draw a color-filled rectangle +---@param rec table +---@param color table +---@return any RL.DrawRectangle +function RL.DrawRectangle( rec, color ) end + +---Draw a color-filled rectangle with pro parameters +---@param rec table +---@param origin table +---@param rotation number +---@param color table +---@return any RL.DrawRectanglePro +function RL.DrawRectanglePro( rec, origin, rotation, color ) end + +---Draw a vertical-gradient-filled rectangle +---@param rectangle table +---@param color1 table +---@param color2 table +---@return any RL.DrawRectangleGradientV +function RL.DrawRectangleGradientV( rectangle, color1, color2 ) end + +---Draw a horizontal-gradient-filled rectangle +---@param rectangle table +---@param color1 table +---@param color2 table +---@return any RL.DrawRectangleGradientH +function RL.DrawRectangleGradientH( rectangle, color1, color2 ) end + +---Draw a gradient-filled rectangle with custom vertex colors +---@param rectangle table +---@param col1 table +---@param col2 table +---@param col3 table +---@param col4 table +---@return any RL.DrawRectangleGradientEx +function RL.DrawRectangleGradientEx( rectangle, col1, col2, col3, col4 ) end + +---Draw rectangle outline +---@param rec table +---@param color table +---@return any RL.DrawRectangleLines +function RL.DrawRectangleLines( rec, color ) end + +---Draw rectangle outline with extended parameters +---@param rec table +---@param lineThick integer +---@param color table +---@return any RL.DrawRectangleLinesEx +function RL.DrawRectangleLinesEx( rec, lineThick, color ) end + +---Draw rectangle with rounded edges +---@param rec table +---@param roundness number +---@param segments integer +---@param color table +---@return any RL.DrawRectangleRounded +function RL.DrawRectangleRounded( rec, roundness, segments, color ) end + +---Draw rectangle lines with rounded edges +---@param rec table +---@param roundness number +---@param segments integer +---@param color table +---@return any RL.DrawRectangleRoundedLines +function RL.DrawRectangleRoundedLines( rec, roundness, segments, color ) end + +---Draw rectangle with rounded edges outline +---@param rec table +---@param roundness number +---@param segments integer +---@param lineThick number +---@param color table +---@return any RL.DrawRectangleRoundedLinesEx +function RL.DrawRectangleRoundedLinesEx( rec, roundness, segments, lineThick, color ) end + +---Draw a color-filled triangle (Vertex in counter-clockwise order!) +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any RL.DrawTriangle +function RL.DrawTriangle( v1, v2, v3, color ) end + +---Draw triangle outline (Vertex in counter-clockwise order!) +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any RL.DrawTriangleLines +function RL.DrawTriangleLines( v1, v2, v3, color ) end + +---Draw a triangle fan defined by points (first vertex is the center) +---@param points table +---@param color table +---@return any RL.DrawTriangleFan +function RL.DrawTriangleFan( points, color ) end + +---Draw a triangle strip defined by points +---@param points table +---@param color table +---@return any RL.DrawTriangleStrip +function RL.DrawTriangleStrip( points, color ) end + +---Draw a regular polygon (Vector version) +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param color table +---@return any RL.DrawPoly +function RL.DrawPoly( center, sides, radius, rotation, color ) end + +---Draw a polygon outline of n sides +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param color table +---@return any RL.DrawPolyLines +function RL.DrawPolyLines( center, sides, radius, rotation, color ) end + +---Draw a polygon outline of n sides with extended parameters +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param lineThick number +---@param color table +---@return any RL.DrawPolyLinesEx +function RL.DrawPolyLinesEx( center, sides, radius, rotation, lineThick, color ) end + +-- Shapes - Splines drawing functions + +---Draw spline: Linear, minimum 2 points +---@param points table +---@param thick number +---@param color table +---@return any RL.DrawSplineLinear +function RL.DrawSplineLinear( points, thick, color ) end + +---Draw spline: B-Spline, minimum 4 points +---@param points table +---@param thick number +---@param color table +---@return any RL.DrawSplineBasis +function RL.DrawSplineBasis( points, thick, color ) end + +---Draw spline: Catmull-Rom, minimum 4 points +---@param points table +---@param thick number +---@param color table +---@return any RL.DrawSplineCatmullRom +function RL.DrawSplineCatmullRom( points, thick, color ) end + +---Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...] +---@param points table +---@param thick number +---@param color table +---@return any RL.DrawSplineBezierQuadratic +function RL.DrawSplineBezierQuadratic( points, thick, color ) end + +---Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...] +---@param points table +---@param thick number +---@param color table +---@return any RL.DrawSplineBezierCubic +function RL.DrawSplineBezierCubic( points, thick, color ) end + +---Draw spline segment: Linear, 2 points +---@param p1 table +---@param p2 table +---@param thick number +---@param color table +---@return any RL.DrawSplineSegmentLinear +function RL.DrawSplineSegmentLinear( p1, p2, thick, color ) end + +---Draw spline segment: B-Spline, 4 points +---@param p1 table +---@param p2 table +---@param p3 table +---@param p4 table +---@param thick number +---@param color table +---@return any RL.DrawSplineSegmentBasis +function RL.DrawSplineSegmentBasis( p1, p2, p3, p4, thick, color ) end + +---Draw spline segment: Catmull-Rom, 4 points +---@param p1 table +---@param p2 table +---@param p3 table +---@param p4 table +---@param thick number +---@param color table +---@return any RL.DrawSplineSegmentCatmullRom +function RL.DrawSplineSegmentCatmullRom( p1, p2, p3, p4, thick, color ) end + +---Draw spline segment: Quadratic Bezier, 2 points, 1 control point +---@param p1 table +---@param c2 table +---@param p3 table +---@param thick number +---@param color table +---@return any RL.DrawSplineSegmentBezierQuadratic +function RL.DrawSplineSegmentBezierQuadratic( p1, c2, p3, thick, color ) end + +---Draw spline segment: Cubic Bezier, 2 points, 2 control points +---@param p1 table +---@param c2 table +---@param c3 table +---@param p4 table +---@param thick number +---@param color table +---@return any RL.DrawSplineSegmentBezierCubic +function RL.DrawSplineSegmentBezierCubic( p1, c2, c3, p4, thick, color ) end + +-- Shapes - Spline segment point evaluation functions, for a given t [0.0f .. 1.0f] + +---Get (evaluate) spline point: Linear +---- Success return Vector2 +---@param startPos table +---@param endPos table +---@param t number +---@return any point +function RL.GetSplinePointLinear( startPos, endPos, t ) end + +---Get (evaluate) spline point: B-Spline +---- Success return Vector2 +---@param p1 table +---@param p2 table +---@param p3 table +---@param p4 table +---@param t number +---@return any point +function RL.GetSplinePointBasis( p1, p2, p3, p4, t ) end + +---Get (evaluate) spline point: Catmull-Rom +---- Success return Vector2 +---@param p1 table +---@param p2 table +---@param p3 table +---@param p4 table +---@param t number +---@return any point +function RL.GetSplinePointCatmullRom( p1, p2, p3, p4, t ) end + +---Get (evaluate) spline point: Quadratic Bezier +---- Success return Vector2 +---@param p1 table +---@param c2 table +---@param p3 table +---@param t number +---@return any point +function RL.GetSplinePointBezierQuad( p1, c2, p3, t ) end + +---Get (evaluate) spline point: Cubic Bezier +---- Success return Vector2 +---@param p1 table +---@param c2 table +---@param c3 table +---@param p4 table +---@param t number +---@return any point +function RL.GetSplinePointBezierCubic( p1, c2, c3, p4, t ) end + +-- Shapes - Basic shapes collision detection functions + +---Check collision between two rectangles +---- Success return bool +---@param rec1 table +---@param rec2 table +---@return any collision +function RL.CheckCollisionRecs( rec1, rec2 ) end + +---Check collision between two circles +---- Success return bool +---@param center1 table +---@param radius1 number +---@param center2 table +---@param radius2 number +---@return any collision +function RL.CheckCollisionCircles( center1, radius1, center2, radius2 ) end + +---Check collision between circle and rectangle +---- Success return bool +---@param center table +---@param radius number +---@param rec table +---@return any collision +function RL.CheckCollisionCircleRec( center, radius, rec ) end + +---Check if circle collides with a line created betweeen two points [p1] and [p2] +---- Success return bool +---@param center table +---@param radius number +---@param p1 table +---@param p2 table +---@return any collision +function RL.CheckCollisionCircleLine( center, radius, p1, p2 ) end + +---Check if point is inside rectangle +---- Success return bool +---@param point table +---@param rec table +---@return any collision +function RL.CheckCollisionPointRec( point, rec ) end + +---Check if point is inside circle +---- Success return bool +---@param point table +---@param center table +---@param radius number +---@return any collision +function RL.CheckCollisionPointCircle( point, center, radius ) end + +---Check if point is inside a triangle +---- Success return bool +---@param point table +---@param p1 table +---@param p2 table +---@param p3 table +---@return any collision +function RL.CheckCollisionPointTriangle( point, p1, p2, p3 ) end + +---Check if point is within a polygon described by array of vertices +---- Success return bool +---@param point table +---@param points table +---@return any collision +function RL.CheckCollisionPointPoly( point, points ) end + +---Check the collision between two lines defined by two points each, returns collision point by reference +---- Success return bool, Vector2 +---@param startPos1 table +---@param endPos1 table +---@param startPos2 table +---@param endPos2 table +---@return any collision +---@return any position +function RL.CheckCollisionLines( startPos1, endPos1, startPos2, endPos2 ) end + +---Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold] +---- Success return bool +---@param point table +---@param p1 table +---@param p2 table +---@param threshold integer +---@return any collision +function RL.CheckCollisionPointLine( point, p1, p2, threshold ) end + +---Get collision rectangle for two rectangles collision +---- Success return Rectangle +---@param rec1 table +---@param rec2 table +---@return any rectangle +function RL.GetCollisionRec( rec1, rec2 ) end + +---Useful for e.g. packing rectangular textures into an atlas. stbrp_pack_rects +---- Success return Rectangle{} +---@param rects table +---@param size table +---@param padding integer +---@return any rects{} +function RL.RectPack( rects, size, padding ) end + +-- Textures - Image loading functions + +---Load image from file into CPU memory (RAM) +---- Failure return nil +---- Success return Image +---@param fileName string +---@return any image +function RL.LoadImage( fileName ) end + +---Load image from RAW file data +---- Failure return nil +---- Success return Image +---@param fileName string +---@param size table +---@param format integer +---@param headerSize integer +---@return any image +function RL.LoadImageRaw( fileName, size, format, headerSize ) end + +---Load image sequence from file (frames appended to image.data). All frames are returned in RGBA format +---- Failure return nil +---- Success return Image, int +---@param fileName string +---@return any image +---@return any frameCount +function RL.LoadImageAnim( fileName ) end + +---Load image sequence from memory buffer. All frames are returned in RGBA format +---- Success return Image, int +---@param fileType string +---@param fileData any +---@return any image +---@return any frameCount +function RL.LoadImageAnimFromMemory( fileType, fileData ) end + +---Load image from memory buffer, fileType refers to extension: i.e. '.png' +---- Success return Image +---@param fileType string +---@param data any +---@return any image +---@return any frameCount +function RL.LoadImageFromMemory( fileType, data ) end + +---Load image from data +---- Success return Image +---@param data any +---@param size table +---@param mipmaps integer +---@param format integer +---@return any image +---@return any frameCount +function RL.LoadImageFromData( data, size, mipmaps, format ) end + +---Load image from GPU texture data +---- Success return Image +---@param texture any +---@return any image +function RL.LoadImageFromTexture( texture ) end + +---Load image from screen buffer and (screenshot) +---- Success return Image +---@return any image +function RL.LoadImageFromScreen() end + +---Check if an image is valid (data and parameters) +---- Success return bool +---@param image any +---@return any isValid +function RL.IsImageValid( image ) end + +---Unload image from CPU memory (RAM) +---@param image any +---@return any RL.UnloadImage +function RL.UnloadImage( image ) end + +---Export image data to file, returns true on success +---- Success return bool +---@param image any +---@param fileName string +---@return any success +function RL.ExportImage( image, fileName ) end + +---Export image to memory buffer +---- Success return Buffer +---@param image any +---@param fileType string +---@return any buffer +function RL.ExportImageToMemory( image, fileType ) end + +---Export image as code file defining an array of bytes, returns true on success +---- Success return bool +---@param image any +---@param fileName string +---@return any success +function RL.ExportImageAsCode( image, fileName ) end + +-- Textures - Image generation functions + +---Generate image: plain color +---- Success return Image +---@param size table +---@param color table +---@return any image +function RL.GenImageColor( size, color ) end + +---Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient +---- Success return Image +---@param size table +---@param direction integer +---@param a table +---@param b table +---@return any image +function RL.GenImageGradientLinear( size, direction, a, b ) end + +---Generate image: radial gradient +---- Success return Image +---@param size table +---@param density number +---@param inner table +---@param outer table +---@return any image +function RL.GenImageGradientRadial( size, density, inner, outer ) end + +---Generate image: square gradient +---- Success return Image +---@param size table +---@param density number +---@param inner table +---@param outer table +---@return any image +function RL.GenImageGradientSquare( size, density, inner, outer ) end + +---Generate image: checked +---- Success return Image +---@param size table +---@param checks table +---@param col1 table +---@param col2 table +---@return any image +function RL.GenImageChecked( size, checks, col1, col2 ) end + +---Generate image: white noise +---- Success return Image +---@param size table +---@param factor number +---@return any image +function RL.GenImageWhiteNoise( size, factor ) end + +---Generate image: perlin noise +---- Success return Image +---@param size table +---@param offset table +---@param factor number +---@return any image +function RL.GenImagePerlinNoise( size, offset, factor ) end + +---Generate image: cellular algorithm. Bigger tileSize means bigger cells +---- Success return Image +---@param size table +---@param tileSize integer +---@return any image +function RL.GenImageCellular( size, tileSize ) end + +---Generate image: grayscale image from text data +---- Success return Image +---@param size table +---@param text string +---@return any image +function RL.GenImageText( size, text ) end + +-- Textures - Image manipulation functions + +---Create an image duplicate (useful for transformations) +---- Success return Image +---@param image any +---@return any image +function RL.ImageCopy( image ) end + +---Create an image from another image piece +---- Success return Image +---@param image any +---@param rec table +---@return any image +function RL.ImageFromImage( image, rec ) end + +---Create an image from a selected channel of another image (GRAYSCALE) +---- Success return Image +---@param image any +---@param selectedChannel integer +---@return any image +function RL.ImageFromChannel( image, selectedChannel ) end + +---Create an image from text (default font) +---- Success return Image +---@param text string +---@param fontSize integer +---@param tint table +---@return any image +function RL.ImageText( text, fontSize, tint ) end + +---Create an image from text (custom sprite font) +---- Success return Image +---@param font any +---@param text string +---@param fontSize number +---@param spacing number +---@param tint table +---@return any image +function RL.ImageTextEx( font, text, fontSize, spacing, tint ) end + +---Convert image data to desired format +---@param image any +---@param newFormat integer +---@return any RL.ImageFormat +function RL.ImageFormat( image, newFormat ) end + +---Convert image to POT (power-of-two) +---@param image any +---@param fill table +---@return any RL.ImageToPOT +function RL.ImageToPOT( image, fill ) end + +---Crop an image to a defined rectangle +---@param image any +---@param crop table +---@return any RL.ImageCrop +function RL.ImageCrop( image, crop ) end + +---Crop image depending on alpha value +---@param image any +---@param threshold number +---@return any RL.ImageAlphaCrop +function RL.ImageAlphaCrop( image, threshold ) end + +---Clear alpha channel to desired color +---@param image any +---@param color table +---@param threshold number +---@return any RL.ImageAlphaClear +function RL.ImageAlphaClear( image, color, threshold ) end + +---Apply alpha mask to image +---@param image any +---@param alphaMask any +---@return any RL.ImageAlphaMask +function RL.ImageAlphaMask( image, alphaMask ) end + +---Premultiply alpha channel +---@param image any +---@return any RL.ImageAlphaPremultiply +function RL.ImageAlphaPremultiply( image ) end + +---Apply Gaussian blur using a box blur approximation +---@param image any +---@param blurSize integer +---@return any RL.ImageBlurGaussian +function RL.ImageBlurGaussian( image, blurSize ) end + +---Apply custom square convolution kernel to image +---@param image any +---@param kernel table +---@return any RL.ImageKernelConvolution +function RL.ImageKernelConvolution( image, kernel ) end + +---Resize image (Bicubic scaling algorithm) +---@param image any +---@param size table +---@return any RL.ImageResize +function RL.ImageResize( image, size ) end + +---Resize image (Nearest-Neighbor scaling algorithm) +---@param image any +---@param size table +---@return any RL.ImageResizeNN +function RL.ImageResizeNN( image, size ) end + +---Resize canvas and fill with color +---@param image any +---@param size table +---@param offset table +---@param fill table +---@return any RL.ImageResizeCanvas +function RL.ImageResizeCanvas( image, size, offset, fill ) end + +---Generate all mipmap levels for a provided image +---@param image any +---@return any RL.ImageMipmaps +function RL.ImageMipmaps( image ) end + +---Dither image data to 16bpp or lower (Floyd-Steinberg dithering) +---@param image any +---@param bpp table +---@return any RL.ImageDither +function RL.ImageDither( image, bpp ) end + +---Flip image vertically +---@param image any +---@return any RL.ImageFlipVertical +function RL.ImageFlipVertical( image ) end + +---Flip image horizontally +---@param image any +---@return any RL.ImageFlipHorizontal +function RL.ImageFlipHorizontal( image ) end + +---Rotate image by input angle in degrees (-359 to 359) +---@param image any +---@param degrees integer +---@return any RL.ImageRotate +function RL.ImageRotate( image, degrees ) end + +---Rotate image clockwise 90deg +---@param image any +---@return any RL.ImageRotateCW +function RL.ImageRotateCW( image ) end + +---Rotate image counter-clockwise 90deg +---@param image any +---@return any RL.ImageRotateCCW +function RL.ImageRotateCCW( image ) end + +---Modify image color: tint +---@param image any +---@param color table +---@return any RL.ImageColorTint +function RL.ImageColorTint( image, color ) end + +---Modify image color: invert +---@param image any +---@return any RL.ImageColorInvert +function RL.ImageColorInvert( image ) end + +---Modify image color: grayscale +---@param image any +---@return any RL.ImageColorGrayscale +function RL.ImageColorGrayscale( image ) end + +---Modify image color: contrast (-100 to 100) +---@param image any +---@param contrast number +---@return any RL.ImageColorContrast +function RL.ImageColorContrast( image, contrast ) end + +---Modify image color: brightness (-255 to 255) +---@param image any +---@param brightness integer +---@return any RL.ImageColorBrightness +function RL.ImageColorBrightness( image, brightness ) end + +---Modify image color: replace color +---@param image any +---@param color table +---@param replace table +---@return any RL.ImageColorReplace +function RL.ImageColorReplace( image, color, replace ) end + +---Load color data from image as a Color array (RGBA - 32bit) +---- Success return Color{} +---@param image any +---@return any colors +function RL.LoadImageColors( image ) end + +---Load colors palette from image as a Color array (RGBA - 32bit) +---- Success return Color{} +---@param image any +---@param maxPaletteSize integer +---@return any colors +function RL.LoadImagePalette( image, maxPaletteSize ) end + +---Get image alpha border rectangle +---- Success return Rectangle +---@param image any +---@param threshold number +---@return any rectangle +function RL.GetImageAlphaBorder( image, threshold ) end + +---Get image pixel color at (x, y) position +---- Success return Color +---@param image any +---@param pixelPos table +---@return any color +function RL.GetImageColor( image, pixelPos ) end + +-- Textures - Image configuration functions + +---Set image data from Buffer +---@param image any +---@param data any +---@return any RL.SetImageData +function RL.SetImageData( image, data ) end + +---Get image data as Buffer +---- Success return Buffer +---@param image any +---@return any imageData +function RL.GetImageData( image ) end + +---Get image size +---- Success return Vector2 +---@param image any +---@return any size +function RL.GetImageSize( image ) end + +---Get image mipmaps. Mipmap levels, 1 by default +---- Success return int +---@param image any +---@return any mipmaps +function RL.GetImageMipmaps( image ) end + +---Get image data format (PixelFormat type) +---- Success return int +---@param image any +---@return any format +function RL.GetImageFormat( image ) end + +-- Textures - Image drawing functions + +---Clear image background with given color +---@param dst any +---@param color table +---@return any RL.ImageClearBackground +function RL.ImageClearBackground( dst, color ) end + +---Draw pixel within an image +---@param dst any +---@param position table +---@param color table +---@return any RL.ImageDrawPixel +function RL.ImageDrawPixel( dst, position, color ) end + +---Draw line within an image +---@param dst any +---@param start table +---@param end table +---@param color table +---@return any RL.ImageDrawLine +function RL.ImageDrawLine( dst, start, end, color ) end + +---Draw a line defining thickness within an image +---@param dst any +---@param start table +---@param end table +---@param thick integer +---@param color table +---@return any RL.ImageDrawLineEx +function RL.ImageDrawLineEx( dst, start, end, thick, color ) end + +---Draw circle within an image +---@param dst any +---@param center table +---@param radius integer +---@param color table +---@return any RL.ImageDrawCircle +function RL.ImageDrawCircle( dst, center, radius, color ) end + +---Draw circle outline within an image +---@param dst any +---@param center table +---@param radius integer +---@param color table +---@return any RL.ImageDrawCircleLines +function RL.ImageDrawCircleLines( dst, center, radius, color ) end + +---Draw rectangle within an image +---@param dst any +---@param rec table +---@param color table +---@return any RL.ImageDrawRectangle +function RL.ImageDrawRectangle( dst, rec, color ) end + +---Draw rectangle lines within an image +---@param dst any +---@param rec table +---@param thick integer +---@param color table +---@return any RL.ImageDrawRectangleLines +function RL.ImageDrawRectangleLines( dst, rec, thick, color ) end + +---Draw triangle within an image +---@param dst any +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any RL.ImageDrawTriangle +function RL.ImageDrawTriangle( dst, v1, v2, v3, color ) end + +---Draw triangle with interpolated colors within an image +---@param dst any +---@param v1 table +---@param v2 table +---@param v3 table +---@param c1 table +---@param c2 table +---@param c3 table +---@return any RL.ImageDrawTriangleEx +function RL.ImageDrawTriangleEx( dst, v1, v2, v3, c1, c2, c3 ) end + +---Draw triangle outline within an image +---@param dst any +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any RL.ImageDrawTriangleLines +function RL.ImageDrawTriangleLines( dst, v1, v2, v3, color ) end + +---Draw a triangle fan defined by points within an image (first vertex is the center) +---@param dst any +---@param points table +---@param color table +---@return any RL.ImageDrawTriangleFan +function RL.ImageDrawTriangleFan( dst, points, color ) end + +---Draw a triangle strip defined by points within an image +---@param dst any +---@param points table +---@param color table +---@return any RL.ImageDrawTriangleStrip +function RL.ImageDrawTriangleStrip( dst, points, color ) end + +---Draw a source image within a destination image (Tint applied to source) +---@param dst any +---@param src any +---@param srcRec table +---@param dstRec table +---@param tint table +---@return any RL.ImageDraw +function RL.ImageDraw( dst, src, srcRec, dstRec, tint ) end + +---Draw text (using default font) within an image (destination) +---@param dst any +---@param text string +---@param position table +---@param fontSize number +---@param tint table +---@return any RL.ImageDrawText +function RL.ImageDrawText( dst, text, position, fontSize, tint ) end + +---Draw text (Custom sprite font) within an image (Destination) +---@param dst any +---@param font any +---@param text string +---@param position table +---@param fontSize number +---@param spacing number +---@param tint table +---@return any RL.ImageDrawTextEx +function RL.ImageDrawTextEx( dst, font, text, position, fontSize, spacing, tint ) end + +-- Textures - Texture loading functions + +---Get default texture. Return as lightuserdata +---- Success return Texture +---@return any texture +function RL.GetTextureDefault() end + +---Load texture from file into GPU memory ( VRAM ) +---- Failure return nil +---- Success return Texture +---@param fileName string +---@return any texture +function RL.LoadTexture( fileName ) end + +---Load texture from image data +---- Success return Texture +---@param image any +---@return any texture +function RL.LoadTextureFromImage( image ) end + +---Load cubemap from image, multiple image cubemap layouts supported +---- Success return Texture +---@param image any +---@param layout integer +---@return any texture +function RL.LoadTextureCubemap( image, layout ) end + +---Load Texture from data +---- Success return Texture +---@param textureData table +---@return any texture +function RL.LoadTextureFromData( textureData ) end + +---Load texture for rendering (framebuffer) +---- Success return RenderTexture +---@param size table +---@return any renderTexture +function RL.LoadRenderTexture( size ) end + +---Load RenderTexture from data (framebuffer) +---- Success return RenderTexture +---@param renderTextureData table +---@return any renderTexture +function RL.LoadRenderTextureFromData( renderTextureData ) end + +---Check if a texture is valid (loaded in GPU) +---- Success return bool +---@param texture any +---@return any isValid +function RL.IsTextureValid( texture ) end + +---Unload texture from GPU memory (VRAM) +---@param texture any +---@return any RL.UnloadTexture +function RL.UnloadTexture( texture ) end + +---Check if a render texture is valid (loaded in GPU) +---- Success return bool +---@param target any +---@return any isValid +function RL.IsRenderTextureValid( target ) end + +---Unload render texture from GPU memory (VRAM) +---@param target any +---@return any RL.UnloadRenderTexture +function RL.UnloadRenderTexture( target ) end + +---Update GPU texture with new data +---@param texture any +---@param pixels any +---@return any RL.UpdateTexture +function RL.UpdateTexture( texture, pixels ) end + +---Update GPU texture rectangle with new data. +---@param texture any +---@param rec table +---@param pixels any +---@return any RL.UpdateTextureRec +function RL.UpdateTextureRec( texture, rec, pixels ) end + +-- Textures - Texture configuration functions + +---Generate GPU mipmaps for a texture +---@param texture any +---@return any RL.GenTextureMipmaps +function RL.GenTextureMipmaps( texture ) end + +---Set texture scaling filter mode (TEXTURE_FILTER_POINT, TEXTURE_FILTER_BILINEAR...) +---@param texture any +---@param filter integer +---@return any RL.SetTextureFilter +function RL.SetTextureFilter( texture, filter ) end + +---Set texture wrapping mode (TEXTURE_WRAP_REPEAT, TEXTURE_WRAP_CLAMP...) +---@param texture any +---@param wrap integer +---@return any RL.SetTextureWrap +function RL.SetTextureWrap( texture, wrap ) end + +---Get OpenGL texture id +---- Success return int +---@param texture any +---@return any id +function RL.GetTextureId( texture ) end + +---Get texture size +---- Success return Vector2 +---@param texture any +---@return any size +function RL.GetTextureSize( texture ) end + +---Get texture mipmaps. Mipmap levels, 1 by default +---- Success return int +---@param texture any +---@return any mipmaps +function RL.GetTextureMipmaps( texture ) end + +---Get texture data format (PixelFormat type) +---- Success return int +---@param texture any +---@return any format +function RL.GetTextureFormat( texture ) end + +-- Textures - Texture drawing functions + +---Draw a Texture2D +---@param texture any +---@param position table +---@param tint table +---@return any RL.DrawTexture +function RL.DrawTexture( texture, position, tint ) end + +---Draw a Texture2D with extended parameters +---@param texture any +---@param position table +---@param rotation number +---@param scale number +---@param tint table +---@return any RL.DrawTextureEx +function RL.DrawTextureEx( texture, position, rotation, scale, tint ) end + +---Draw a part of a texture defined by a rectangle +---@param texture any +---@param source table +---@param position table +---@param tint table +---@return any RL.DrawTextureRec +function RL.DrawTextureRec( texture, source, position, tint ) end + +---Draw a part of a texture defined by a rectangle with "pro" parameters +---@param texture any +---@param source table +---@param dest table +---@param origin table +---@param rotation number +---@param tint table +---@return any RL.DrawTexturePro +function RL.DrawTexturePro( texture, source, dest, origin, rotation, tint ) end + +---Draws a texture (or part of it) that stretches or shrinks nicely +---@param texture any +---@param nPatchInfo any +---@param dest table +---@param origin table +---@param rotation number +---@param tint table +---@return any RL.DrawTextureNPatch +function RL.DrawTextureNPatch( texture, nPatchInfo, dest, origin, rotation, tint ) end + +---Draws a texture (or part of it) that repeats nicely +---@param texture any +---@param nPatchInfo any +---@param dest table +---@param origin table +---@param rotation number +---@param tint table +---@return any RL.DrawTextureNPatchRepeat +function RL.DrawTextureNPatchRepeat( texture, nPatchInfo, dest, origin, rotation, tint ) end + +-- Textures - RenderTexture configuration functions + +---Get OpenGL framebuffer object id +---- Success return int +---@param renderTexture any +---@return any id +function RL.GetRenderTextureId( renderTexture ) end + +---Get color buffer attachment texture. Returns as lightuserdata +---- Success return Texture +---@param renderTexture any +---@return any texture +function RL.GetRenderTextureTexture( renderTexture ) end + +---Get depth buffer attachment texture. Returns as lightuserdata +---- Success return Texture +---@param renderTexture any +---@return any texture +function RL.GetRenderTextureDepthTexture( renderTexture ) end + +-- Textures - Color/pixel related functions + +---Check if two colors are equal +---- Success return bool +---@param col1 table +---@param col2 table +---@return any isEqual +function RL.ColorIsEqual( col1, col2 ) end + +---Returns color with alpha applied, alpha goes from 0.0f to 1.0f +---- Success return Color +---@param color table +---@param alpha number +---@return any color +function RL.Fade( color, alpha ) end + +---Returns hexadecimal value for a Color +---- Success return int +---@param color table +---@return any value +function RL.ColorToInt( color ) end + +---Returns Color normalized as float [0..1] +---- Success return Vector4 +---@param color table +---@return any color +function RL.ColorNormalize( color ) end + +---Color from normalized values [0..1] +---- Success return Color +---@param normalized table +---@return any color +function RL.ColorFromNormalized( normalized ) end + +---Returns HSV values for a Color, hue [0..360], saturation/value [0..1] +---- Success return Vector3 +---@param color table +---@return any HSV +function RL.ColorToHSV( color ) end + +---Returns a Color from HSV values, hue [0..360], saturation/value [0..1] +---- Success return Color +---@param hue number +---@param saturation number +---@param value number +---@return any color +function RL.ColorFromHSV( hue, saturation, value ) end + +---Get color multiplied with another color +---- Success return Color +---@param color table +---@param tint table +---@return any color +function RL.ColorTint( color, tint ) end + +---Get color with brightness correction, brightness factor goes from -1.0f to 1.0f +---- Success return Color +---@param color table +---@param factor number +---@return any color +function RL.ColorBrightness( color, factor ) end + +---Get color with contrast correction, contrast values between -1.0f and 1.0f +---- Success return Color +---@param color table +---@param contrast number +---@return any color +function RL.ColorContrast( color, contrast ) end + +---Returns color with alpha applied, alpha goes from 0.0f to 1.0f +---- Success return Color +---@param color table +---@param alpha number +---@return any color +function RL.ColorAlpha( color, alpha ) end + +---Returns src alpha-blended into dst color with tint +---- Success return Color +---@param dst table +---@param src table +---@param tint table +---@return any color +function RL.ColorAlphaBlend( dst, src, tint ) end + +---Get color lerp interpolation between two colors, factor [0.0f..1.0f] +---- Success return Color +---@param color1 table +---@param color2 table +---@param factor number +---@return any color +function RL.ColorLerp( color1, color2, factor ) end + +---Get Color structure from hexadecimal value +---- Success return Color +---@param hexValue integer +---@return any color +function RL.GetColor( hexValue ) end + +---Get pixel data size in bytes for certain format +---- Success return int +---@param size table +---@param format integer +---@return any size +function RL.GetPixelDataSize( size, format ) end + +-- Text - Font loading/unloading functions + +---Get the default Font. Return as lightuserdata +---- Success return Font +---@return any font +function RL.GetFontDefault() end + +---Load font from file into GPU memory (VRAM) +---- Failure return nil +---- Success return Font +---@param fileName string +---@return any font +function RL.LoadFont( fileName ) end + +---Load font from file with extended parameters, use NULL for codepoints to load the default character set +---- Failure return nil +---- Success return Font +---@param fileName string +---@param fontSize integer +---@param codepoints table|nil +---@return any font +function RL.LoadFontEx( fileName, fontSize, codepoints ) end + +---Load font from Image (XNA style) +---- Success return Font +---@param image any +---@param key table +---@param firstChar integer +---@return any font +function RL.LoadFontFromImage( image, key, firstChar ) end + +---Load font from memory buffer, fileType refers to extension: i.e. '.ttf'. NOTE: fileData type should be unsigned char +---- Success return Font +---@param fileType string +---@param fileData any +---@param fontSize integer +---@param codepoints table +---@return any font +function RL.LoadFontFromMemory( fileType, fileData, fontSize, codepoints ) end + +---Load Font from data +---- Success return Font +---@param fontData table +---@return any font +function RL.LoadFontFromData( fontData ) end + +---Load font copy as new userdata +---- Success return Font +---@param font any +---@return any font +function RL.FontCopy( font ) end + +---Check if a font is valid (font data loaded, WARNING: GPU texture not checked) +---- Success return bool +---@param font any +---@return any isValid +function RL.IsFontValid( font ) end + +---Load font data for further use. NOTE: fileData type should be unsigned char +---- Success return GlyphInfo{} +---@param fileData any +---@param fontSize integer +---@param codepoints table +---@param type integer +---@return any glyphs +function RL.LoadFontData( fileData, fontSize, codepoints, type ) end + +---Generate image font atlas using chars info. NOTE: Packing method: 0-Default, 1-Skyline +---- Success Image, Rectangle{} +---@param glyphs table +---@param fontSize integer +---@param padding integer +---@param packMethod integer +---@return any image +---@return any rectangles +function RL.GenImageFontAtlas( glyphs, fontSize, padding, packMethod ) end + +---Unload font from GPU memory (VRAM) +---@param font any +---@return any RL.UnloadFont +function RL.UnloadFont( font ) end + +---Export font as code file, returns true on success +---- Success return bool +---@param font any +---@param fileName string +---@return any RL.ExportFontAsCode +function RL.ExportFontAsCode( font, fileName ) end + +-- Text - Text drawing functions + +---Draw current FPS +---@param pos table +---@return any RL.DrawFPS +function RL.DrawFPS( pos ) end + +---Draw text (using default font) +---@param text string +---@param position table +---@param fontSize number +---@param tint table +---@return any RL.DrawText +function RL.DrawText( text, position, fontSize, tint ) end + +---Draw text using font and additional parameters +---@param font any +---@param text string +---@param position table +---@param fontSize number +---@param spacing number +---@param tint table +---@return any RL.DrawTextEx +function RL.DrawTextEx( font, text, position, fontSize, spacing, tint ) end + +---Draw text using Font and pro parameters (rotation) +---@param font any +---@param text string +---@param position table +---@param origin table +---@param rotation number +---@param fontSize number +---@param spacing number +---@param tint table +---@return any RL.DrawTextPro +function RL.DrawTextPro( font, text, position, origin, rotation, fontSize, spacing, tint ) end + +---Draw one character (codepoint) +---@param font any +---@param codepoint integer +---@param position table +---@param fontSize number +---@param tint table +---@return any RL.DrawTextCodepoint +function RL.DrawTextCodepoint( font, codepoint, position, fontSize, tint ) end + +---Draw multiple character (codepoint) +---@param font any +---@param codepoints table +---@param position table +---@param fontSize number +---@param spacing number +---@param tint table +---@return any RL.DrawTextCodepoints +function RL.DrawTextCodepoints( font, codepoints, position, fontSize, spacing, tint ) end + +---Draw text inside rectangle limits. Return character id from mouse position (default 0). +---textOffset can be used to set start position inside rectangle. Usefull to pass from previous +---DrawTextBoxed for continuous text. +---Support for tint change with "\a#FFFFFFFF" +---- Success return int, Vector2 +---@param font any +---@param text string +---@param rec table +---@param fontSize number +---@param spacing number +---@param wordWrap boolean +---@param tint table +---@param limitHeight boolean +---@param textOffset table|nil +---@param tabSize integer|nil +---@return any mouseCharId +---@return any textOffset +function RL.DrawTextBoxed( font, text, rec, fontSize, spacing, wordWrap, tint, limitHeight, textOffset, tabSize ) end + +-- Text - Text font info functions + +---Set vertical line spacing when drawing with line-breaks +---@param spacing integer +---@return any RL.SetTextLineSpacing +function RL.SetTextLineSpacing( spacing ) end + +---Get vertical line spacing when drawing with line-breaks +---- Success return int +---@return any spacing +function RL.GetTextLineSpacing() end + +---Measure string width for default font +---- Success return int +---@param text string +---@param fontSize integer +---@return any width +function RL.MeasureText( text, fontSize ) end + +---Measure string size for Font +---- Success return Vector2 +---@param font any +---@param text string +---@param fontSize number +---@param spacing number +---@return any size +function RL.MeasureTextEx( font, text, fontSize, spacing ) end + +---Measure text inside rectangle limits. +---- Success return Vector2, Vector2 +---@param font any +---@param text string +---@param rec table +---@param fontSize number +---@param spacing number +---@param wordWrap boolean +---@param tint table +---@param limitHeight boolean +---@param textOffset table +---@param tabSize integer|nil +---@return any size +---@return any textOffset +function RL.MeasureTextBoxed( font, text, rec, fontSize, spacing, wordWrap, tint, limitHeight, textOffset, tabSize ) end + +---Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found +---- Success return int +---@param font any +---@param codepoint integer +---@return any index +function RL.GetGlyphIndex( font, codepoint ) end + +---Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found. Return as lightuserdata +---- Success return GlyphInfo +---@param font any +---@param codepoint integer +---@return any glyphInfo +function RL.GetGlyphInfo( font, codepoint ) end + +---Get glyph font info data by index. Return as lightuserdata +---- Failure return nil +---- Success return GlyphInfo +---@param font any +---@param index integer +---@return any glyphInfo +function RL.GetGlyphInfoByIndex( font, index ) end + +---Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found +---- Success return Rectangle +---@param font any +---@param codepoint integer +---@return any rect +function RL.GetGlyphAtlasRec( font, codepoint ) end + +---Get glyph rectangle in font atlas by index +---- Failure return nil +---- Success return Rectangle +---@param font any +---@param index integer +---@return any rect +function RL.GetGlyphAtlasRecByIndex( font, index ) end + +---Get font base size (default chars height) +---- Success return int +---@param font any +---@return any baseSize +function RL.GetFontBaseSize( font ) end + +---Get font number of glyph characters +---- Success return int +---@param font any +---@return any glyphCount +function RL.GetFontGlyphCount( font ) end + +---Get font padding around the glyph characters +---- Success return int +---@param font any +---@return any glyphPadding +function RL.GetFontGlyphPadding( font ) end + +---Get font texture atlas containing the glyphs. Return as lightuserdata +---- Success return Texture +---@param font any +---@return any texture +function RL.GetFontTexture( font ) end + +-- Text - GlyphInfo management functions + +---Load GlyphInfo from data +---- Success return GlyphInfo +---@param glyphInfoData table +---@return any glyphInfo +function RL.LoadGlyphInfo( glyphInfoData ) end + +---Unload glyphInfo image from CPU memory (RAM) +---@param glyphInfo any +---@return any RL.UnloadGlyphInfo +function RL.UnloadGlyphInfo( glyphInfo ) end + +---Set glyphInfo character value (Unicode) +---@param glyphInfo any +---@param value integer +---@return any RL.SetGlyphInfoValue +function RL.SetGlyphInfoValue( glyphInfo, value ) end + +---Set glyphInfo character offset when drawing +---@param glyphInfo any +---@param offset table +---@return any RL.SetGlyphInfoOffset +function RL.SetGlyphInfoOffset( glyphInfo, offset ) end + +---Set glyphInfo character advance position X +---@param glyphInfo any +---@param advanceX integer +---@return any RL.SetGlyphInfoAdvanceX +function RL.SetGlyphInfoAdvanceX( glyphInfo, advanceX ) end + +---Set glyphInfo character image data +---@param glyphInfo any +---@param image any +---@return any RL.SetGlyphInfoImage +function RL.SetGlyphInfoImage( glyphInfo, image ) end + +---Get glyphInfo character value (Unicode) +---- Success return int +---@param glyphInfo any +---@return any value +function RL.GetGlyphInfoValue( glyphInfo ) end + +---Get glyphInfo character offset when drawing +---- Success return Vector2 +---@param glyphInfo any +---@return any offset +function RL.GetGlyphInfoOffset( glyphInfo ) end + +---Get glyphInfo character advance position X +---- Success return int +---@param glyphInfo any +---@return any advanceX +function RL.GetGlyphInfoAdvanceX( glyphInfo ) end + +---Get glyphInfo character image data. Return as lightuserdata +---- Success return Image +---@param glyphInfo any +---@return any image +function RL.GetGlyphInfoImage( glyphInfo ) end + +-- Text - Text codepoints management functions (unicode characters) + +---Load UTF-8 text encoded from codepoints array +---- Success return string +---@param codepoints table +---@return any string +function RL.LoadUTF8( codepoints ) end + +---Load all codepoints from a UTF-8 text string +---- Success return int{} +---@param text string +---@return any codepoints +function RL.LoadCodepoints( text ) end + +---Get total number of codepoints in a UTF-8 encoded string +---- Success return int +---@param text string +---@return any count +function RL.GetCodepointCount( text ) end + +---Get codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +---- Success return int, int +---@param text string +---@param position integer +---@return any codepoint +---@return any codepointSize +function RL.GetCodepoint( text, position ) end + +---Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +---- Success return int, int +---@param text string +---@param position integer +---@return any codepoint +---@return any codepointSize +function RL.GetCodepointNext( text, position ) end + +---Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure +---- Success return int, int +---@param text string +---@param position integer +---@return any codepoint +---@return any codepointSize +function RL.GetCodepointPrevious( text, position ) end + +---Encode one codepoint into UTF-8 byte array +---- Success return string +---@param codepoint integer +---@return any string +function RL.CodepointToUTF8( codepoint ) end + +-- Text - Text strings management functions (no UTF-8 strings, only byte chars) + +---Get a piece of a text string +---- Success return string +---@param text string +---@param position integer +---@param length integer +---@return any text +function RL.TextSubtext( text, position, length ) end + +---Replace text string +---- Success return string +---@param text string +---@param replace string +---@param by string +---@return any text +function RL.TextReplace( text, replace, by ) end + +---Insert text in a specific position, moves all text forward +---- Success return string +---@param text string +---@param insert string +---@param position integer +---@return any text +function RL.TextInsert( text, insert, position ) end + +---Split text into multiple strings +---- Success return string{} +---@param text string +---@param delimiter any +---@return any splits +function RL.TextSplit( text, delimiter ) end + +---Find first text occurrence within a string +---- Success return int +---@param text string +---@param find string +---@return any index +function RL.TextFindIndex( text, find ) end + +---Get Pascal case notation version of provided string +---- Success return string +---@param text string +---@return any text +function RL.TextToPascal( text ) end + +---Get Snake case notation version of provided string +---- Success return string +---@param text string +---@return any text +function RL.TextToSnake( text ) end + +---Get Camel case notation version of provided string +---- Success return string +---@param text string +---@return any text +function RL.TextToCamel( text ) end + +-- Models - Basic geometric 3D shapes drawing functions + +---Draw a line in 3D world space +---@param startPos table +---@param endPos table +---@param color table +---@return any RL.DrawLine3D +function RL.DrawLine3D( startPos, endPos, color ) end + +---Draw a point in 3D space, actually a small line +---@param position table +---@param color table +---@return any RL.DrawPoint3D +function RL.DrawPoint3D( position, color ) end + +---Draw a circle in 3D world space +---@param center table +---@param radius number +---@param rotationAxis table +---@param rotationAngle number +---@param color table +---@return any RL.DrawCircle3D +function RL.DrawCircle3D( center, radius, rotationAxis, rotationAngle, color ) end + +---Draw a color-filled triangle (Vertex in counter-clockwise order!) +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any RL.DrawTriangle3D +function RL.DrawTriangle3D( v1, v2, v3, color ) end + +---Draw a triangle strip defined by points +---@param points table +---@param color table +---@return any RL.DrawTriangleStrip3D +function RL.DrawTriangleStrip3D( points, color ) end + +---Draw cube +---@param position table +---@param size table +---@param color table +---@return any RL.DrawCube +function RL.DrawCube( position, size, color ) end + +---Draw cube wires +---@param position table +---@param size table +---@param color table +---@return any RL.DrawCubeWires +function RL.DrawCubeWires( position, size, color ) end + +---Draw sphere +---@param centerPos table +---@param radius number +---@param color table +---@return any RL.DrawSphere +function RL.DrawSphere( centerPos, radius, color ) end + +---Draw sphere with extended parameters +---@param centerPos table +---@param radius number +---@param rings integer +---@param slices integer +---@param color table +---@return any RL.DrawSphereEx +function RL.DrawSphereEx( centerPos, radius, rings, slices, color ) end + +---Draw sphere wires +---@param centerPos table +---@param radius number +---@param rings integer +---@param slices integer +---@param color table +---@return any RL.DrawSphereWires +function RL.DrawSphereWires( centerPos, radius, rings, slices, color ) end + +---Draw a cylinder/cone +---@param position table +---@param radiusTop number +---@param radiusBottom number +---@param height number +---@param slices integer +---@param color table +---@return any RL.DrawCylinder +function RL.DrawCylinder( position, radiusTop, radiusBottom, height, slices, color ) end + +---Draw a cylinder with base at startPos and top at endPos +---@param startPos table +---@param endPos table +---@param startRadius number +---@param endRadius number +---@param sides integer +---@param color table +---@return any RL.DrawCylinderEx +function RL.DrawCylinderEx( startPos, endPos, startRadius, endRadius, sides, color ) end + +---Draw a cylinder/cone wires +---@param position table +---@param radiusTop number +---@param radiusBottom number +---@param height number +---@param slices integer +---@param color table +---@return any RL.DrawCylinderWires +function RL.DrawCylinderWires( position, radiusTop, radiusBottom, height, slices, color ) end + +---Draw a cylinder wires with base at startPos and top at endPos +---@param startPos table +---@param endPos table +---@param startRadius number +---@param endRadius number +---@param sides integer +---@param color table +---@return any RL.DrawCylinderWiresEx +function RL.DrawCylinderWiresEx( startPos, endPos, startRadius, endRadius, sides, color ) end + +---Draw a capsule with the center of its sphere caps at startPos and endPos +---@param startPos table +---@param endPos table +---@param radius number +---@param slices integer +---@param rings integer +---@param color table +---@return any RL.DrawCapsule +function RL.DrawCapsule( startPos, endPos, radius, slices, rings, color ) end + +---Draw capsule wireframe with the center of its sphere caps at startPos and endPos +---@param startPos table +---@param endPos table +---@param radius number +---@param slices integer +---@param rings integer +---@param color table +---@return any RL.DrawCapsuleWires +function RL.DrawCapsuleWires( startPos, endPos, radius, slices, rings, color ) end + +---Draw a plane XZ +---@param centerPos table +---@param size table +---@param color table +---@return any RL.DrawPlane +function RL.DrawPlane( centerPos, size, color ) end + +---Draw 3D textured quad. (Texture coordinates opengl style 0.0 - 1.0) +---@param texture any +---@param vertices table +---@param texCoords table +---@param colors table +---@return any RL.DrawQuad3DTexture +function RL.DrawQuad3DTexture( texture, vertices, texCoords, colors ) end + +---Draw a ray line +---@param ray any +---@param color table +---@return any RL.DrawRay +function RL.DrawRay( ray, color ) end + +---Draw a grid (Centered at ( 0, 0, 0 )) +---@param slices integer +---@param spacing number +---@return any RL.DrawGrid +function RL.DrawGrid( slices, spacing ) end + +---Draw a grid with extended parameters. Optionally you can define divider with different color for every n slices +---@param slices table +---@param spacing table +---@param transform table +---@param color table +---@param divider table|nil +---@param dividerColor table|nil +---@return any RL.DrawGridEx +function RL.DrawGridEx( slices, spacing, transform, color, divider, dividerColor ) end + +-- Models - Model management functions + +---Load model from files (Meshes and materials) +---- Failure return nil +---- Success return Model +---@param fileName string +---@return any model +function RL.LoadModel( fileName ) end + +---Load model from generated mesh (Default material) +---- Success return Model +---@param mesh any +---@return any model +function RL.LoadModelFromMesh( mesh ) end + +---Check if a model is valid (loaded in GPU, VAO/VBOs) +---- Success return bool +---@param model any +---@return any isValid +function RL.IsModelValid( model ) end + +---Unload model (meshes/materials) from memory (RAM and/or VRAM) +---@param model any +---@return any RL.UnloadModel +function RL.UnloadModel( model ) end + +---Compute model bounding box limits (considers all meshes) +---- Success return BoundingBox +---@param model any +---@return any boundingBox +function RL.GetModelBoundingBox( model ) end + +---Set model transform matrix +---@param model any +---@param transform table +---@return any RL.SetModelTransform +function RL.SetModelTransform( model, transform ) end + +---Set model mesh. +---- Failure return false +---- Success return true +---@param model any +---@param meshId integer +---@param mesh any +---@return any success +function RL.SetModelMesh( model, meshId, mesh ) end + +---Set material to model material +---- Failure return false +---- Success return true +---@param model any +---@param materialId integer +---@param material any +---@return any success +function RL.SetModelMaterial( model, materialId, material ) end + +---Set material for a mesh (Mesh and material on this model) +---@param model any +---@param meshId integer +---@param materialId integer +---@return any RL.SetModelMeshMaterial +function RL.SetModelMeshMaterial( model, meshId, materialId ) end + +---Set model bone information (skeleton) +---- Failure return false +---- Success return true +---@param model any +---@param boneId integer +---@param bone any +---@return any success +function RL.SetModelBone( model, boneId, bone ) end + +---Set model bones base transformation (pose) +---- Failure return false +---- Success return true +---@param model any +---@param boneId integer +---@param pose any +---@return any success +function RL.SetModelBindPose( model, boneId, pose ) end + +---Get model transform matrix +---- Success return Matrix +---@param model any +---@return any transform +function RL.GetModelTransform( model ) end + +---Get model number of meshes +---- Success return int +---@param model any +---@return any meshCount +function RL.GetModelMeshCount( model ) end + +---Get model number of materials +---- Success return int +---@param model any +---@return any meshCount +function RL.GetModelMaterialCount( model ) end + +---Get model mesh. Return as lightuserdata +---- Failure return nil +---- Success return Mesh +---@param model any +---@param meshId integer +---@return any mesh +function RL.GetModelMesh( model, meshId ) end + +---Get model material. Return as lightuserdata +---- Failure return nil +---- Success return Material +---@param model any +---@param materialId integer +---@return any material +function RL.GetModelMaterial( model, materialId ) end + +---Get model number of bones +---- Success return int +---@param model any +---@return any boneCount +function RL.GetModelBoneCount( model ) end + +---Get model bones information (skeleton) +---- Failure return nil +---- Success return BoneInfo +---@param model any +---@param boneId integer +---@return any bone +function RL.GetModelBone( model, boneId ) end + +---Get models bones base transformation (pose) +---- Failure return nil +---- Success return Transform +---@param model any +---@param boneId integer +---@return any pose +function RL.GetModelBindPose( model, boneId ) end + +-- Models - Model drawing functions + +---Draw a model (With texture if set) +---@param model any +---@param position table +---@param scale number +---@param tint table +---@return any RL.DrawModel +function RL.DrawModel( model, position, scale, tint ) end + +---Draw a model with extended parameters +---@param model any +---@param position table +---@param rotationAxis table +---@param rotationAngle number +---@param scale table +---@param tint table +---@return any RL.DrawModelEx +function RL.DrawModelEx( model, position, rotationAxis, rotationAngle, scale, tint ) end + +---Draw a model wires (with texture if set) +---@param model any +---@param position table +---@param scale number +---@param tint table +---@return any RL.DrawModelWires +function RL.DrawModelWires( model, position, scale, tint ) end + +---Draw a model wires (with texture if set) with extended parameters +---@param model any +---@param position table +---@param rotationAxis table +---@param rotationAngle number +---@param scale table +---@param tint table +---@return any RL.DrawModelWiresEx +function RL.DrawModelWiresEx( model, position, rotationAxis, rotationAngle, scale, tint ) end + +---Draw a model as points +---@param model any +---@param position table +---@param scale number +---@param tint table +---@return any RL.DrawModelPoints +function RL.DrawModelPoints( model, position, scale, tint ) end + +---Draw a model as points with extended parameters +---@param model any +---@param position table +---@param rotationAxis table +---@param rotationAngle number +---@param scale table +---@param tint table +---@return any RL.DrawModelPointsEx +function RL.DrawModelPointsEx( model, position, rotationAxis, rotationAngle, scale, tint ) end + +---Draw bounding box (wires) +---@param box any +---@param color table +---@return any RL.DrawBoundingBox +function RL.DrawBoundingBox( box, color ) end + +---Draw a billboard texture +---@param camera any +---@param texture any +---@param position table +---@param size number +---@param tint table +---@return any RL.DrawBillboard +function RL.DrawBillboard( camera, texture, position, size, tint ) end + +---Draw a billboard texture defined by source +---@param camera any +---@param texture any +---@param source table +---@param position table +---@param size table +---@param tint table +---@return any RL.DrawBillboardRec +function RL.DrawBillboardRec( camera, texture, source, position, size, tint ) end + +---Draw a billboard texture defined by source and rotation +---@param camera any +---@param texture any +---@param source table +---@param position table +---@param up table +---@param size table +---@param origin table +---@param rotation number +---@param tint table +---@return any RL.DrawBillboardPro +function RL.DrawBillboardPro( camera, texture, source, position, up, size, origin, rotation, tint ) end + +-- Models - Mesh management functions + +---Update mesh vertex data in GPU. +---NOTE: Mainly intented to be used with custom meshes. +---@param mesh any +---@param meshData table +---@return any RL.UpdateMesh +function RL.UpdateMesh( mesh, meshData ) end + +---Unload mesh data from CPU and GPU +---@param mesh any +---@return any RL.UnloadMesh +function RL.UnloadMesh( mesh ) end + +---Draw a 3d mesh with material and transform +---@param mesh any +---@param material any +---@param transform table +---@return any RL.DrawMesh +function RL.DrawMesh( mesh, material, transform ) end + +---Draw multiple mesh instances with material and different transforms +---@param mesh any +---@param material any +---@param transforms any +---@param instances integer +---@return any RL.DrawMeshInstanced +function RL.DrawMeshInstanced( mesh, material, transforms, instances ) end + +---Updades mesh color vertex attribute buffer +---NOTE: Currently only works on custom mesh +---- Failure return false +---- Success return true +---@param mesh any +---@param color table +---@return any success +function RL.SetMeshColor( mesh, color ) end + +---Export mesh data to file, returns true on success +---- Success return bool +---@param mesh any +---@param fileName string +---@return any success +function RL.ExportMesh( mesh, fileName ) end + +---Export mesh as code file (.h) defining multiple arrays of vertex attributes +---- Success return bool +---@param mesh any +---@param fileName string +---@return any success +function RL.ExportMeshAsCode( mesh, fileName ) end + +---Compute mesh bounding box limits +---- Success return BoundingBox +---@param mesh any +---@return any boundingBox +function RL.GetMeshBoundingBox( mesh ) end + +---Compute mesh tangents +---@param mesh any +---@return any RL.GenMeshTangents +function RL.GenMeshTangents( mesh ) end + +---Get mesh vertex attributes data as table. +---- Success return Mesh{} +---@param mesh any +---@return any meshData +function RL.GetMeshData( mesh ) end + +-- Models - Mesh generation functions + +---Generate polygonal mesh +---- Success return Mesh +---@param sides integer +---@param radius number +---@return any mesh +function RL.GenMeshPoly( sides, radius ) end + +---Generate plane mesh (With subdivisions) +---- Success return Mesh +---@param width number +---@param length number +---@param resX integer +---@param resZ integer +---@return any mesh +function RL.GenMeshPlane( width, length, resX, resZ ) end + +---Generate cuboid mesh +---- Success return Mesh +---@param size table +---@return any mesh +function RL.GenMeshCube( size ) end + +---Generate sphere mesh (Standard sphere) +---- Success return Mesh +---@param radius number +---@param rings integer +---@param slices integer +---@return any mesh +function RL.GenMeshSphere( radius, rings, slices ) end + +---Generate half-sphere mesh (no bottom cap) +---- Success return Mesh +---@param radius number +---@param rings integer +---@param slices integer +---@return any mesh +function RL.GenMeshHemiSphere( radius, rings, slices ) end + +---Generate cylinder mesh +---- Success return Mesh +---@param radius number +---@param height number +---@param slices integer +---@return any mesh +function RL.GenMeshCylinder( radius, height, slices ) end + +---Generate cone/pyramid mesh +---- Success return Mesh +---@param radius number +---@param height number +---@param slices integer +---@return any mesh +function RL.GenMeshCone( radius, height, slices ) end + +---Generate torus mesh +---- Success return Mesh +---@param radius number +---@param size number +---@param radSeg integer +---@param sides integer +---@return any mesh +function RL.GenMeshTorus( radius, size, radSeg, sides ) end + +---Generate torus mesh +---- Success return Mesh +---@param radius number +---@param size number +---@param radSeg integer +---@param sides integer +---@return any mesh +function RL.GenMeshKnot( radius, size, radSeg, sides ) end + +---Generate heightmap mesh from image data +---- Success return Mesh +---@param heightmap any +---@param size table +---@return any mesh +function RL.GenMeshHeightmap( heightmap, size ) end + +---Generate cubes-based map mesh from image data +---- Success return Mesh +---@param cubicmap any +---@param cubeSize table +---@return any mesh +function RL.GenMeshCubicmap( cubicmap, cubeSize ) end + +---Generate custom mesh from vertex attribute data and uploads it into a VAO (if supported) and VBO +---- Success return Mesh +---@param meshData table +---@param dynamic boolean +---@return any mesh +function RL.GenMeshCustom( meshData, dynamic ) end + +-- Models - Material management functions + +---Load materials from model file +---- Success return Material{} +---@param fileName string +---@return any materials +function RL.LoadMaterials( fileName ) end + +---Default material for reference. Return as lightuserdata +---- Success return Material +---@return any material +function RL.GetMaterialDefault() end + +---Load default material as new object +---- Success return Material +---@return any material +function RL.LoadMaterialDefault() end + +---Load material from table. See material table definition +---- Success return Material +---@param materialData table +---@return any material +function RL.CreateMaterial( materialData ) end + +---Check if a material is valid (shader assigned, map textures loaded in GPU) +---- Success return bool +---@param material any +---@return any isValid +function RL.IsMaterialValid( material ) end + +---Unload material from GPU memory (VRAM). Note! Use freeAll to unload shaders and textures +---@param material any +---@param freeAll boolean +---@return any RL.UnloadMaterial +function RL.UnloadMaterial( material, freeAll ) end + +---Set texture for a material map type (MATERIAL_MAP_ALBEDO, MATERIAL_MAP_METALNESS...) +---@param material any +---@param mapType integer +---@param texture any +---@return any RL.SetMaterialTexture +function RL.SetMaterialTexture( material, mapType, texture ) end + +---Set color for a material map type +---@param material any +---@param mapType integer +---@param color table +---@return any RL.SetMaterialColor +function RL.SetMaterialColor( material, mapType, color ) end + +---Set value for a material map type +---@param material any +---@param mapType integer +---@param value number +---@return any RL.SetMaterialValue +function RL.SetMaterialValue( material, mapType, value ) end + +---Set shader for material +---@param material any +---@param shader any +---@return any RL.SetMaterialShader +function RL.SetMaterialShader( material, shader ) end + +---Set material generic parameters (if required) +---@param material any +---@param params table +---@return any RL.SetMaterialParams +function RL.SetMaterialParams( material, params ) end + +---Get texture from material map type. Return as lightuserdata +---- Success return Texture +---@param material any +---@param mapType integer +---@return any texture +function RL.GetMaterialTexture( material, mapType ) end + +---Get color from material map type +---- Success return Color +---@param material any +---@param mapType integer +---@return any color +function RL.GetMaterialColor( material, mapType ) end + +---Get color from material map type +---- Success return float +---@param material any +---@param mapType integer +---@return any value +function RL.GetMaterialValue( material, mapType ) end + +---Get material shader. Return as lightuserdata +---- Success return Shader +---@param material any +---@return any shader +function RL.GetMaterialShader( material ) end + +---Get material parameters +---- Success return float{} +---@param material any +---@return any params +function RL.GetMaterialParams( material ) end + +-- Model - Model animations management functions + +---Load model animations from file +---- Failure return nil +---- Success return ModelAnimations{} +---@param fileName string +---@return any animations +function RL.LoadModelAnimations( fileName ) end + +---Update model animation pose +---@param model any +---@param animation any +---@param frame integer +---@return any RL.UpdateModelAnimation +function RL.UpdateModelAnimation( model, animation, frame ) end + +---Update model animation mesh bone matrices (GPU skinning) +---@param model any +---@param animation any +---@param frame integer +---@return any RL.UpdateModelAnimationBones +function RL.UpdateModelAnimationBones( model, animation, frame ) end + +---Unload animation data +---@param animation any +---@return any RL.UnloadModelAnimation +function RL.UnloadModelAnimation( animation ) end + +---Unload animation table data +---@param animations table +---@return any RL.UnloadModelAnimations +function RL.UnloadModelAnimations( animations ) end + +---Check model animation skeleton match +---- Success return bool +---@param model any +---@param animation any +---@return any valid +function RL.IsModelAnimationValid( model, animation ) end + +---Set modelAnimation bones information (skeleton) +---- Failure return false +---- Success return true +---@param animation any +---@param boneId integer +---@param bone any +---@return any success +function RL.SetModelAnimationBone( animation, boneId, bone ) end + +---Set modelAnimation bones base transformation (pose) +---- Failure return false +---- Success return true +---@param animation any +---@param frame integer +---@param boneId integer +---@param pose any +---@return any success +function RL.SetModelAnimationFramePose( animation, frame, boneId, pose ) end + +---Set modelAnimation name +---@param animation any +---@param name string +---@return any RL.SetModelAnimationName +function RL.SetModelAnimationName( animation, name ) end + +---Return modelAnimation bone count +---- Success return int +---@param animation any +---@return any boneCount +function RL.GetModelAnimationBoneCount( animation ) end + +---Return modelAnimation frame count +---- Success return int +---@param animation any +---@return any frameCount +function RL.GetModelAnimationFrameCount( animation ) end + +---Get modelAnimation bones information (skeleton) +---- Failure return nil +---- Success return BoneInfo +---@param animation any +---@param boneId integer +---@return any bone +function RL.GetModelAnimationBone( animation, boneId ) end + +---Get modelAnimation bones base transformation (pose) +---- Failure return nil +---- Success return Transform +---@param animation any +---@param frame integer +---@param boneId integer +---@return any pose +function RL.GetModelAnimationFramePose( animation, frame, boneId ) end + +---Get modelAnimation name +---- Success return string +---@param animation any +---@return any name +function RL.GetModelAnimationName( animation ) end + +-- Model - Collision detection functions + +---Check collision between two spheres +---- Success return bool +---@param center1 table +---@param radius1 number +---@param center2 table +---@param radius2 number +---@return any collision +function RL.CheckCollisionSpheres( center1, radius1, center2, radius2 ) end + +---Check collision between two bounding boxes +---- Success return bool +---@param box1 any +---@param box2 any +---@return any collision +function RL.CheckCollisionBoxes( box1, box2 ) end + +---Check collision between box and sphere +---- Success return bool +---@param box any +---@param center table +---@param radius number +---@return any collision +function RL.CheckCollisionBoxSphere( box, center, radius ) end + +---Get collision info between ray and sphere. ( RayCollision is Lua table of { hit, distance, point, normal } ) +---- Success return RayCollision +---@param ray any +---@param center table +---@param radius number +---@return any rayCollision +function RL.GetRayCollisionSphere( ray, center, radius ) end + +---Get collision info between ray and box +---- Success return RayCollision +---@param ray any +---@param box any +---@return any rayCollision +function RL.GetRayCollisionBox( ray, box ) end + +---Get collision info between ray and mesh +---- Success return RayCollision +---@param ray any +---@param mesh any +---@param transform table +---@return any rayCollision +function RL.GetRayCollisionMesh( ray, mesh, transform ) end + +---Get collision info between ray and triangle +---- Success return RayCollision +---@param ray any +---@param p1 table +---@param p2 table +---@param p3 table +---@return any rayCollision +function RL.GetRayCollisionTriangle( ray, p1, p2, p3 ) end + +---Get collision info between ray and quad. NOTE: The points are expected to be in counter-clockwise winding +---- Success return RayCollision +---@param ray any +---@param p1 table +---@param p2 table +---@param p3 table +---@param p4 table +---@return any rayCollision +function RL.GetRayCollisionQuad( ray, p1, p2, p3, p4 ) end + +---Get cell positions inside box that intersect with the ray. Also returns ray exit point. Returns empty table if ray misses the box +---- Success return Vector3{}, RayCollision|nil +---@param ray any +---@param box any +---@param cellSize table +---@return any cells +---@return any exitPoint +function RL.GetRayBoxCells( ray, box, cellSize ) end + +-- Audio - Audio device management functions + +---Initialize audio device and context +---@return any RL.InitAudioDevice +function RL.InitAudioDevice() end + +---Close the audio device and context +---@return any RL.CloseAudioDevice +function RL.CloseAudioDevice() end + +---Check if audio device has been initialized successfully +---- Success return bool +---@return any isReady +function RL.IsAudioDeviceReady() end + +---Set master volume (listener) +---@param volume number +---@return any RL.SetMasterVolume +function RL.SetMasterVolume( volume ) end + +---Get master volume (listener) +---- Success return float +---@return any volume +function RL.GetMasterVolume() end + +-- Audio - Wave/Sound loading/unloading functions + +---Load sound from file +---- Failure return nil +---- Success return Sound +---@param fileName string +---@return any sound +function RL.LoadSound( fileName ) end + +---Load wave data from file +---- Failure return nil +---- Success return Wave +---@param fileName string +---@return any wave +function RL.LoadWave( fileName ) end + +---Load wave from memory buffer, fileType refers to extension: i.e. '.wav' +---- Success return Wave +---@param fileType string +---@param data any +---@return any wave +function RL.LoadWaveFromMemory( fileType, data ) end + +---Checks if wave data is valid (data loaded and parameters) +---- Success return bool +---@param wave any +---@return any isValid +function RL.IsWaveValid( wave ) end + +---Load sound from wave data +---- Success return Sound +---@param wave any +---@return any sound +function RL.LoadSoundFromWave( wave ) end + +---Create a new sound that shares the same sample data as the source sound, does not own the sound data +---- Success return Sound +---@param source any +---@return any sound +function RL.LoadSoundAlias( source ) end + +---Checks if a sound is valid (data loaded and buffers initialized) +---- Success return bool +---@param sound any +---@return any isValid +function RL.IsSoundValid( sound ) end + +---Update sound buffer with new data +---@param sound any +---@param data any +---@param sampleCount integer +---@return any RL.UpdateSound +function RL.UpdateSound( sound, data, sampleCount ) end + +---Unload wave data +---@param wave any +---@return any RL.UnloadWave +function RL.UnloadWave( wave ) end + +---Unload sound +---@param sound any +---@return any RL.UnloadSound +function RL.UnloadSound( sound ) end + +---Unload a sound alias (does not deallocate sample data) +---@param alias any +---@return any RL.UnloadSoundAlias +function RL.UnloadSoundAlias( alias ) end + +---Export wave data to file, returns true on success +---- Success return bool +---@param wave any +---@param fileName string +---@return any success +function RL.ExportWave( wave, fileName ) end + +---Export wave sample data to code (.h), returns true on success +---- Success return true +---@param wave any +---@param fileName string +---@return any success +function RL.ExportWaveAsCode( wave, fileName ) end + +-- Audio - Wave/Sound management functions + +---Play a sound +---@param sound any +---@return any RL.PlaySound +function RL.PlaySound( sound ) end + +---Stop playing a sound +---@param sound any +---@return any RL.StopSound +function RL.StopSound( sound ) end + +---Pause a sound +---@param sound any +---@return any RL.PauseSound +function RL.PauseSound( sound ) end + +---Resume a paused sound +---@param sound any +---@return any RL.ResumeSound +function RL.ResumeSound( sound ) end + +---Check if a sound is currently playing +---- Success return bool +---@param sound any +---@return any playing +function RL.IsSoundPlaying( sound ) end + +---Set volume for a sound (1.0 is max level) +---@param sound any +---@param volume number +---@return any RL.SetSoundVolume +function RL.SetSoundVolume( sound, volume ) end + +---Set pitch for a sound (1.0 is base level) +---@param sound any +---@param pitch number +---@return any RL.SetSoundPitch +function RL.SetSoundPitch( sound, pitch ) end + +---Set pan for a sound (0.5 is center) +---@param sound any +---@param pan number +---@return any RL.SetSoundPan +function RL.SetSoundPan( sound, pan ) end + +---Get sound audio stream. Return as lightuserdata +---- Success return AudioStream +---@param sound any +---@return any stream +function RL.GetSoundStream( sound ) end + +---Convert wave data to desired format +---@param wave any +---@param sampleRate integer +---@param sampleSize integer +---@param channels integer +---@return any RL.WaveFormat +function RL.WaveFormat( wave, sampleRate, sampleSize, channels ) end + +---Load samples data from wave as a 32bit float data array +---- Success return float{} +---@param wave any +---@return any samples +function RL.LoadWaveSamples( wave ) end + +---Copy a wave to a new wave +---- Success return Wave +---@param wave any +---@return any wave +function RL.WaveCopy( wave ) end + +---Crop a wave to defined samples range +---@param wave any +---@param initSample integer +---@param finalSample integer +---@return any RL.WaveCrop +function RL.WaveCrop( wave, initSample, finalSample ) end + +-- Audio - Music management functions + +---Load music stream from file +---- Success return Music +---@param fileName string +---@return any music +function RL.LoadMusicStream( fileName ) end + +---Load music stream from data +---- Success return Music +---@param fileType string +---@param data any +---@return any music +function RL.LoadMusicStreamFromMemory( fileType, data ) end + +---Checks if a music stream is valid (context and buffers initialized) +---- Success return bool +---@param music any +---@return any isValid +function RL.IsMusicValid( music ) end + +---Unload music stream +---@param music any +---@return any RL.UnloadMusicStream +function RL.UnloadMusicStream( music ) end + +---Start music playing +---@param music any +---@return any RL.PlayMusicStream +function RL.PlayMusicStream( music ) end + +---Check if music is playing +---- Success return bool +---@param music any +---@return any playing +function RL.IsMusicStreamPlaying( music ) end + +---Updates buffers for music streaming +---@param music any +---@return any RL.UpdateMusicStream +function RL.UpdateMusicStream( music ) end + +---Stop music playing +---@param music any +---@return any RL.StopMusicStream +function RL.StopMusicStream( music ) end + +---Pause music playing +---@param music any +---@return any RL.PauseMusicStream +function RL.PauseMusicStream( music ) end + +---Resume playing paused music +---@param music any +---@return any RL.ResumeMusicStream +function RL.ResumeMusicStream( music ) end + +---Seek music to a position (in seconds) +---@param music any +---@param position number +---@return any RL.SeekMusicStream +function RL.SeekMusicStream( music, position ) end + +---Set volume for music (1.0 is max level) +---@param music any +---@param volume number +---@return any RL.SetMusicVolume +function RL.SetMusicVolume( music, volume ) end + +---Set pitch for a music (1.0 is base level) +---@param music any +---@param pitch number +---@return any RL.SetMusicPitch +function RL.SetMusicPitch( music, pitch ) end + +---Set pan for a music (0.5 is center) +---@param music any +---@param pan number +---@return any RL.SetMusicPan +function RL.SetMusicPan( music, pan ) end + +---Set looping for a music +---@param music any +---@param looping boolean +---@return any RL.SetMusicLooping +function RL.SetMusicLooping( music, looping ) end + +---Get looping of a music +---- Success return bool +---@param music any +---@return any looping +function RL.GetMusicLooping( music ) end + +---Get music time length (in seconds) +---- Success return float +---@param music any +---@return any length +function RL.GetMusicTimeLength( music ) end + +---Get current music time played (in seconds) +---- Success return float +---@param music any +---@return any timePlayed +function RL.GetMusicTimePlayed( music ) end + +---Get music audio stream. Return as lightuserdata +---- Success return AudioStream +---@param music any +---@return any stream +function RL.GetMusicStream( music ) end + +-- Audio - AudioStream management functions + +---Load audio stream (to stream raw audio pcm data) +---- Success return AudioStream +---@param sampleRate integer +---@param sampleSize integer +---@param channels integer +---@return any audioStream +function RL.LoadAudioStream( sampleRate, sampleSize, channels ) end + +---Checks if an audio stream is valid (buffers initialized) +---- Success return bool +---@param stream any +---@return any isValid +function RL.IsAudioStreamValid( stream ) end + +---Unload audio stream and free memory +---@param stream any +---@return any RL.UnloadAudioStream +function RL.UnloadAudioStream( stream ) end + +---Update audio stream buffers with data +---@param stream any +---@param data any +---@param frameCount integer +---@return any RL.UpdateAudioStream +function RL.UpdateAudioStream( stream, data, frameCount ) end + +---Check if any audio stream buffers requires refill +---- Success return bool +---@param stream any +---@return any isProcessed +function RL.IsAudioStreamProcessed( stream ) end + +---Play audio stream +---@param stream any +---@return any RL.PlayAudioStream +function RL.PlayAudioStream( stream ) end + +---Pause audio stream +---@param stream any +---@return any RL.PauseAudioStream +function RL.PauseAudioStream( stream ) end + +---Resume audio stream +---@param stream any +---@return any RL.ResumeAudioStream +function RL.ResumeAudioStream( stream ) end + +---Check if audio stream is playing +---- Success return bool +---@param stream any +---@return any isPlaying +function RL.IsAudioStreamPlaying( stream ) end + +---Stop audio stream +---@param stream any +---@return any RL.StopAudioStream +function RL.StopAudioStream( stream ) end + +---Set volume for audio stream (1.0 is max level) +---@param stream any +---@param volume number +---@return any RL.SetAudioStreamVolume +function RL.SetAudioStreamVolume( stream, volume ) end + +---Set pitch for audio stream (1.0 is base level) +---@param stream any +---@param pitch number +---@return any RL.SetAudioStreamPitch +function RL.SetAudioStreamPitch( stream, pitch ) end + +---Set pan for audio stream (0.5 is centered) +---@param stream any +---@param pan number +---@return any RL.SetAudioStreamPan +function RL.SetAudioStreamPan( stream, pan ) end + +---Default size for new audio streams +---@param size integer +---@return any RL.SetAudioStreamBufferSizeDefault +function RL.SetAudioStreamBufferSizeDefault( size ) end + +---Audio thread callback to request new data. +---AudioCallback should be lightuserdata function pointer +---@param stream any +---@param callback any +---@return any RL.SetAudioStreamCallback +function RL.SetAudioStreamCallback( stream, callback ) end + +---Attach audio stream processor to stream, receives the samples as 'float'. +---AudioCallback should be lightuserdata function pointer +---@param stream any +---@param processor any +---@return any RL.AttachAudioStreamProcessor +function RL.AttachAudioStreamProcessor( stream, processor ) end + +---Detach audio stream processor from stream. +---AudioCallback should be lightuserdata function pointer +---@param stream any +---@param processor any +---@return any RL.DetachAudioStreamProcessor +function RL.DetachAudioStreamProcessor( stream, processor ) end + +---Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'. +---AudioCallback should be lightuserdata function pointer +---@param processor any +---@return any RL.AttachAudioMixedProcessor +function RL.AttachAudioMixedProcessor( processor ) end + +---Detach audio stream processor from the entire audio pipeline. +---AudioCallback should be lightuserdata function pointer +---@param processor any +---@return any RL.DetachAudioMixedProcessor +function RL.DetachAudioMixedProcessor( processor ) end + +-- Math - Utils + +---Round float value +---- Success return int +---@param value number +---@return any result +function RL.Round( value ) end + +---Sign of value +---- Success return int +---@param value number +---@return any result +function RL.Sign( value ) end + +---Clamp float value +---- Success return float +---@param value number +---@param min number +---@param max number +---@return any result +function RL.Clamp( value, min, max ) end + +---Calculate linear interpolation between two floats +---- Success return float +---@param a number +---@param b number +---@param amount number +---@return any result +function RL.Lerp( a, b, amount ) end + +---Normalize input value within input range +---- Success return float +---@param value number +---@param a number +---@param b number +---@return any result +function RL.Normalize( value, a, b ) end + +---Remap input value within input range to output range +---- Success return float +---@param value number +---@param inputStart number +---@param inputEnd number +---@param outputStart number +---@param outputEnd number +---@return any result +function RL.Remap( value, inputStart, inputEnd, outputStart, outputEnd ) end + +---Wrap input value from min to max +---- Success return float +---@param value number +---@param min number +---@param max number +---@return any result +function RL.Wrap( value, min, max ) end + +---Check whether two given floats are almost equal +---- Success return bool +---@param x number +---@param y number +---@return any result +function RL.FloatEquals( x, y ) end + +-- Math - Vector2 + +---Vector with components value 0.0f +---- Success return Vector2 +---@return any result +function RL.Vector2Zero() end + +---Vector with components value 1.0f +---- Success return Vector2 +---@return any result +function RL.Vector2One() end + +---Add two vectors (v1 + v2) +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Add( v1, v2 ) end + +---Add vector and float value +---- Success return Vector2 +---@param v table +---@param add number +---@return any result +function RL.Vector2AddValue( v, add ) end + +---Subtract two vectors (v1 - v2) +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Subtract( v1, v2 ) end + +---Subtract vector by float value +---- Success return Vector2 +---@param v table +---@param sub number +---@return any result +function RL.Vector2SubtractValue( v, sub ) end + +---Calculate vector length +---- Success return float +---@param v any +---@return any result +function RL.Vector2Length( v ) end + +---Calculate vector square length +---- Success return float +---@param v any +---@return any result +function RL.Vector2LengthSqr( v ) end + +---Calculate two vectors dot product +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2DotProduct( v1, v2 ) end + +---Calculate distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Distance( v1, v2 ) end + +---Calculate square distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2DistanceSqr( v1, v2 ) end + +---Calculate angle between two vectors +---NOTE: Angle is calculated from origin point (0, 0) +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Angle( v1, v2 ) end + +---Calculate angle defined by a two vectors line +---NOTE: Parameters need to be normalized +---Current implementation should be aligned with glm::angle +---- Success return float +---@param a table +---@param b table +---@return any result +function RL.Vector2LineAngle( a, b ) end + +---Scale vector (multiply by value) +---- Success return Vector2 +---@param v table +---@param scale number +---@return any result +function RL.Vector2Scale( v, scale ) end + +---Multiply vector by vector +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Multiply( v1, v2 ) end + +---Negate vector +---- Success return Vector2 +---@param v table +---@return any result +function RL.Vector2Negate( v ) end + +---Divide vector by vector +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Divide( v1, v2 ) end + +---Normalize provided vector +---- Success return Vector2 +---@param v table +---@return any result +function RL.Vector2Normalize( v ) end + +---Transforms a Vector2 by a given Matrix +---- Success return Vector2 +---@param v table +---@param mat table +---@return any result +function RL.Vector2Transform( v, mat ) end + +---Calculate linear interpolation between two vectors +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@param amount number +---@return any result +function RL.Vector2Lerp( v1, v2, amount ) end + +---Calculate reflected vector to normal +---- Success return Vector2 +---@param v table +---@param normal table +---@return any result +function RL.Vector2Reflect( v, normal ) end + +---Get min value for each pair of components +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Min( v1, v2 ) end + +---Get max value for each pair of components +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Max( v1, v2 ) end + +---Rotate vector by angle +---- Success return Vector2 +---@param v table +---@param angle number +---@return any result +function RL.Vector2Rotate( v, angle ) end + +---Move Vector towards target +---- Success return Vector2 +---@param v table +---@param target table +---@param maxDistance number +---@return any result +function RL.Vector2MoveTowards( v, target, maxDistance ) end + +---Invert the given vector +---- Success return Vector2 +---@param v table +---@return any result +function RL.Vector2Invert( v ) end + +---Clamp the components of the vector between +---min and max values specified by the given vectors +---- Success return Vector2 +---@param v table +---@param min table +---@param max table +---@return any result +function RL.Vector2Clamp( v, min, max ) end + +---Clamp the magnitude of the vector between two min and max values +---- Success return Vector2 +---@param v table +---@param min number +---@param max number +---@return any result +function RL.Vector2ClampValue( v, min, max ) end + +---Check whether two given vectors are almost equal +---- Success return bool +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Equals( v1, v2 ) end + +---Compute the direction of a refracted ray +---v: normalized direction of the incoming ray +---n: normalized normal vector of the interface of two optical media +---r: ratio of the refractive index of the medium from where the ray comes +--- to the refractive index of the medium on the other side of the surface +---- Success return Vector2 +---@param v table +---@param n table +---@param r number +---@return any result +function RL.Vector2Refract( v, n, r ) end + +-- Math - Vector 3 + +---Vector with components value 0.0f +---- Success return Vector3 +---@return any result +function RL.Vector3Zero() end + +---Vector with components value 1.0f +---- Success return Vector3 +---@return any result +function RL.Vector3One() end + +---Add two vectors +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Add( v1, v2 ) end + +---Add vector and float value +---- Success return Vector3 +---@param v table +---@param add number +---@return any result +function RL.Vector3AddValue( v, add ) end + +---Subtract two vectors +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Subtract( v1, v2 ) end + +---Subtract vector by float value +---- Success return Vector3 +---@param v table +---@param sub number +---@return any result +function RL.Vector3SubtractValue( v, sub ) end + +---Multiply vector by scalar +---- Success return Vector3 +---@param v table +---@param scalar number +---@return any result +function RL.Vector3Scale( v, scalar ) end + +---Multiply vector by vector +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Multiply( v1, v2 ) end + +---Calculate two vectors cross product +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3CrossProduct( v1, v2 ) end + +---Calculate one vector perpendicular vector +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Perpendicular( v ) end + +---Calculate vector length +---- Success return float +---@param v table +---@return any result +function RL.Vector3Length( v ) end + +---Calculate vector square length +---- Success return float +---@param v table +---@return any result +function RL.Vector3LengthSqr( v ) end + +---Calculate two vectors dot product +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3DotProduct( v1, v2 ) end + +---Calculate distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Distance( v1, v2 ) end + +---Calculate square distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3DistanceSqr( v1, v2 ) end + +---Calculate angle between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Angle( v1, v2 ) end + +---Negate provided vector (invert direction) +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Negate( v ) end + +---Divide vector by vector +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Divide( v1, v2 ) end + +---Normalize provided vector +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Normalize( v ) end + +---Calculate the projection of the vector v1 on to v2 +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Project( v1, v2 ) end + +---Calculate the rejection of the vector v1 on to v2 +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Reject( v1, v2 ) end + +---Orthonormalize provided vectors. Makes vectors normalized and orthogonal to each other. +---Gram-Schmidt function implementation +---- Success return Vector3, Vector3 +---@param v1 table +---@param v2 table +---@return any v1 +---@return any v2 +function RL.Vector3OrthoNormalize( v1, v2 ) end + +---Transforms a Vector3 by a given Matrix +---- Success return Vector3 +---@param v table +---@param mat table +---@return any result +function RL.Vector3Transform( v, mat ) end + +---Transform a vector by quaternion rotation +---- Success return Vector3 +---@param v table +---@param q table +---@return any result +function RL.Vector3RotateByQuaternion( v, q ) end + +---Rotates a vector around an axis +---- Success return Vector3 +---@param v table +---@param axis table +---@param angle number +---@return any result +function RL.Vector3RotateByAxisAngle( v, axis, angle ) end + +---Move Vector towards target +---- Success return Vector3 +---@param v table +---@param target table +---@param maxDistance number +---@return any result +function RL.Vector3MoveTowards( v, target, maxDistance ) end + +---Calculate linear interpolation between two vectors +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@param amount number +---@return any result +function RL.Vector3Lerp( v1, v2, amount ) end + +---Calculate cubic hermite interpolation between two vectors and their tangents +---as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +---- Success return Vector3 +---@param v1 table +---@param tangent1 table +---@param v2 table +---@param tangent2 table +---@param amount number +---@return any result +function RL.Vector3CubicHermite( v1, tangent1, v2, tangent2, amount ) end + +---Calculate reflected vector to normal +---- Success return Vector3 +---@param v table +---@param normal table +---@return any result +function RL.Vector3Reflect( v, normal ) end + +---Get min value for each pair of components +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Min( v1, v2 ) end + +---Get max value for each pair of components +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Max( v1, v2 ) end + +---Compute barycenter coordinates (u, v, w) for point p with respect to triangle (a, b, c) +---NOTE: Assumes P is on the plane of the triangle +---- Success return Vector3 +---@param p table +---@param a table +---@param b table +---@param c table +---@return any result +function RL.Vector3Barycenter( p, a, b, c ) end + +---Projects a Vector3 from screen space into object space +---NOTE: We are avoiding calling other raymath functions despite available +---- Success return Vector3 +---@param source table +---@param projection table +---@param view table +---@return any result +function RL.Vector3Unproject( source, projection, view ) end + +---Invert the given vector +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Invert( v ) end + +---Clamp the components of the vector between +---min and max values specified by the given vectors +---- Success return Vector3 +---@param v table +---@param min table +---@param max table +---@return any result +function RL.Vector3Clamp( v, min, max ) end + +---Clamp the magnitude of the vector between two values +---- Success return Vector3 +---@param v table +---@param min number +---@param max number +---@return any result +function RL.Vector3ClampValue( v, min, max ) end + +---Check whether two given vectors are almost equal +---- Success return bool +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Equals( v1, v2 ) end + +---Compute the direction of a refracted ray where v specifies the +---normalized direction of the incoming ray, n specifies the +---normalized normal vector of the interface of two optical media, +---and r specifies the ratio of the refractive index of the medium +---from where the ray comes to the refractive index of the medium +---on the other side of the surface +---- Success return Vector3 +---@param v table +---@param n table +---@param r number +---@return any result +function RL.Vector3Refract( v, n, r ) end + +-- Math - Vector4 + +---Vector with components value 0.0f +---- Success return Vector4 +---@return any result +function RL.Vector4Zero() end + +---Vector with components value 1.0f +---- Success return Vector4 +---@return any result +function RL.Vector4One() end + +---Add two vectors +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Add( v1, v2 ) end + +---Add vector and float value +---- Success return Vector4 +---@param v table +---@param add number +---@return any result +function RL.Vector4AddValue( v, add ) end + +---Subtract two vectors +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Subtract( v1, v2 ) end + +---Subtract vector by float value +---- Success return Vector4 +---@param v table +---@param sub number +---@return any result +function RL.Vector4SubtractValue( v, sub ) end + +---Calculate vector length +---- Success return float +---@param v table +---@return any result +function RL.Vector4Length( v ) end + +---Calculate vector square length +---- Success return float +---@param v table +---@return any result +function RL.Vector4LengthSqr( v ) end + +---Calculate two vectors dot product +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4DotProduct( v1, v2 ) end + +---Calculate distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Distance( v1, v2 ) end + +---Calculate square distance between two vectors +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4DistanceSqr( v1, v2 ) end + +---Multiply vector by scalar +---- Success return Vector4 +---@param v table +---@param scalar number +---@return any result +function RL.Vector4Scale( v, scalar ) end + +---Multiply vector by vector +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Multiply( v1, v2 ) end + +---Negate provided vector (invert direction) +---- Success return Vector4 +---@param v table +---@return any result +function RL.Vector4Negate( v ) end + +---Divide vector by vector +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Divide( v1, v2 ) end + +---Normalize provided vector +---- Success return Vector4 +---@param v table +---@return any result +function RL.Vector4Normalize( v ) end + +---Get min value for each pair of components +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Min( v1, v2 ) end + +---Get max value for each pair of components +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Max( v1, v2 ) end + +---Calculate linear interpolation between two vectors +---- Success return Vector4 +---@param v1 table +---@param v2 table +---@param amount number +---@return any result +function RL.Vector4Lerp( v1, v2, amount ) end + +---Move Vector towards target +---- Success return Vector4 +---@param v table +---@param target table +---@param maxDistance number +---@return any result +function RL.Vector4MoveTowards( v, target, maxDistance ) end + +---Invert the given vector +---- Success return Vector4 +---@param v table +---@return any result +function RL.Vector4Invert( v ) end + +---Check whether two given vectors are almost equal +---- Success return bool +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector4Equals( v1, v2 ) end + +-- Math - Matrix + +---Compute matrix determinant +---- Success return float +---@param mat table +---@return any result +function RL.MatrixDeterminant( mat ) end + +---Get the trace of the matrix (sum of the values along the diagonal) +---- Success return float +---@param mat table +---@return any result +function RL.MatrixTrace( mat ) end + +---Transposes provided matrix +---- Success return Matrix +---@param mat table +---@return any result +function RL.MatrixTranspose( mat ) end + +---Invert provided matrix +---- Success return Matrix +---@param mat table +---@return any result +function RL.MatrixInvert( mat ) end + +---Get identity matrix +---- Success return Matrix +---@return any result +function RL.MatrixIdentity() end + +---Add two matrices +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixAdd( left, right ) end + +---Subtract two matrices (left - right) +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixSubtract( left, right ) end + +---Get two matrix multiplication +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixMultiply( left, right ) end + +---Get translation matrix +---- Success return Matrix +---@param translate table +---@return any result +function RL.MatrixTranslate( translate ) end + +---Create rotation matrix from axis and angle. NOTE: Angle should be provided in radians +---- Success return Matrix +---@param axis table +---@param angle number +---@return any result +function RL.MatrixRotate( axis, angle ) end + +---Get x-rotation matrix (angle in radians) +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateX( angle ) end + +---Get y-rotation matrix (angle in radians) +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateY( angle ) end + +---Get z-rotation matrix (angle in radians) +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateZ( angle ) end + +---Get xyz-rotation matrix (angles in radians) +---- Success return Matrix +---@param angles table +---@return any result +function RL.MatrixRotateXYZ( angles ) end + +---Get zyx-rotation matrix (angles in radians) +---- Success return Matrix +---@param angles table +---@return any result +function RL.MatrixRotateZYX( angles ) end + +---Get scaling matrix +---- Success return Matrix +---@param scale table +---@return any result +function RL.MatrixScale( scale ) end + +---Get perspective projection matrix +---- Success return Matrix +---@param left any +---@param right any +---@param bottom any +---@param top any +---@param near any +---@param far any +---@return any result +function RL.MatrixFrustum( left, right, bottom, top, near, far ) end + +---Get perspective projection matrix +---- Success return Matrix +---@param fovy any +---@param aspect any +---@param near any +---@param far any +---@return any result +function RL.MatrixPerspective( fovy, aspect, near, far ) end + +---Get orthographic projection matrix +---- Success return Matrix +---@param left any +---@param right any +---@param bottom any +---@param top any +---@param near any +---@param far any +---@return any result +function RL.MatrixOrtho( left, right, bottom, top, near, far ) end + +---Get camera look-at matrix (View matrix) +---- Success return Matrix +---@param eye table +---@param target table +---@param up table +---@return any result +function RL.MatrixLookAt( eye, target, up ) end + +---Decompose a transformation matrix into its rotational, translational and scaling components +---- Success return Vector3, Quaternion, Vector3 +---@param mat table +---@return any translation +---@return any rotation +---@return any scale +function RL.MatrixDecompose( mat ) end + +-- Math - Quaternion + +---Add two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionAdd( q1, q2 ) end + +---Add quaternion and float value +---- Success return Quaternion +---@param q table +---@param add number +---@return any result +function RL.QuaternionAddValue( q, add ) end + +---Subtract two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionSubtract( q1, q2 ) end + +---Subtract quaternion and float value +---- Success return Quaternion +---@param q table +---@param sub number +---@return any result +function RL.QuaternionSubtractValue( q, sub ) end + +---Get identity quaternion +---- Success return Quaternion +---@return any result +function RL.QuaternionIdentity() end + +---Computes the length of a quaternion +---- Success return float +---@param q table +---@return any result +function RL.QuaternionLength( q ) end + +---Normalize provided quaternion +---- Success return Quaternion +---@param q table +---@return any result +function RL.QuaternionNormalize( q ) end + +---Invert provided quaternion +---- Success return Quaternion +---@param q table +---@return any result +function RL.QuaternionInvert( q ) end + +---Calculate two quaternion multiplication +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionMultiply( q1, q2 ) end + +---Scale quaternion by float value +---- Success return Quaternion +---@param q table +---@param mul number +---@return any result +function RL.QuaternionScale( q, mul ) end + +---Divide two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionDivide( q1, q2 ) end + +---Calculate linear interpolation between two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@param amount number +---@return any result +function RL.QuaternionLerp( q1, q2, amount ) end + +---Calculate slerp-optimized interpolation between two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@param amount number +---@return any result +function RL.QuaternionNlerp( q1, q2, amount ) end + +---Calculates spherical linear interpolation between two quaternions +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@param amount number +---@return any result +function RL.QuaternionSlerp( q1, q2, amount ) end + +---Calculate quaternion cubic spline interpolation using Cubic Hermite Spline algorithm +---as described in the GLTF 2.0 specification: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#interpolation-cubic +---- Success return Quaternion +---@param q1 table +---@param outTangent1 table +---@param q2 table +---@param inTangent2 table +---@param t number +---@return any result +function RL.QuaternionCubicHermiteSpline( q1, outTangent1, q2, inTangent2, t ) end + +---Calculate quaternion based on the rotation from one vector to another +---- Success return Quaternion +---@param from table +---@param to table +---@return any result +function RL.QuaternionFromVector3ToVector3( from, to ) end + +---Get a quaternion for a given rotation matrix +---- Success return Quaternion +---@param mat table +---@return any result +function RL.QuaternionFromMatrix( mat ) end + +---Get a matrix for a given quaternion +---- Success return Matrix +---@param q table +---@return any result +function RL.QuaternionToMatrix( q ) end + +---Get rotation quaternion for an angle and axis +---NOTE: angle must be provided in radians +---- Success return Quaternion +---@param axis table +---@param angle number +---@return any result +function RL.QuaternionFromAxisAngle( axis, angle ) end + +---Get the rotation angle and axis for a given quaternion +---- Success return Vector3, float +---@param q table +---@return any axis +---@return any angle +function RL.QuaternionToAxisAngle( q ) end + +---Get the quaternion equivalent to Euler angles +---NOTE: Rotation order is ZYX +---- Success return Quaternion +---@param pitch number +---@param yaw number +---@param roll number +---@return any result +function RL.QuaternionFromEuler( pitch, yaw, roll ) end + +---Get the Euler angles equivalent to quaternion (roll, pitch, yaw) +---NOTE: Angles are returned in a Vector3 struct in radians +---- Success return Vector3 +---@param q table +---@return any result +function RL.QuaternionToEuler( q ) end + +---Transform a quaternion given a transformation matrix +---- Success return Quaternion +---@param q table +---@param mat table +---@return any result +function RL.QuaternionTransform( q, mat ) end + +---Check whether two given quaternions are almost equal +---- Success return bool +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionEquals( q1, q2 ) end + +-- Math - Frustum + +---Extract frustum from projection and modelView matrices. +---- Success return Vector4{} +---@param projection table +---@param modelview table +---@return any frustum +function RL.ExtractFrustum( projection, modelview ) end + +---Check if point inside frustum +---- Success return bool +---@param frustum table +---@param position table +---@return any inFrustum +function RL.PointInFrustum( frustum, position ) end + +---Check if sphere inside frustum +---- Success return bool +---@param frustum table +---@param position table +---@return any inFrustum +function RL.SphereInFrustum( frustum, position ) end + +---Check if AABB inside frustum +---- Success return bool +---@param frustum table +---@param min table +---@param max table +---@return any inFrustum +function RL.AABBInFrustum( frustum, min, max ) end + +-- Gui - Global gui state control functions + +---Enable gui controls (global state) +---@return any RL.GuiEnable +function RL.GuiEnable() end + +---Disable gui controls (global state) +---@return any RL.GuiDisable +function RL.GuiDisable() end + +---Lock gui controls (global state) +---@return any RL.GuiLock +function RL.GuiLock() end + +---Unlock gui controls (global state) +---@return any RL.GuiUnlock +function RL.GuiUnlock() end + +---Check if gui is locked (global state) +---- Success return bool +---@return any locked +function RL.GuiIsLocked() end + +---Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f +---@param alpha number +---@return any RL.GuiSetAlpha +function RL.GuiSetAlpha( alpha ) end + +---Set gui state (global state) +---@param state integer +---@return any RL.GuiSetState +function RL.GuiSetState( state ) end + +---Get gui state (global state) +---- Success return int +---@return any state +function RL.GuiGetState() end + +---Set guiSliderDragging +---@param dragging boolean +---@return any RL.GuiSetSliderDragging +function RL.GuiSetSliderDragging( dragging ) end + +---Get guiSliderDragging +---- Success return bool +---@return any isSliderDragging +function RL.GuiGetSliderDragging() end + +---Set guiSliderActive +---@param rect any +---@return any RL.GuiSetSliderActive +function RL.GuiSetSliderActive( rect ) end + +---Get guiSliderActive +---- Success return Rectangle +---@return any isSliderDragging +function RL.GuiGetSliderActive() end + +-- Gui - Font set/get functions + +---Set gui custom font (global state) +---@param font any +---@return any RL.GuiSetFont +function RL.GuiSetFont( font ) end + +---Get gui font (global state). Return as lightuserdata +---- Success return Font +---@return any font +function RL.GuiGetFont() end + +-- Gui - Style set/get functions + +---Set one style property +---@param control integer +---@param property integer +---@param value integer +---@return any RL.GuiSetStyle +function RL.GuiSetStyle( control, property, value ) end + +---Get one style property +---- Success return int +---@param control integer +---@param property integer +---@return any value +function RL.GuiGetStyle( control, property ) end + +-- Gui - Styles loading functions + +---Load style file over global style variable (.rgs) +---- Failure return nil +---- Success return true +---@param fileName string +---@return any success +function RL.GuiLoadStyle( fileName ) end + +---Load style default over global style +---@return any RL.GuiLoadStyleDefault +function RL.GuiLoadStyleDefault() end + +-- Gui - Tooltips management functions + +---Enable gui tooltips (global state) +---@return any RL.GuiEnableTooltip +function RL.GuiEnableTooltip() end + +---Disable gui tooltips (global state) +---@return any RL.GuiDisableTooltip +function RL.GuiDisableTooltip() end + +---Set tooltip string +---@param tooltip string +---@return any RL.GuiSetTooltip +function RL.GuiSetTooltip( tooltip ) end + +-- Gui - Icons functionality + +---Get text with icon id prepended (if supported) +---- Success return string +---@param iconId integer +---@param text string|nil +---@return any text +function RL.GuiIconText( iconId, text ) end + +---Set icon scale (1 by default) +---@param scale integer +---@return any RL.GuiSetIconScale +function RL.GuiSetIconScale( scale ) end + +---Get raygui icons data in buffer. guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +---- Success return Buffer +---@return any iconsBuffer +function RL.GuiGetIcons() end + +---Set raygui icons data in buffer. guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +---- Failure return false +---- Success return true +---@param iconBuffer any +---@return any success +function RL.GuiSetIcons( iconBuffer ) end + +---Load raygui icons file (.rgi) into internal icons data +---- Failure return nil +---- Success return strings{} +---@param fileName string +---@param loadIconsName boolean +---@return any iconNames +function RL.GuiLoadIcons( fileName, loadIconsName ) end + +---Draw icon +---@param iconId integer +---@param pos table +---@param pixelSize integer +---@param color table +---@return any RL.GuiDrawIcon +function RL.GuiDrawIcon( iconId, pos, pixelSize, color ) end + +-- Gui - Container/separator controls, useful for controls organization + +---Window Box control, shows a window that can be closed +---- Success return int +---@param bounds table +---@param title string|nil +---@return any result +function RL.GuiWindowBox( bounds, title ) end + +---Group Box control with text name +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiGroupBox( bounds, text ) end + +---Line separator control, could contain text +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiLine( bounds, text ) end + +---Panel control, useful to group controls +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiPanel( bounds, text ) end + +---Tab Bar control, returns TAB to be closed or -1 +---- Success return int, int +---@param bounds table +---@param text string +---@param active integer +---@return any result +---@return any active +function RL.GuiTabBar( bounds, text, active ) end + +---Scroll Panel control +---- Success return int, Vector2, Rectangle +---@param bounds table +---@param text string|nil +---@param content table +---@param scroll table +---@param view table +---@return any result +---@return any scroll +---@return any view +function RL.GuiScrollPanel( bounds, text, content, scroll, view ) end + +-- Gui - Basic controls set + +---Label control, shows text +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiLabel( bounds, text ) end + +---Button control, returns true when clicked +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiButton( bounds, text ) end + +---Label button control, show true when clicked +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiLabelButton( bounds, text ) end + +---Toggle Button control, returns true when active +---- Success return int, bool +---@param bounds table +---@param text string|nil +---@param active boolean +---@return any result +---@return any active +function RL.GuiToggle( bounds, text, active ) end + +---Toggle Group control, returns active toggle index +---- Success return int, int +---@param bounds table +---@param text string|nil +---@param active integer +---@return any result +---@return any active +function RL.GuiToggleGroup( bounds, text, active ) end + +---Toggle Slider control, returns true when clicked +---- Success return int, int +---@param bounds table +---@param text string|nil +---@param active integer +---@return any result +---@return any active +function RL.GuiToggleSlider( bounds, text, active ) end + +---Check Box control, returns true when active +---- Success return bool, Rectangle +---@param bounds table +---@param text string|nil +---@param checked boolean +---@return any result +---@return any checked +---@return any textBounds +function RL.GuiCheckBox( bounds, text, checked ) end + +---Combo Box control, returns selected item index +---- Success return int, int +---@param bounds table +---@param text string|nil +---@param active integer +---@return any result +---@return any active +function RL.GuiComboBox( bounds, text, active ) end + +---Dropdown Box control, returns selected item +---- Success return int, int +---@param bounds table +---@param text string +---@param active integer +---@param editMode boolean +---@return any result +---@return any active +function RL.GuiDropdownBox( bounds, text, active, editMode ) end + +---Spinner control, returns selected value +---- Success return int, int, Rectangle +---@param bounds table +---@param text string|nil +---@param value integer +---@param minValue integer +---@param maxValue integer +---@param editMode boolean +---@return any result +---@return any value +---@return any textBounds +function RL.GuiSpinner( bounds, text, value, minValue, maxValue, editMode ) end + +---Value Box control, updates input text with numbers +---- Success return int, int, Rectangle +---@param bounds table +---@param text string|nil +---@param value integer +---@param minValue integer +---@param maxValue integer +---@param editMode boolean +---@return any result +---@return any value +---@return any textBounds +function RL.GuiValueBox( bounds, text, value, minValue, maxValue, editMode ) end + +---Text Box control, updates input text +---- Success return int, string +---@param bounds table +---@param text string +---@param bufferSize integer +---@param editMode boolean +---@return any result +---@return any text +function RL.GuiTextBox( bounds, text, bufferSize, editMode ) end + +---Slider control, returns selected value +---- Success return int, float, Rectangle, Rectangle +---@param bounds table +---@param textLeft string|nil +---@param textRight string|nil +---@param value number +---@param minValue number +---@param maxValue number +---@return any result +---@return any value +---@return any textLeftBounds +---@return any textRightBounds +function RL.GuiSlider( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Slider Bar control, returns selected value +---- Success return int, float, Rectangle, Rectangle +---@param bounds table +---@param textLeft string|nil +---@param textRight string|nil +---@param value number +---@param minValue number +---@param maxValue number +---@return any result +---@return any value +---@return any textLeftBounds +---@return any textRightBounds +function RL.GuiSliderBar( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Progress Bar control, shows current progress value +---- Success return int, float, Rectangle, Rectangle +---@param bounds table +---@param textLeft string|nil +---@param textRight string|nil +---@param value number +---@param minValue number +---@param maxValue number +---@return any result +---@return any value +---@return any textLeftBounds +---@return any textRightBounds +function RL.GuiProgressBar( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Status Bar control, shows info text +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiStatusBar( bounds, text ) end + +---Dummy control for placeholders +---- Success return int +---@param bounds table +---@param text string|nil +---@return any result +function RL.GuiDummyRec( bounds, text ) end + +---Grid control, returns mouse cell position +---- Success return int, Vector2 +---@param bounds table +---@param text string|nil +---@param spacing number +---@param subdivs integer +---@param mouseCell table +---@return any result +---@return any mouseCell +function RL.GuiGrid( bounds, text, spacing, subdivs, mouseCell ) end + +---Scroll bar control +---- Success return int +---@param bounds table +---@param value integer +---@param minValue integer +---@param maxValue integer +---@return any value +function RL.GuiScrollBar( bounds, value, minValue, maxValue ) end + +-- Gui - Advance controls set + +---List View control, returns selected list item index +---- Success return int, int, int +---@param bounds table +---@param text string|nil +---@param scrollIndex integer +---@param active integer +---@return any result +---@return any scrollIndex +---@return any active +function RL.GuiListView( bounds, text, scrollIndex, active ) end + +---List View with extended parameters +---- Success return int, int, int, int +---@param bounds table +---@param text string +---@param scrollIndex integer +---@param active integer +---@param focus integer +---@return any result +---@return any scrollIndex +---@return any active +---@return any focus +function RL.GuiListViewEx( bounds, text, scrollIndex, active, focus ) end + +---Message Box control, displays a message +---- Success return int +---@param bounds table +---@param title string|nil +---@param message string +---@param buttons string +---@return any result +function RL.GuiMessageBox( bounds, title, message, buttons ) end + +---Text Input Box control, ask for text, supports secret +---- Success return int, string, bool +---@param bounds table +---@param title string +---@param message string +---@param buttons string +---@param text string +---@param textMaxSize integer +---@param secretViewActive boolean +---@return any result +---@return any text +---@return any secretViewActive +function RL.GuiTextInputBox( bounds, title, message, buttons, text, textMaxSize, secretViewActive ) end + +---Color Picker control (multiple color controls) +---- Success return int, Color +---@param bounds table +---@param text string|nil +---@param color table +---@return any result +---@return any color +function RL.GuiColorPicker( bounds, text, color ) end + +---Color Panel control +---- Success return int, Color +---@param bounds table +---@param text string|nil +---@param color table +---@return any result +---@return any color +function RL.GuiColorPanel( bounds, text, color ) end + +---Color Bar Alpha control +---- Success return int, float +---@param bounds table +---@param text string|nil +---@param alpha number +---@return any result +---@return any alpha +function RL.GuiColorBarAlpha( bounds, text, alpha ) end + +---Color Bar Hue control +---- Success return int, float +---@param bounds table +---@param text string|nil +---@param value number +---@return any result +---@return any value +function RL.GuiColorBarHue( bounds, text, value ) end + +---Color Picker control that avoids conversion to RGB on each call (multiple color controls) +---- Success return int, Vector3 +---@param bounds table +---@param text string|nil +---@param colorHsv table +---@return any result +---@return any colorHsv +function RL.GuiColorPickerHSV( bounds, text, colorHsv ) end + +---Color Panel control that returns HSV color value, used by GuiColorPickerHSV() +---- Success return int, Vector3 +---@param bounds table +---@param text string|nil +---@param colorHsv table +---@return any result +---@return any colorHsv +function RL.GuiColorPanelHSV( bounds, text, colorHsv ) end + +-- Lights - Light management functions + +---Create a light and get shader locations +---- Success return Light +---@param type integer +---@param position table +---@param target table +---@param color table +---@param shader any +---@return any light +function RL.CreateLight( type, position, target, color, shader ) end + +---Send light properties to shader +---@param shader any +---@param light any +---@return any RL.UpdateLightValues +function RL.UpdateLightValues( shader, light ) end + +---Set light type +---@param light any +---@param type integer +---@return any RL.SetLightType +function RL.SetLightType( light, type ) end + +---Set light position +---@param light any +---@param position table +---@return any RL.SetLightPosition +function RL.SetLightPosition( light, position ) end + +---Set light target +---@param light any +---@param target table +---@return any RL.SetLightTarget +function RL.SetLightTarget( light, target ) end + +---Set light color +---@param light any +---@param color table +---@return any RL.SetLightColor +function RL.SetLightColor( light, color ) end + +---Set light enabled +---@param light any +---@param enabled boolean +---@return any RL.SetLightEnabled +function RL.SetLightEnabled( light, enabled ) end + +---Get light type +---- Success return int +---@param light any +---@return any type +function RL.GetLightType( light ) end + +---Get light position +---- Success return Vector3 +---@param light any +---@return any position +function RL.GetLightPosition( light ) end + +---Get light target +---- Success return Vector3 +---@param light any +---@return any target +function RL.GetLightTarget( light ) end + +---Get light color +---- Success return Color +---@param light any +---@return any color +function RL.GetLightColor( light ) end + +---Get light enabled +---- Success return bool +---@param light any +---@return any enabled +function RL.IsLightEnabled( light ) end + +-- RLGL - Matrix operations + +---Choose the current matrix to be transformed +---@param mode integer +---@return any RL.rlMatrixMode +function RL.rlMatrixMode( mode ) end + +---Push the current matrix to stack +---@return any RL.rlPushMatrix +function RL.rlPushMatrix() end + +---Pop latest inserted matrix from stack +---@return any RL.rlPopMatrix +function RL.rlPopMatrix() end + +---Reset current matrix to identity matrix +---@return any RL.rlLoadIdentity +function RL.rlLoadIdentity() end + +---Multiply the current matrix by a translation matrix +---@param translation table +---@return any RL.rlTranslatef +function RL.rlTranslatef( translation ) end + +---Multiply the current matrix by a rotation matrix +---@param angle number +---@param rotation table +---@return any RL.rlRotatef +function RL.rlRotatef( angle, rotation ) end + +---Multiply the current matrix by a scaling matrix +---@param scale table +---@return any RL.rlScalef +function RL.rlScalef( scale ) end + +---Multiply the current matrix by another matrix +---@param matrix table +---@return any RL.rlMultMatrixf +function RL.rlMultMatrixf( matrix ) end + +---Multiply the current matrix by a perspective matrix generated by parameters +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param znear number +---@param zfar number +---@return any RL.rlFrustum +function RL.rlFrustum( left, right, bottom, top, znear, zfar ) end + +---Multiply the current matrix by an orthographic matrix generated by parameters +---@param left number +---@param right number +---@param bottom number +---@param top number +---@param znear number +---@param zfar number +---@return any RL.rlOrtho +function RL.rlOrtho( left, right, bottom, top, znear, zfar ) end + +---Set the viewport area (transformation from normalized device coordinates to window coordinates) +---NOTE: We store current viewport dimensions +---@param viewport table +---@return any RL.rlViewport +function RL.rlViewport( viewport ) end + +---Set clip planes distances +---@param nearPlane number +---@param farPlane number +---@return any RL.rlSetClipPlanes +function RL.rlSetClipPlanes( nearPlane, farPlane ) end + +---Get cull plane distance near +---- Success return float +---@return any distance +function RL.rlGetCullDistanceNear() end + +---Get cull plane distance far +---- Success return float +---@return any distance +function RL.rlGetCullDistanceFar() end + +-- RLGL - Vertex level operations + +---Initialize drawing mode (how to organize vertex) +---@param mode integer +---@return any RL.rlBegin +function RL.rlBegin( mode ) end + +---Finish vertex providing +---@return any RL.rlEnd +function RL.rlEnd() end + +---Define one vertex (position) +---@param position table +---@return any RL.rlVertex2f +function RL.rlVertex2f( position ) end + +---Define one vertex (position) +---@param position table +---@return any RL.rlVertex3f +function RL.rlVertex3f( position ) end + +---Define one vertex (texture coordinate) - 2 float +---@param texCoord table +---@return any RL.rlTexCoord2f +function RL.rlTexCoord2f( texCoord ) end + +---Define one vertex (normal) - 3 float +---@param normal table +---@return any RL.rlNormal3f +function RL.rlNormal3f( normal ) end + +---Define one vertex (color) - 4 byte +---@param color table +---@return any RL.rlColor4ub +function RL.rlColor4ub( color ) end + +---Define one vertex (color) - 3 float +---@param color table +---@return any RL.rlColor3f +function RL.rlColor3f( color ) end + +---Define one vertex (color) - 4 float +---@param color table +---@return any RL.rlColor4f +function RL.rlColor4f( color ) end + +-- RLGL - Vertex buffers state + +---Enable vertex array (VAO, if supported) +---- Success return bool +---@param vaoId integer +---@return any supported +function RL.rlEnableVertexArray( vaoId ) end + +---Disable vertex array (VAO, if supported) +---@return any RL.rlDisableVertexArray +function RL.rlDisableVertexArray() end + +---Enable vertex buffer (VBO) +---- Failure return false +---- Success return true +---@param id integer +---@return any RL.rlEnableVertexBuffer +function RL.rlEnableVertexBuffer( id ) end + +---Disable vertex buffer (VBO) +---@return any RL.rlDisableVertexBuffer +function RL.rlDisableVertexBuffer() end + +---Enable vertex buffer element (VBO element) +---@param id integer +---@return any RL.rlEnableVertexBufferElement +function RL.rlEnableVertexBufferElement( id ) end + +---Disable vertex buffer element (VBO element) +---@return any RL.rlDisableVertexBufferElement +function RL.rlDisableVertexBufferElement() end + +---Enable vertex attribute index +---@param index integer +---@return any RL.rlEnableVertexAttribute +function RL.rlEnableVertexAttribute( index ) end + +---Disable vertex attribute index +---@param index integer +---@return any RL.rlDisableVertexAttribute +function RL.rlDisableVertexAttribute( index ) end + +---Enable attribute state pointer +---@param vertexAttribType integer +---@param buffer any +---@return any RL.rlEnableStatePointer +function RL.rlEnableStatePointer( vertexAttribType, buffer ) end + +---Disable attribute state pointer +---@param vertexAttribType integer +---@return any RL.rlDisableStatePointer +function RL.rlDisableStatePointer( vertexAttribType ) end + +-- RLGL - Textures state + +---Select and active a texture slot +---@param slot integer +---@return any RL.rlActiveTextureSlot +function RL.rlActiveTextureSlot( slot ) end + +---Enable texture +---@param id integer +---@return any RL.rlEnableTexture +function RL.rlEnableTexture( id ) end + +---Disable texture +---@return any RL.rlDisableTexture +function RL.rlDisableTexture() end + +---Enable texture cubemap +---@param id integer +---@return any RL.rlEnableTextureCubemap +function RL.rlEnableTextureCubemap( id ) end + +---Disable texture cubemap +---@return any RL.rlDisableTextureCubemap +function RL.rlDisableTextureCubemap() end + +---Set texture parameters (filter, wrap) +---@param id integer +---@param param integer +---@param value integer +---@return any RL.rlTextureParameters +function RL.rlTextureParameters( id, param, value ) end + +---Set cubemap parameters (filter, wrap) +---@param id integer +---@param param integer +---@param value integer +---@return any RL.rlCubemapParameters +function RL.rlCubemapParameters( id, param, value ) end + +-- RLGL - Shader state + +---Enable shader program +---@param id integer +---@return any RL.rlEnableShader +function RL.rlEnableShader( id ) end + +---Disable shader program +---@return any RL.rlDisableShader +function RL.rlDisableShader() end + +-- RLGL - Framebuffer state + +---Enable render texture (fbo) +---@param id integer +---@return any RL.rlEnableFramebuffer +function RL.rlEnableFramebuffer( id ) end + +---Disable render texture (fbo), return to default framebuffer +---@return any RL.rlDisableFramebuffer +function RL.rlDisableFramebuffer() end + +---Get the currently active render texture (fbo), 0 for default framebuffer +---- Success return int +---@return any framebuffer +function RL.rlGetActiveFramebuffer() end + +---Activate multiple draw color buffers +---@param count integer +---@return any RL.rlActiveDrawBuffers +function RL.rlActiveDrawBuffers( count ) end + +---Blit active framebuffer to main framebuffer +---@param srcRect table +---@param dstRect table +---@param bufferMask integer +---@return any RL.rlBlitFramebuffer +function RL.rlBlitFramebuffer( srcRect, dstRect, bufferMask ) end + +---Bind framebuffer (FBO) +---@param target integer +---@param framebuffer integer +---@return any RL.rlBindFramebuffer +function RL.rlBindFramebuffer( target, framebuffer ) end + +-- RLGL - General render state + +---Enable color blending +---@return any RL.rlEnableColorBlend +function RL.rlEnableColorBlend() end + +---Disable color blending +---@return any RL.rlDisableColorBlend +function RL.rlDisableColorBlend() end + +---Enable depth test +---@return any RL.rlEnableDepthTest +function RL.rlEnableDepthTest() end + +---Disable depth test +---@return any RL.rlDisableDepthTest +function RL.rlDisableDepthTest() end + +---Enable depth write +---@return any RL.rlEnableDepthMask +function RL.rlEnableDepthMask() end + +---Disable depth write +---@return any RL.rlDisableDepthMask +function RL.rlDisableDepthMask() end + +---Enable backface culling +---@return any RL.rlEnableBackfaceCulling +function RL.rlEnableBackfaceCulling() end + +---Disable backface culling +---@return any RL.rlDisableBackfaceCulling +function RL.rlDisableBackfaceCulling() end + +---Color mask control +---@param r boolean +---@param g boolean +---@param b boolean +---@param a boolean +---@return any RL.rlColorMask +function RL.rlColorMask( r, g, b, a ) end + +---Set face culling mode +---@param mode integer +---@return any RL.rlSetCullFace +function RL.rlSetCullFace( mode ) end + +---Enable scissor test +---@return any RL.rlEnableScissorTest +function RL.rlEnableScissorTest() end + +---Disable scissor test +---@return any RL.rlDisableScissorTest +function RL.rlDisableScissorTest() end + +---Scissor test +---@param area table +---@return any RL.rlScissor +function RL.rlScissor( area ) end + +---Enable wire mode +---@return any RL.rlEnableWireMode +function RL.rlEnableWireMode() end + +---Enable point mode +---@return any RL.rlEnablePointMode +function RL.rlEnablePointMode() end + +---Disable wire mode +---@return any RL.rlDisableWireMode +function RL.rlDisableWireMode() end + +---Set the line drawing width +---@param width number +---@return any RL.rlSetLineWidth +function RL.rlSetLineWidth( width ) end + +---Get the line drawing width +---- Success return float +---@return any width +function RL.rlGetLineWidth() end + +---Enable line aliasing +---@return any RL.rlEnableSmoothLines +function RL.rlEnableSmoothLines() end + +---Disable line aliasing +---@return any RL.rlDisableSmoothLines +function RL.rlDisableSmoothLines() end + +---Enable stereo rendering +---@return any RL.rlEnableStereoRender +function RL.rlEnableStereoRender() end + +---Enable stereo rendering +---@return any RL.rlDisableStereoRender +function RL.rlDisableStereoRender() end + +---Check if stereo render is enabled +---- Success return bool +---@return any enabled +function RL.rlIsStereoRenderEnabled() end + +---Clear color buffer with color +---@param color table +---@return any RL.rlClearColor +function RL.rlClearColor( color ) end + +---Clear used screen buffers (color and depth) +---@return any RL.rlClearScreenBuffers +function RL.rlClearScreenBuffers() end + +---Check and log OpenGL error codes +---@return any RL.rlCheckErrors +function RL.rlCheckErrors() end + +---Set blending mode +---@param mode integer +---@return any RL.rlSetBlendMode +function RL.rlSetBlendMode( mode ) end + +---Set blending mode factor and equation (using OpenGL factors) +---@param glSrcFactor integer +---@param glDstFactor integer +---@param glEquation integer +---@return any RL.rlSetBlendFactors +function RL.rlSetBlendFactors( glSrcFactor, glDstFactor, glEquation ) end + +---Set blending mode factors and equations separately (using OpenGL factors) +---@param glSrcRGB integer +---@param glDstRGB integer +---@param glSrcAlpha integer +---@param glDstAlpha integer +---@param glEqRGB integer +---@param glEqAlpha integer +---@return any RL.rlSetBlendFactorsSeparate +function RL.rlSetBlendFactorsSeparate( glSrcRGB, glDstRGB, glSrcAlpha, glDstAlpha, glEqRGB, glEqAlpha ) end + +-- RLGL - Initialization functions + +---Get current OpenGL version +---- Success return int +---@return any version +function RL.rlGetVersion() end + +---Set current framebuffer width +---@param width integer +---@return any version +function RL.rlSetFramebufferWidth( width ) end + +---Get default framebuffer width +---- Success return int +---@return any width +function RL.rlGetFramebufferWidth() end + +---Set current framebuffer height +---@param height integer +---@return any version +function RL.rlSetFramebufferHeight( height ) end + +---Get default framebuffer height +---- Success return int +---@return any height +function RL.rlGetFramebufferHeight() end + +---Get default texture id +---- Success return int +---@return any id +function RL.rlGetTextureIdDefault() end + +---Get default shader id +---- Success return int +---@return any id +function RL.rlGetShaderIdDefault() end + +---Get default shader locations +---- Success return int{} +---@return any locations +function RL.rlGetShaderLocsDefault() end + +-- RLGL - Render batch management + +---Load a render batch system +---- Success return rlRenderBatch +---@param numBuffers integer +---@param bufferElements integer +---@return any renderBatch +function RL.rlLoadRenderBatch( numBuffers, bufferElements ) end + +---Unload render batch system +---@param renderBatch any +---@return any RL.rlUnloadRenderBatch +function RL.rlUnloadRenderBatch( renderBatch ) end + +---Draw render batch data (Update->Draw->Reset) +---@param renderBatch any +---@return any RL.rlDrawRenderBatch +function RL.rlDrawRenderBatch( renderBatch ) end + +---Set the active render batch for rlgl (nil for default internal) +---@param renderBatch any +---@return any RL.rlSetRenderBatchActive +function RL.rlSetRenderBatchActive( renderBatch ) end + +---Update and draw internal render batch +---@return any RL.rlDrawRenderBatchActive +function RL.rlDrawRenderBatchActive() end + +---Check internal buffer overflow for a given number of vertex and force a rlRenderBatch draw call if required +---- Success return bool +---@param vCount integer +---@return any overflow +function RL.rlCheckRenderBatchLimit( vCount ) end + +---Set current texture for render batch and check buffers limits +---@param id integer +---@return any RL.rlSetTexture +function RL.rlSetTexture( id ) end + +-- RLGL - Vertex buffers management + +---Load vertex array (vao) if supported +---- Success return int +---@return any vaoId +function RL.rlLoadVertexArray() end + +---Load a vertex buffer attribute +---- Success return int +---@param buffer any +---@param dynamic boolean +---@return any vboId +function RL.rlLoadVertexBuffer( buffer, dynamic ) end + +---Load a new attributes element buffer +---- Success return int +---@param buffer any +---@param dynamic boolean +---@return any vboId +function RL.rlLoadVertexBufferElement( buffer, dynamic ) end + +---Update GPU buffer with new data +---@param bufferId integer +---@param buffer any +---@param offset integer +---@return any RL.rlUpdateVertexBuffer +function RL.rlUpdateVertexBuffer( bufferId, buffer, offset ) end + +---Update vertex buffer elements with new data +---@param id integer +---@param buffer any +---@param offset integer +---@return any RL.rlUpdateVertexBufferElements +function RL.rlUpdateVertexBufferElements( id, buffer, offset ) end + +---Unload vertex array object (VAO) +---@param vaoId integer +---@return any RL.rlUnloadVertexArray +function RL.rlUnloadVertexArray( vaoId ) end + +---Unload vertex buffer (VBO) +---@param vboId integer +---@return any RL.rlUnloadVertexBuffer +function RL.rlUnloadVertexBuffer( vboId ) end + +---Set vertex attribute data configuration +---@param index integer +---@param compSize integer +---@param type integer +---@param normalized boolean +---@param stride integer +---@param offset integer +---@return any RL.rlSetVertexAttribute +function RL.rlSetVertexAttribute( index, compSize, type, normalized, stride, offset ) end + +---Set vertex attribute divisor +---@param index integer +---@param divisor integer +---@return any RL.rlSetVertexAttributeDivisor +function RL.rlSetVertexAttributeDivisor( index, divisor ) end + +---Set vertex attribute default value +---@param locIndex integer +---@param value table +---@param attribType integer +---@return any RL.rlSetVertexAttributeDefault +function RL.rlSetVertexAttributeDefault( locIndex, value, attribType ) end + +---Draw vertex array +---@param offset integer +---@param count integer +---@return any RL.rlDrawVertexArray +function RL.rlDrawVertexArray( offset, count ) end + +---Draw vertex array elements +---@param offset integer +---@param count integer +---@param buffer any +---@return any RL.rlDrawVertexArrayElements +function RL.rlDrawVertexArrayElements( offset, count, buffer ) end + +---Draw vertex array instanced +---@param offset integer +---@param count integer +---@param instances integer +---@return any RL.rlDrawVertexArrayInstanced +function RL.rlDrawVertexArrayInstanced( offset, count, instances ) end + +---Draw vertex array elements instanced +---@param offset integer +---@param count integer +---@param buffer any +---@param instances integer +---@return any RL.rlDrawVertexArrayElementsInstanced +function RL.rlDrawVertexArrayElementsInstanced( offset, count, buffer, instances ) end + +-- RLGL - Textures management + +---Load texture in GPU +---- Success return int +---@param data any +---@param size table +---@param format integer +---@param mipmapCount integer +---@return any id +function RL.rlLoadTexture( data, size, format, mipmapCount ) end + +---Load depth texture/renderbuffer (to be attached to fbo) +---- Success return int +---@param size table +---@param useRenderBuffer boolean +---@return any id +function RL.rlLoadTextureDepth( size, useRenderBuffer ) end + +---Load texture cubemap data +---- Success return int +---@param data any +---@param size integer +---@param format integer +---@param mipmapCount integer +---@return any id +function RL.rlLoadTextureCubemap( data, size, format, mipmapCount ) end + +---Update GPU texture with new data +---@param id integer +---@param offset table +---@param size table +---@param format integer +---@param data any +---@return any RL.rlUpdateTexture +function RL.rlUpdateTexture( id, offset, size, format, data ) end + +---Get OpenGL internal formats +---- Success return int, int, int +---@param format integer +---@return any glInternalFormat +---@return any glFormat +---@return any glType +function RL.rlGetGlTextureFormats( format ) end + +---Get name string for pixel format +---- Success return string +---@param format integer +---@return any name +function RL.rlGetPixelFormatName( format ) end + +---Unload texture from GPU memory +---@param id integer +---@return any RL.rlUnloadTexture +function RL.rlUnloadTexture( id ) end + +---Generate mipmap data for selected texture +---- Success return int +---@param id integer +---@param size table +---@param format integer +---@return any mipmapCount +function RL.rlGenTextureMipmaps( id, size, format ) end + +---Read texture pixel data +---- Success return Buffer +---@param id integer +---@param size table +---@param format integer +---@return any data +function RL.rlReadTexturePixels( id, size, format ) end + +---Read screen pixel data (color buffer) +---- Success return Buffer +---@param size table +---@return any data +function RL.rlReadScreenPixels( size ) end + +-- RLGL - Framebuffer management (fbo) + +---Load an empty framebuffer +---- Success return int +---@return any fboId +function RL.rlLoadFramebuffer() end + +---Attach texture/renderbuffer to a framebuffer +---@param fboId integer +---@param texId integer +---@param attachType integer +---@param texType integer +---@param mipLevel integer +---@return any RL.rlFramebufferAttach +function RL.rlFramebufferAttach( fboId, texId, attachType, texType, mipLevel ) end + +---Verify framebuffer is complete +---- Success return bool +---@param id integer +---@return any isComplete +function RL.rlFramebufferComplete( id ) end + +---Delete framebuffer from GPU +---@param id integer +---@return any RL.rlUnloadFramebuffer +function RL.rlUnloadFramebuffer( id ) end + +-- RLGL - Shaders management + +---Load shader from code strings +---- Success return int +---@param vsCode string +---@param fsCode string +---@return any shaderId +function RL.rlLoadShaderCode( vsCode, fsCode ) end + +---Compile custom shader and return shader id (type: RL_VERTEX_SHADER, RL_FRAGMENT_SHADER, RL_COMPUTE_SHADER) +---- Success return int +---@param shaderCode string +---@param type integer +---@return any shaderId +function RL.rlCompileShader( shaderCode, type ) end + +---Load custom shader program +---- Success return int +---@param vShaderId integer +---@param fShaderId integer +---@return any shaderProgramId +function RL.rlLoadShaderProgram( vShaderId, fShaderId ) end + +---Unload shader program +---@param id integer +---@return any RL.rlUnloadShaderProgram +function RL.rlUnloadShaderProgram( id ) end + +---Get shader location uniform +---- Success return int +---@param shaderId integer +---@param uniformName string +---@return any location +function RL.rlGetLocationUniform( shaderId, uniformName ) end + +---Get shader location attribute +---- Success return int +---@param shaderId integer +---@param attribName string +---@return any location +function RL.rlGetLocationAttrib( shaderId, attribName ) end + +---Set shader value uniform +---@param locIndex integer +---@param value any +---@param uniformType integer +---@param count integer +---@return any RL.rlSetUniform +function RL.rlSetUniform( locIndex, value, uniformType, count ) end + +---Set shader value matrix +---@param locIndex integer +---@param mat table +---@return any RL.rlSetUniformMatrix +function RL.rlSetUniformMatrix( locIndex, mat ) end + +---Set shader value matrices +---@param locIndex integer +---@param mat table +---@return any RL.rlSetUniformMatrices +function RL.rlSetUniformMatrices( locIndex, mat ) end + +---Set shader value sampler +---@param locIndex integer +---@param textureId integer +---@return any RL.rlSetUniformSampler +function RL.rlSetUniformSampler( locIndex, textureId ) end + +---Set shader currently active (id and locations) +---@param id integer +---@param locs table +---@return any RL.rlSetShader +function RL.rlSetShader( id, locs ) end + +-- RLGL - Compute shader management + +---Load compute shader program +---- Success return int +---@param shaderId integer +---@return any programId +function RL.rlLoadComputeShaderProgram( shaderId ) end + +---Dispatch compute shader (equivalent to *draw* for graphics pipeline) +---@param groupX integer +---@param groupY integer +---@param groupZ integer +---@return any RL.rlComputeShaderDispatch +function RL.rlComputeShaderDispatch( groupX, groupY, groupZ ) end + +-- RLGL - Shader buffer storage object management (ssbo) + +---Load shader storage buffer object (SSBO) +---- Success return int +---@param size integer +---@param data any +---@param usageHint integer +---@return any buffer +function RL.rlLoadShaderBuffer( size, data, usageHint ) end + +---Unload shader storage buffer object (SSBO) +---@param ssboId integer +---@return any RL.rlUnloadShaderBuffer +function RL.rlUnloadShaderBuffer( ssboId ) end + +---Update SSBO buffer data +---@param id integer +---@param data any +---@param offset integer +---@return any RL.rlUpdateShaderBuffer +function RL.rlUpdateShaderBuffer( id, data, offset ) end + +---Bind SSBO buffer +---@param id integer +---@param index integer +---@return any RL.rlBindShaderBuffer +function RL.rlBindShaderBuffer( id, index ) end + +---Read SSBO buffer data (GPU->CPU) +---- Success return Buffer +---@param id integer +---@param count integer +---@param offset integer +---@return any data +function RL.rlReadShaderBuffer( id, count, offset ) end + +---Copy SSBO data between buffers +---@param destId integer +---@param srcId integer +---@param destOffset integer +---@param srcOffset integer +---@param count integer +---@return any RL.rlCopyShaderBuffer +function RL.rlCopyShaderBuffer( destId, srcId, destOffset, srcOffset, count ) end + +---Get SSBO buffer size +---- Success return int +---@param id integer +---@return any size +function RL.rlGetShaderBufferSize( id ) end + +-- RLGL - Buffer management + +---Bind image texture +---@param id integer +---@param index integer +---@param format integer +---@param readonly boolean +---@return any RL.rlBindImageTexture +function RL.rlBindImageTexture( id, index, format, readonly ) end + +-- RLGL - Matrix state management + +---Get internal modelview matrix +---- Success return Matrix +---@return any modelview +function RL.rlGetMatrixModelview() end + +---Get internal projection matrix +---- Success return Matrix +---@return any projection +function RL.rlGetMatrixProjection() end + +---Get internal accumulated transform matrix +---- Success return Matrix +---@return any transform +function RL.rlGetMatrixTransform() end + +---Get internal projection matrix for stereo render (selected eye) +---- Success return Matrix +---@param eye integer +---@return any projection +function RL.rlGetMatrixProjectionStereo( eye ) end + +---Get internal view offset matrix for stereo render (selected eye) +---- Success return Matrix +---@param eye integer +---@return any viewOffset +function RL.rlGetMatrixViewOffsetStereo( eye ) end + +---Set a custom projection matrix (replaces internal projection matrix) +---@param proj table +---@return any RL.rlSetMatrixProjection +function RL.rlSetMatrixProjection( proj ) end + +---Set a custom modelview matrix (replaces internal modelview matrix) +---@param view table +---@return any RL.rlSetMatrixModelview +function RL.rlSetMatrixModelview( view ) end + +---Set eyes projection matrices for stereo rendering +---@param right table +---@param left table +---@return any RL.rlSetMatrixProjectionStereo +function RL.rlSetMatrixProjectionStereo( right, left ) end + +---Set eyes view offsets matrices for stereo rendering +---@param right table +---@param left table +---@return any RL.rlSetMatrixViewOffsetStereo +function RL.rlSetMatrixViewOffsetStereo( right, left ) end + +-- OpenGL - Rendering + +---Clear buffers to preset values +---@param mask integer +---@return any RL.glClear +function RL.glClear( mask ) end + +-- OpenGL - Frame Buffers + +---Copy a block of pixels from one framebuffer object to another. +---Use nil RenderTexture for window framebuffer +---@param srcTex any +---@param dstTex any +---@param srcRect table +---@param dstRect table +---@param mask integer +---@param filter integer +---@return any RL.glBlitFramebuffer +function RL.glBlitFramebuffer( srcTex, dstTex, srcRect, dstRect, mask, filter ) end + +-- OpenGL - State Management + +---Specify mapping of depth values from normalized device coordinates to window coordinates +---@param nearVal number +---@param farVal number +---@return any RL.glDepthRange +function RL.glDepthRange( nearVal, farVal ) end + +---Enable server-side GL capabilities +---@param cap integer +---@return any RL.glEnable +function RL.glEnable( cap ) end + +---Disable server-side GL capabilities +---@param cap integer +---@return any RL.glDisable +function RL.glDisable( cap ) end + +---Set the scale and units used to calculate depth values +---@param factor number +---@param units number +---@return any RL.glPolygonOffset +function RL.glPolygonOffset( factor, units ) end + +---Set front and back function and reference value for stencil testing +---@param func integer +---@param ref integer +---@param mask integer +---@return any RL.glStencilFunc +function RL.glStencilFunc( func, ref, mask ) end + +---Set front and/or back function and reference value for stencil testing +---@param face integer +---@param func integer +---@param ref integer +---@param mask integer +---@return any RL.glStencilFuncSeparate +function RL.glStencilFuncSeparate( face, func, ref, mask ) end + +---Control the front and back writing of individual bits in the stencil planes +---@param mask integer +---@return any RL.glStencilMask +function RL.glStencilMask( mask ) end + +---Control the front and/or back writing of individual bits in the stencil planes +---@param face integer +---@param mask integer +---@return any RL.glStencilMaskSeparate +function RL.glStencilMaskSeparate( face, mask ) end + +---Set front and back stencil test actions +---@param sfail integer +---@param dpfail integer +---@param dppass integer +---@return any RL.glStencilOp +function RL.glStencilOp( sfail, dpfail, dppass ) end + +---Set front and back stencil test actions +---@param face integer +---@param sfail integer +---@param dpfail integer +---@param dppass integer +---@return any RL.glStencilOpSeparate +function RL.glStencilOpSeparate( face, sfail, dpfail, dppass ) end + +-- OpenGL - Utility + +---Return a string describing the current GL connection. GL_EXTENSIONS returns the extension string supported by the implementation at index +---- Success return string +---@param name integer +---@param index integer|nil +---@return any connection +function RL.glGetString( name, index ) end + +-- Easings - Linear Easing functions + +---Ease linear +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseLinear( t, b, c, d ) end + +-- Easings - Sine Easing functions + +---Ease sine in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseSineIn( t, b, c, d ) end + +---Ease sine out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseSineOut( t, b, c, d ) end + +---Ease sine in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseSineInOut( t, b, c, d ) end + +-- Easings - Circular Easing functions + +---Ease circle in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCircIn( t, b, c, d ) end + +---Ease circle out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCircOut( t, b, c, d ) end + +---Ease circle in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCircInOut( t, b, c, d ) end + +-- Easings - Cubic Easing functions + +---Ease cubic in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCubicIn( t, b, c, d ) end + +---Ease cubic out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCubicOut( t, b, c, d ) end + +---Ease cubic in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseCubicInOut( t, b, c, d ) end + +-- Easings - Quadratic Easing functions + +---Ease quadratic in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseQuadIn( t, b, c, d ) end + +---Ease quadratic out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseQuadOut( t, b, c, d ) end + +---Ease quadratic in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseQuadInOut( t, b, c, d ) end + +-- Easings - Exponential Easing functions + +---Ease exponential in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseExpoIn( t, b, c, d ) end + +---Ease exponential out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseExpoOut( t, b, c, d ) end + +---Ease exponential in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseExpoInOut( t, b, c, d ) end + +-- Easings - Back Easing functions + +---Ease back in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBackIn( t, b, c, d ) end + +---Ease back out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBackOut( t, b, c, d ) end + +---Ease back in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBackInOut( t, b, c, d ) end + +-- Easings - Bounce Easing functions + +---Ease bounce in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBounceIn( t, b, c, d ) end + +---Ease bounce out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBounceOut( t, b, c, d ) end + +---Ease bounce in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseBounceInOut( t, b, c, d ) end + +-- Easings - Elastic Easing functions + +---Ease elastic in +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseElasticIn( t, b, c, d ) end + +---Ease elastic out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseElasticOut( t, b, c, d ) end + +---Ease elastic in out +---- Success return float +---@param t number +---@param b number +---@param c number +---@param d number +---@return any value +function RL.EaseElasticInOut( t, b, c, d ) end + +-- Bitwise Operations - Arithmetic + +---Equivalent to a & b in C +---- Success return int +---@param a integer +---@param b integer +---@return any result +function RL.BitAnd( a, b ) end + +---Equivalent to a | b in C +---- Success return int +---@param a integer +---@param b integer +---@return any result +function RL.BitOr( a, b ) end + +---Equivalent to a ^ b in C +---- Success return int +---@param a integer +---@param b integer +---@return any result +function RL.BitXor( a, b ) end + +---Equivalent to ~v in C +---- Success return int +---@param v integer +---@return any result +function RL.BitNot( v ) end + +---Equivalent to v << n in C +---- Success return int +---@param v integer +---@param n integer +---@return any result +function RL.BitShiftLeft( v, n ) end + +---Equivalent to v >> n in C +---- Success return int +---@param v integer +---@param n integer +---@return any result +function RL.BitShiftRight( v, n ) end + +---Set bit in index i to state b in value v +---- Success return int +---@param v integer +---@param i integer +---@param b boolean +---@return any result +function RL.BitSet( v, i, b ) end + +---Get bit in index i from value v +---- Success return bool +---@param v integer +---@param i integer +---@return any bit +function RL.BitGet( v, i ) end + +---Toggle bit in index i in value v +---- Success return int +---@param v integer +---@param i integer +---@return any result +function RL.BitToggle( v, i ) end + +-- GLFW Core - Input-related functions: keyboard + +---This function returns the name of the specified printable key, encoded as UTF-8. +---If the key is KEY_UNKNOWN, the scancode is used to identify the key, +---otherwise the scancode is ignored. If you specify a non-printable key, +---or KEY_UNKNOWN and a scancode that maps to a non-printable key, +---this function returns nil but does not emit an error. +---- Success return string or nil +---@param key integer +---@param scancode integer +---@return any keyName +function RL.GetKeyName( key, scancode ) end + +---This function returns the platform-specific scancode of the specified key. +---If the key is KEY_UNKNOWN or does not exist on the keyboard this method will return -1. +---- Success return int +---@param key integer +---@return any scancode +function RL.GetKeyScancode( key ) end + |
