diff options
| author | jussi | 2023-04-06 12:31:37 +0300 |
|---|---|---|
| committer | jussi | 2023-04-06 12:31:37 +0300 |
| commit | 2526c9732e7ea35bc9ed3e43a4db77b7e6364c5a (patch) | |
| tree | 825775577403d9341045571adb266173513c4bbd /ReiLua_API.lua | |
| parent | 198a74c0aa27389c062c47bc29187c58a9d6c4a1 (diff) | |
| download | reilua-enhanced-2526c9732e7ea35bc9ed3e43a4db77b7e6364c5a.tar.gz reilua-enhanced-2526c9732e7ea35bc9ed3e43a4db77b7e6364c5a.tar.bz2 reilua-enhanced-2526c9732e7ea35bc9ed3e43a4db77b7e6364c5a.zip | |
All global variables and functions are not in global RL table. doc_parser creates also ReiLua_API.lua.
Diffstat (limited to 'ReiLua_API.lua')
| -rw-r--r-- | ReiLua_API.lua | 5385 |
1 files changed, 5385 insertions, 0 deletions
diff --git a/ReiLua_API.lua b/ReiLua_API.lua new file mode 100644 index 0000000..3623336 --- /dev/null +++ b/ReiLua_API.lua @@ -0,0 +1,5385 @@ +-- Put this file into your project folder to provide annotations when using Lua language server. + +RL={} + +-- Functions. + +---This function will be called first when 'main.lua' is found +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.process( delta ) end +---This function will be called every frame after process 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 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 + +-- Globals - ConfigFlags + +RL.FLAG_VSYNC_HINT=64 +RL.FLAG_FULLSCREEN_MODE=2 +RL.FLAG_WINDOW_RESIZABLE=4 +RL.FLAG_WINDOW_UNDECORATED=8 +RL.FLAG_WINDOW_HIDDEN=128 +RL.FLAG_WINDOW_MINIMIZED=512 +RL.FLAG_WINDOW_MAXIMIZED=1024 +RL.FLAG_WINDOW_UNFOCUSED=2048 +RL.FLAG_WINDOW_TOPMOST=4096 +RL.FLAG_WINDOW_ALWAYS_RUN=256 +RL.FLAG_WINDOW_TRANSPARENT=16 +RL.FLAG_WINDOW_HIGHDPI=8192 +RL.FLAG_MSAA_4X_HINT=32 +RL.FLAG_INTERLACED_HINT=65536 + +-- Globals - TraceLogLevel + +RL.LOG_ALL=0 +RL.LOG_TRACE=1 +RL.LOG_DEBUG=2 +RL.LOG_INFO=3 +RL.LOG_WARNING=4 +RL.LOG_ERROR=5 +RL.LOG_FATAL=6 +RL.LOG_NONE=7 + +-- Globals - KeyboardKey + +RL.GLFW_KEY_UNKNOWN=nil +RL.KEY_NULL=0 +RL.KEY_APOSTROPHE=39 +RL.KEY_COMMA=44 +RL.KEY_MINUS=45 +RL.KEY_PERIOD=46 +RL.KEY_SLASH=47 +RL.KEY_ZERO=48 +RL.KEY_ONE=49 +RL.KEY_TWO=50 +RL.KEY_THREE=51 +RL.KEY_FOUR=52 +RL.KEY_FIVE=53 +RL.KEY_SIX=54 +RL.KEY_SEVEN=55 +RL.KEY_EIGHT=56 +RL.KEY_NINE=57 +RL.KEY_SEMICOLON=59 +RL.KEY_EQUAL=61 +RL.KEY_A=65 +RL.KEY_B=66 +RL.KEY_C=67 +RL.KEY_D=68 +RL.KEY_E=69 +RL.KEY_F=70 +RL.KEY_G=71 +RL.KEY_H=72 +RL.KEY_I=73 +RL.KEY_J=74 +RL.KEY_K=75 +RL.KEY_L=76 +RL.KEY_M=77 +RL.KEY_N=78 +RL.KEY_O=79 +RL.KEY_P=80 +RL.KEY_Q=81 +RL.KEY_R=82 +RL.KEY_S=83 +RL.KEY_T=84 +RL.KEY_U=85 +RL.KEY_V=86 +RL.KEY_W=87 +RL.KEY_X=88 +RL.KEY_Y=89 +RL.KEY_Z=90 +RL.KEY_LEFT_BRACKET=91 +RL.KEY_BACKSLASH=92 +RL.KEY_RIGHT_BRACKET=93 +RL.KEY_GRAVE=96 +RL.KEY_SPACE=32 +RL.KEY_ESCAPE=256 +RL.KEY_ENTER=257 +RL.KEY_TAB=258 +RL.KEY_BACKSPACE=259 +RL.KEY_INSERT=260 +RL.KEY_DELETE=261 +RL.KEY_RIGHT=262 +RL.KEY_LEFT=263 +RL.KEY_DOWN=264 +RL.KEY_UP=265 +RL.KEY_PAGE_UP=266 +RL.KEY_PAGE_DOWN=267 +RL.KEY_HOME=268 +RL.KEY_END=269 +RL.KEY_CAPS_LOCK=280 +RL.KEY_SCROLL_LOCK=281 +RL.KEY_NUM_LOCK=282 +RL.KEY_PRINT_SCREEN=283 +RL.KEY_PAUSE=284 +RL.KEY_F1=290 +RL.KEY_F2=291 +RL.KEY_F3=292 +RL.KEY_F4=293 +RL.KEY_F5=294 +RL.KEY_F6=295 +RL.KEY_F7=296 +RL.KEY_F8=297 +RL.KEY_F9=298 +RL.KEY_F10=299 +RL.KEY_F11=300 +RL.KEY_F12=301 +RL.KEY_LEFT_SHIFT=340 +RL.KEY_LEFT_CONTROL=341 +RL.KEY_LEFT_ALT=342 +RL.KEY_LEFT_SUPER=343 +RL.KEY_RIGHT_SHIFT=344 +RL.KEY_RIGHT_CONTROL=345 +RL.KEY_RIGHT_ALT=346 +RL.KEY_RIGHT_SUPER=347 +RL.KEY_KB_MENU=348 +RL.KEY_KP_0=320 +RL.KEY_KP_1=321 +RL.KEY_KP_2=322 +RL.KEY_KP_3=323 +RL.KEY_KP_4=324 +RL.KEY_KP_5=325 +RL.KEY_KP_6=326 +RL.KEY_KP_7=327 +RL.KEY_KP_8=328 +RL.KEY_KP_9=329 +RL.KEY_KP_DECIMAL=330 +RL.KEY_KP_DIVIDE=331 +RL.KEY_KP_MULTIPLY=332 +RL.KEY_KP_SUBTRACT=333 +RL.KEY_KP_ADD=334 +RL.KEY_KP_ENTER=335 +RL.KEY_KP_EQUAL=336 +RL.KEY_BACK=4 +RL.KEY_MENU=82 +RL.KEY_VOLUME_UP=24 +RL.KEY_VOLUME_DOWN=25 + +-- Globals - MouseButtons + +RL.MOUSE_BUTTON_LEFT=0 +RL.MOUSE_BUTTON_RIGHT=1 +RL.MOUSE_BUTTON_MIDDLE=2 +RL.MOUSE_BUTTON_SIDE=3 +RL.MOUSE_BUTTON_EXTRA=4 +RL.MOUSE_BUTTON_FORWARD=5 +RL.MOUSE_BUTTON_BACK=6 + +-- Globals - MouseCursor + +RL.MOUSE_CURSOR_DEFAULT=0 +RL.MOUSE_CURSOR_ARROW=1 +RL.MOUSE_CURSOR_IBEAM=2 +RL.MOUSE_CURSOR_CROSSHAIR=3 +RL.MOUSE_CURSOR_POINTING_HAND=4 +RL.MOUSE_CURSOR_RESIZE_EW=5 +RL.MOUSE_CURSOR_RESIZE_NS=6 +RL.MOUSE_CURSOR_RESIZE_NWSE=7 +RL.MOUSE_CURSOR_RESIZE_NESW=8 +RL.MOUSE_CURSOR_RESIZE_ALL=9 +RL.MOUSE_CURSOR_NOT_ALLOWED=10 + +-- Globals - GamepadButtons + +RL.GAMEPAD_BUTTON_UNKNOWN=0 +RL.GAMEPAD_BUTTON_LEFT_FACE_UP=1 +RL.GAMEPAD_BUTTON_LEFT_FACE_RIGHT=2 +RL.GAMEPAD_BUTTON_LEFT_FACE_DOWN=3 +RL.GAMEPAD_BUTTON_LEFT_FACE_LEFT=4 +RL.GAMEPAD_BUTTON_RIGHT_FACE_UP=5 +RL.GAMEPAD_BUTTON_RIGHT_FACE_RIGHT=6 +RL.GAMEPAD_BUTTON_RIGHT_FACE_DOWN=7 +RL.GAMEPAD_BUTTON_RIGHT_FACE_LEFT=8 +RL.GAMEPAD_BUTTON_LEFT_TRIGGER_1=9 +RL.GAMEPAD_BUTTON_LEFT_TRIGGER_2=10 +RL.GAMEPAD_BUTTON_RIGHT_TRIGGER_1=11 +RL.GAMEPAD_BUTTON_RIGHT_TRIGGER_2=12 +RL.GAMEPAD_BUTTON_MIDDLE_LEFT=13 +RL.GAMEPAD_BUTTON_MIDDLE=14 +RL.GAMEPAD_BUTTON_MIDDLE_RIGHT=15 +RL.GAMEPAD_BUTTON_LEFT_THUMB=16 +RL.GAMEPAD_BUTTON_RIGHT_THUMB=17 + +-- Globals - GamepadAxis + +RL.GAMEPAD_AXIS_LEFT_X=0 +RL.GAMEPAD_AXIS_LEFT_Y=1 +RL.GAMEPAD_AXIS_RIGHT_X=2 +RL.GAMEPAD_AXIS_RIGHT_Y=3 +RL.GAMEPAD_AXIS_LEFT_TRIGGER=4 +RL.GAMEPAD_AXIS_RIGHT_TRIGGER=5 + +-- Globals - MapTypes + +RL.MATERIAL_MAP_ALBEDO=0 +RL.MATERIAL_MAP_METALNESS=1 +RL.MATERIAL_MAP_NORMAL=2 +RL.MATERIAL_MAP_ROUGHNESS=3 +RL.MATERIAL_MAP_OCCLUSION=4 +RL.MATERIAL_MAP_EMISSION=5 +RL.MATERIAL_MAP_HEIGHT=6 +RL.MATERIAL_MAP_CUBEMAP=7 +RL.MATERIAL_MAP_IRRADIANCE=8 +RL.MATERIAL_MAP_PREFILTER=9 +RL.MATERIAL_MAP_BRDF=10 +RL.MATERIAL_MAP_DIFFUSE=0 +RL.MATERIAL_MAP_SPECULAR=1 + +-- Globals - ShaderLocationIndex + +RL.SHADER_LOC_VERTEX_POSITION=0 +RL.SHADER_LOC_VERTEX_TEXCOORD01=1 +RL.SHADER_LOC_VERTEX_TEXCOORD02=2 +RL.SHADER_LOC_VERTEX_NORMAL=3 +RL.SHADER_LOC_VERTEX_TANGENT=4 +RL.SHADER_LOC_VERTEX_COLOR=5 +RL.SHADER_LOC_MATRIX_MVP=6 +RL.SHADER_LOC_MATRIX_VIEW=7 +RL.SHADER_LOC_MATRIX_PROJECTION=8 +RL.SHADER_LOC_MATRIX_MODEL=9 +RL.SHADER_LOC_MATRIX_NORMAL=10 +RL.SHADER_LOC_VECTOR_VIEW=11 +RL.SHADER_LOC_COLOR_DIFFUSE=12 +RL.SHADER_LOC_COLOR_SPECULAR=13 +RL.SHADER_LOC_COLOR_AMBIENT=14 +RL.SHADER_LOC_MAP_ALBEDO=15 +RL.SHADER_LOC_MAP_METALNESS=16 +RL.SHADER_LOC_MAP_NORMAL=17 +RL.SHADER_LOC_MAP_ROUGHNESS=18 +RL.SHADER_LOC_MAP_OCCLUSION=19 +RL.SHADER_LOC_MAP_EMISSION=20 +RL.SHADER_LOC_MAP_HEIGHT=21 +RL.SHADER_LOC_MAP_CUBEMAP=22 +RL.SHADER_LOC_MAP_IRRADIANCE=23 +RL.SHADER_LOC_MAP_PREFILTER=24 +RL.SHADER_LOC_MAP_BRDF=25 +RL.SHADER_LOC_MAP_DIFFUSE=15 +RL.SHADER_LOC_MAP_SPECULAR=16 + +-- Globals - ShaderUniformDataType + +RL.SHADER_UNIFORM_FLOAT=0 +RL.SHADER_UNIFORM_VEC2=1 +RL.SHADER_UNIFORM_VEC3=2 +RL.SHADER_UNIFORM_VEC4=3 +RL.SHADER_UNIFORM_INT=4 +RL.SHADER_UNIFORM_IVEC2=5 +RL.SHADER_UNIFORM_IVEC3=6 +RL.SHADER_UNIFORM_IVEC4=7 +RL.SHADER_UNIFORM_SAMPLER2D=8 + +-- Globals - ShaderAttributeDataTypes + +RL.SHADER_ATTRIB_FLOAT=0 +RL.SHADER_ATTRIB_VEC2=1 +RL.SHADER_ATTRIB_VEC3=2 +RL.SHADER_ATTRIB_VEC4=3 + +-- Globals - PixelFormats + +RL.PIXELFORMAT_UNCOMPRESSED_GRAYSCALE=1 +RL.PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA=2 +RL.PIXELFORMAT_UNCOMPRESSED_R5G6B5=3 +RL.PIXELFORMAT_UNCOMPRESSED_R8G8B8=4 +RL.PIXELFORMAT_UNCOMPRESSED_R5G5B5A1=5 +RL.PIXELFORMAT_UNCOMPRESSED_R4G4B4A4=6 +RL.PIXELFORMAT_UNCOMPRESSED_R8G8B8A8=7 +RL.PIXELFORMAT_UNCOMPRESSED_R32=8 +RL.PIXELFORMAT_UNCOMPRESSED_R32G32B32=9 +RL.PIXELFORMAT_UNCOMPRESSED_R32G32B32A32=10 +RL.PIXELFORMAT_COMPRESSED_DXT1_RGB=11 +RL.PIXELFORMAT_COMPRESSED_DXT1_RGBA=12 +RL.PIXELFORMAT_COMPRESSED_DXT3_RGBA=13 +RL.PIXELFORMAT_COMPRESSED_DXT5_RGBA=14 +RL.PIXELFORMAT_COMPRESSED_ETC1_RGB=15 +RL.PIXELFORMAT_COMPRESSED_ETC2_RGB=16 +RL.PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA=17 +RL.PIXELFORMAT_COMPRESSED_PVRT_RGB=18 +RL.PIXELFORMAT_COMPRESSED_PVRT_RGBA=19 +RL.PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA=20 +RL.PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA=21 + +-- Globals - TextureFilters + +RL.TEXTURE_FILTER_POINT=0 +RL.TEXTURE_FILTER_BILINEAR=1 +RL.TEXTURE_FILTER_TRILINEAR=2 +RL.TEXTURE_FILTER_ANISOTROPIC_4X=3 +RL.TEXTURE_FILTER_ANISOTROPIC_8X=4 +RL.TEXTURE_FILTER_ANISOTROPIC_16X=5 + +-- Globals - TextureWrap + +RL.TEXTURE_WRAP_REPEAT=0 +RL.TEXTURE_WRAP_CLAMP=1 +RL.TEXTURE_WRAP_MIRROR_REPEAT=2 +RL.TEXTURE_WRAP_MIRROR_CLAMP=3 + +-- Globals - CubemapLayout + +RL.CUBEMAP_LAYOUT_AUTO_DETECT=0 +RL.CUBEMAP_LAYOUT_LINE_VERTICAL=1 +RL.CUBEMAP_LAYOUT_LINE_HORIZONTAL=2 +RL.CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR=3 +RL.CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE=4 +RL.CUBEMAP_LAYOUT_PANORAMA=5 + +-- Globals - FontType + +RL.FONT_DEFAULT=0 +RL.FONT_BITMAP=1 +RL.FONT_SDF=2 + +-- Globals - BlendModes + +RL.BLEND_ALPHA=0 +RL.BLEND_ADDITIVE=1 +RL.BLEND_MULTIPLIED=2 +RL.BLEND_ADD_COLORS=3 +RL.BLEND_SUBTRACT_COLORS=4 +RL.BLEND_ALPHA_PREMULTIPLY=5 +RL.BLEND_CUSTOM=6 + +-- Globals - Gesture + +RL.GESTURE_NONE=0 +RL.GESTURE_TAP=1 +RL.GESTURE_DOUBLETAP=2 +RL.GESTURE_HOLD=4 +RL.GESTURE_DRAG=8 +RL.GESTURE_SWIPE_RIGHT=16 +RL.GESTURE_SWIPE_LEFT=32 +RL.GESTURE_SWIPE_UP=64 +RL.GESTURE_SWIPE_DOWN=128 +RL.GESTURE_PINCH_IN=256 +RL.GESTURE_PINCH_OUT=512 + +-- Globals - CameraMode + +RL.CAMERA_CUSTOM=0 +RL.CAMERA_FREE=1 +RL.CAMERA_ORBITAL=2 +RL.CAMERA_FIRST_PERSON=3 +RL.CAMERA_THIRD_PERSON=4 + +-- Globals - CameraProjections + +RL.CAMERA_PERSPECTIVE=0 +RL.CAMERA_ORTHOGRAPHIC=1 + +-- Globals - N-patchLayout + +RL.NPATCH_NINE_PATCH=0 +RL.NPATCH_THREE_PATCH_VERTICAL=1 +RL.NPATCH_THREE_PATCH_HORIZONTAL=2 + +-- Globals - TextureModes + +RL.TEXTURE_SOURCE_TEXTURE=0 +RL.TEXTURE_SOURCE_RENDER_TEXTURE=1 + +-- Globals - Colors + +RL.LIGHTGRAY={200,200,200,255} +RL.GRAY={130,130,130,255} +RL.DARKGRAY={80,80,80,255} +RL.YELLOW={253,249,0,255} +RL.GOLD={255,203,0,255} +RL.ORANGE={255,161,0,255} +RL.PINK={255,109,194,255} +RL.RED={230,41,55,255} +RL.MAROON={190,33,55,255} +RL.GREEN={0,228,48,255} +RL.LIME={0,158,47,255} +RL.DARKGREEN={0,117,44,255} +RL.SKYBLUE={102,191,255,255} +RL.BLUE={0,121,241,255} +RL.DARKBLUE={0,82,172,255} +RL.PURPLE={200,122,255,255} +RL.VIOLET={135,60,190,255} +RL.DARKPURPLE={112,31,126,255} +RL.BEIGE={211,176,131,255} +RL.BROWN={127,106,79,255} +RL.DARKBROWN={76,63,47,255} +RL.WHITE={255,255,255,255} +RL.BLACK={0,0,0,255} +RL.BLANK={0,0,0,0} +RL.MAGENTA={255,0,255,255} +RL.RAYWHITE={245,245,245,255} + +-- Globals - Math + +RL.PI=3.1415927410126 +RL.DEG2RAD=0.017453292384744 +RL.RAD2DEG=57.295776367188 + +-- Globals - GuiControlState + +RL.STATE_NORMAL=0 +RL.STATE_FOCUSED=1 +RL.STATE_PRESSED=2 +RL.STATE_DISABLED=3 + +-- Globals - GuiTextAlignment + +RL.TEXT_ALIGN_LEFT=0 +RL.TEXT_ALIGN_CENTER=1 +RL.TEXT_ALIGN_RIGHT=2 + +-- Globals - GuiControl + +RL.DEFAULT=0 +RL.LABEL=1 +RL.BUTTON=2 +RL.TOGGLE=3 +RL.SLIDER=4 +RL.PROGRESSBAR=5 +RL.CHECKBOX=6 +RL.COMBOBOX=7 +RL.DROPDOWNBOX=8 +RL.TEXTBOX=9 +RL.VALUEBOX=10 +RL.SPINNER=11 +RL.LISTVIEW=12 +RL.COLORPICKER=13 +RL.SCROLLBAR=14 +RL.STATUSBAR=15 + +-- Globals - GuiControlProperty + +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 +RL.RESERVED=15 + +-- Globals - GuiDefaultProperty + +RL.TEXT_SIZE=16 +RL.TEXT_SPACING=17 +RL.LINE_COLOR=18 +RL.BACKGROUND_COLOR=19 + +-- Globals - GuiToggleProperty + +RL.GROUP_PADDING=16 + +-- Globals - GuiSliderProperty + +RL.SLIDER_WIDTH=16 +RL.SLIDER_PADDING=17 + +-- Globals - GuiProgressBarProperty + +RL.PROGRESS_PADDING=16 + +-- Globals - GuiScrollBarProperty + +RL.ARROWS_SIZE=16 +RL.ARROWS_VISIBLE=17 +RL.SCROLL_SLIDER_PADDING=18 +RL.SCROLL_SLIDER_SIZE=19 +RL.SCROLL_PADDING=20 +RL.SCROLL_SPEED=21 + +-- Globals - GuiCheckBoxProperty + +RL.CHECK_PADDING=16 + +-- Globals - GuiComboBoxProperty + +RL.COMBO_BUTTON_WIDTH=16 +RL.COMBO_BUTTON_SPACING=17 + +-- Globals - GuiDropdownBoxProperty + +RL.ARROW_PADDING=16 +RL.DROPDOWN_ITEMS_SPACING=17 + +-- Globals - GuiTextBoxProperty + +RL.TEXT_INNER_PADDING=16 +RL.TEXT_LINES_SPACING=17 + +-- Globals - GuiSpinnerProperty + +RL.SPIN_BUTTON_WIDTH=16 +RL.SPIN_BUTTON_SPACING=17 + +-- Globals - GuiListViewProperty + +RL.LIST_ITEMS_HEIGHT=16 +RL.LIST_ITEMS_SPACING=17 +RL.SCROLLBAR_WIDTH=18 +RL.SCROLLBAR_SIDE=19 + +-- Globals - GuiColorPickerProperty + +RL.COLOR_SELECTOR_SIZE=16 +RL.HUEBAR_WIDTH=17 +RL.HUEBAR_PADDING=18 +RL.HUEBAR_SELECTOR_HEIGHT=19 +RL.HUEBAR_SELECTOR_OVERFLOW=20 + +-- Globals - LightType + +RL.LIGHT_DIRECTIONAL=0 +RL.LIGHT_POINT=1 +-- Core - Window + +---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 + +---Set monitor for the current window (fullscreen mode) +---- Failure return false +---- Success return true +---@param monitor integer +---@return any success +function RL.SetWindowMonitor( monitor ) end + +---Set window position on screen +---- Failure return false +---- Success return true +---@param pos table +---@return any success +function RL.SetWindowPosition( pos ) end + +---Set window dimensions +---- Failure return false +---- Success return true +---@param size table +---@return any success +function RL.SetWindowSize( size ) end + +---Set window minimum dimensions ( for FLAG_WINDOW_RESIZABLE ) +---- Failure return false +---- Success return true +---@param size table +---@return any success +function RL.SetWindowMinSize( size ) end + +---Get specified monitor position +---- Failure return nil +---- Success return Vector2 +---@param monitor integer +---@return any position +function RL.GetMonitorPosition( monitor ) end + +---Get specified monitor size +---- Failure return nil +---- Success return Vector2 +---@param monitor integer +---@return any size +function RL.GetMonitorSize( monitor ) end + +---Get window position on monitor +---- Success return Vector2 +---@return any position +function RL.GetWindowPosition() end + +---Get screen size +---- Success return Vector2 +---@return any size +function RL.GetScreenSize() end + +---Set window configuration state using flags ( FLAG_FULLSCREEN_MODE, FLAG_WINDOW_RESIZABLE... ) +---- Failure return false +---- Success return true +---@param flag integer +---@return any success +function RL.SetWindowState( flag ) end + +---Check if one specific window flag is enabled ( FLAG_FULLSCREEN_MODE, FLAG_WINDOW_RESIZABLE... ) +---- Failure return nil +---- Success return bool +---@param flag integer +---@return any state +function RL.IsWindowState( 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 + +---Check if window has been resized from last frame +---- Success return bool +---@return any resized +function RL.IsWindowResized() end + +---Set icon for window ( Only PLATFORM_DESKTOP ) +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.SetWindowIcon( image ) end + +---Set title for window ( Only PLATFORM_DESKTOP ) +---- Failure return false +---- Success return true +---@param title string +---@return any success +function RL.SetWindowTitle( title ) 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 physical size in millimetres +---- Failure return false +---- Success return Vector2 +---@param monitor integer +---@return any size +function RL.GetMonitorPhysicalSize( monitor ) end + +---Get specified monitor refresh rate +---- Failure return false +---- Success return int +---@param monitor integer +---@return any size +function RL.GetMonitorRefreshRate( monitor ) end + +---Get window scale DPI factor +---- Success return Vector2 +---@return any scale +function RL.GetWindowScaleDPI() end + +---Get the human-readable, UTF-8 encoded name of the monitor +---- Failure return false +---- Success return string +---@param monitor integer +---@return any name +function RL.GetMonitorName( monitor ) end + +---Close window and unload OpenGL context and free all resources +---@return any RL.CloseWindow +function RL.CloseWindow() end + +---Set clipboard text content +---- Failure return false +---- Success return true +---@param text string +---@return any success +function RL.SetClipboardText( text ) end + +---Get clipboard text content +---- Success return string +---@return any text +function RL.GetClipboardText() end + +-- Core - Timing + +---Set target FPS ( maximum ) +---- Failure return false +---- Success return true +---@param fps integer +---@return any success +function RL.SetTargetFPS( fps ) end + +---Get current FPS +---- Success return int +---@return any FPS +function RL.GetFPS() 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 + +-- Core - Misc + +---Takes a screenshot of current screen ( filename extension defines format ) +---- Failure return false +---- Success return true +---@param fileName string +---@return any success +function RL.TakeScreenshot( fileName ) end + +---Setup init configuration flags ( view FLAGS ) +---- Failure return false +---- Success return true +---@param flags integer +---@return any success +function RL.SetConfigFlags( flags ) end + +---Show trace log messages ( LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR... ) +---- Failure return false +---- Success return true +---@param logLevel integer +---@param text string +---@return any success +function RL.TraceLog( logLevel, text ) end + +---Set the current threshold ( minimum ) log level +---- Failure return false +---- Success return true +---@param logLevel integer +---@return any success +function RL.SetTraceLogLevel( logLevel ) end + +---Open URL with default system browser ( If available ) +---- Failure return false +---- Success return true +---@param url string +---@return any success +function RL.OpenURL( url ) end + +-- Core - Cursor + +---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 + +---Set background color ( framebuffer clear color ) +---- Failure return false +---- Success return true +---@param color table +---@return any success +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 blending mode ( BLEND_ALPHA, BLEND_ADDITIVE, BLEND_MULTIPLIED... ) +---- Failure return false +---- Success return true +---@param mode integer +---@return any success +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 ) +---- Failure return false +---- Success return true +---@param rectange table +---@return any success +function RL.BeginScissorMode( rectange ) end + +---End scissor mode +---@return any RL.EndScissorMode +function RL.EndScissorMode() end + +-- Core - Shader + +---Load shader from files and bind default locations. +---NOTE: Set nil if no shader +---- Failure return -1 +---- Success return int +---@param vsFileName string +---@param fsFileName string +---@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 -1 +---- Success return int +---@param vsCode string +---@param fsCode string +---@return any shader +function RL.LoadShaderFromMemory( vsCode, fsCode ) end + +---Begin custom shader drawing +---- Failure return false +---- Success return true +---@param shader any +---@return any success +function RL.BeginShaderMode( shader ) end + +---End custom shader drawing ( use default shader ) +---@return any RL.EndShaderMode +function RL.EndShaderMode() end + +---Get shader uniform location +---- Failure return -1 +---- Success return int +---@param shader any +---@param uniformName string +---@return any location +function RL.GetShaderLocation( shader, uniformName ) end + +---Get shader attribute location +---- Failure return -1 +---- Success return int +---@param shader any +---@param attribName string +---@return any location +function RL.GetShaderLocationAttrib( shader, attribName ) end + +---Set shader location index +---- Failure return false +---- Success return true +---@param shader any +---@param shaderLocationIndex integer +---@param location integer +---@return any success +function RL.SetShaderLocationIndex( shader, shaderLocationIndex, location ) end + +---Get shader location index +---- Failure return false +---- Success return int +---@param shader any +---@param shaderLocationIndex integer +---@return any location +function RL.GetShaderLocationIndex( shader, shaderLocationIndex ) end + +---Set shader uniform value ( matrix 4x4 ) +---- Failure return false +---- Success return true +---@param shader any +---@param locIndex integer +---@param mat table +---@return any success +function RL.SetShaderValueMatrix( shader, locIndex, mat ) end + +---Set shader uniform value for texture ( sampler2d ) +---- Failure return false +---- Success return true +---@param shader any +---@param locIndex integer +---@param texture any +---@return any success +function RL.SetShaderValueTexture( shader, locIndex, texture ) end + +---Set shader uniform value +---NOTE: Even one value should be in table +---- Failure return false +---- Success return true +---@param shader any +---@param locIndex integer +---@param values any +---@param uniformType integer +---@return any success +function RL.SetShaderValue( shader, locIndex, values, uniformType ) end + +---Set shader uniform value vector +---NOTE: Even one value should be in table +---- Failure return false +---- Success return true +---@param shader any +---@param locIndex integer +---@param values any +---@param uniformType integer +---@param count integer +---@return any success +function RL.SetShaderValueV( shader, locIndex, values, uniformType, count ) end + +---Unload shader from GPU memory ( VRAM ) +---- Failure return false +---- Success return true +---@param shader any +---@return any success +function RL.UnloadShader( shader ) end + +-- Core - Input-related Keyboard + +---Detect if a key has been pressed once +---- Failure return nil +---- Success return bool +---@param key integer +---@return any pressed +function RL.IsKeyPressed( key ) end + +---Detect if a key is being pressed +---- Failure return nil +---- Success return bool +---@param key integer +---@return any pressed +function RL.IsKeyDown( key ) end + +---Detect if a key has been released once +---- Failure return nil +---- Success return bool +---@param key integer +---@return any released +function RL.IsKeyReleased( key ) end + +---Check if a key is NOT being pressed +---- Failure return nil +---- 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 + +---This function returns the name of the specified printable key, encoded as UTF-8. +---This is typically the character that key would produce without any modifier keys, +---intended for displaying key bindings to the user. For dead keys, it is typically +---the diacritic it would add to a character. +---Do not use this function for text input. You will break text input for many +---languages even if it happens to work for yours. +---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. +---- Failure return -1 +---- 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. +---- Failure return nil +---- Success return int +---@param key integer +---@return any scancode +function RL.GetKeyScancode( key ) end + +-- Core - Input-related Gamepad + +---Detect if a gamepad is available +---- Failure return nil +---- Success return bool +---@param gamepad integer +---@return any available +function RL.IsGamepadAvailable( gamepad ) end + +---Detect if a gamepad button has been pressed once +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 +---- Failure return nil +---- Success return bool +---@param gamepad integer +---@param button integer +---@return any released +function RL.IsGamepadButtonReleased( gamepad, button ) end + +---Return gamepad axis count for a gamepad +---- Failure return false +---- Success return int +---@param gamepad integer +---@return any count +function RL.GetGamepadAxisCount( gamepad ) end + +---Return axis movement value for a gamepad axis +---- Failure return false +---- Success return float +---@param gamepad integer +---@param axis integer +---@return any value +function RL.GetGamepadAxisMovement( gamepad, axis ) end + +---Return gamepad internal name id +---- Failure return false +---- Success return string +---@param gamepad integer +---@return any name +function RL.GetGamepadName( gamepad ) end + +-- Core - Input-related Mouse + +---Detect if a mouse button has been pressed once +---- Failure return nil +---- Success return bool +---@param button integer +---@return any pressed +function RL.IsMouseButtonPressed( button ) end + +---Detect if a mouse button is being pressed +---- Failure return nil +---- Success return bool +---@param button integer +---@return any pressed +function RL.IsMouseButtonDown( button ) end + +---Detect if a mouse button has been released once +---- Failure return nil +---- Success return bool +---@param button integer +---@return any released +function RL.IsMouseButtonReleased( button ) end + +---Check if a mouse button is NOT being pressed +---- Failure return nil +---- 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 +---- Failure return false +---- Success return true +---@param position table +---@return any success +function RL.SetMousePosition( position ) end + +---Set mouse offset +---- Failure return false +---- Success return true +---@param offset table +---@return any success +function RL.SetMouseOffset( offset ) end + +---Set mouse scaling +---- Failure return false +---- Success return true +---@param scale table +---@return any success +function RL.SetMouseScale( scale ) end + +---Returns mouse wheel movement Y +---- Success return float +---@return any movement +function RL.GetMouseWheelMove() end + +---Set mouse cursor +---- Failure return false +---- Success return true +---@param cursor integer +---@return any success +function RL.SetMouseCursor( cursor ) end + +-- Core - Input-related Touch + +---Get touch position XY for a touch point index ( relative to screen size ) +---- Failure return false +---- Success return Vector2 +---@param index integer +---@return any position +function RL.GetTouchPosition( index ) end + +---Get touch point identifier for given index +---- Failure return false +---- 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 Gestures + +---Enable a set of gestures using flags +---- Failure return false +---- Success return true +---@param int any +---@return any success +function RL.SetGesturesEnabled( int ) end + +---Check if a gesture have been detected +---- Failure return nil +---- 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 - File + +---Return game directory ( where main.lua is located ) +---- Success return string +---@return any path +function RL.GetBasePath() end + +---Check if file exists +---- Failure return nil +---- Success return bool +---@param fileName string +---@return any fileExists +function RL.FileExists( fileName ) end + +---Check if a directory path exists +---- Failure return nil +---- Success return bool +---@param dirPath string +---@return any dirExists +function RL.DirectoryExists( dirPath ) end + +---Check file extension ( Including point: .png, .wav ) +---- Failure return nil +---- 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 ) +---- Failure return false +---- 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' ) +---- Failure return false +---- Success return string +---@param fileName string +---@return any extension +function RL.GetFileExtension( fileName ) end + +---Get pointer to filename for a path string +---- Failure return false +---- Success return string +---@param filePath string +---@return any filePath +function RL.GetFileName( filePath ) end + +---Get filename string without extension ( Uses static string ) +---- Failure return false +---- Success return string +---@param filePath string +---@return any filePath +function RL.GetFileNameWithoutExt( filePath ) end + +---Get full path for a given fileName with path ( Uses static string ) +---- Failure return false +---- 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 ) +---- Failure return false +---- 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 + +---Load directory filepaths +---- Failure return false +---- Success return string{} +---@param dirPath string +---@return any fileNames +function RL.LoadDirectoryFiles( dirPath ) end + +---Load directory filepaths with extension filtering and recursive directory scan +---- Failure return false +---- Success return string{} +---@param basePath string +---@param filter string +---@param scanSubdirs boolean +---@return any fileNames +function RL.LoadDirectoryFilesEx( basePath, filter, scanSubdirs ) end + +---Change working directory, return true on success +---- Failure return false +---- Success return true +---@param directory string +---@return any success +function RL.ChangeDirectory( directory ) end + +---Check if a given path is a file or a directory +---- Failure return nil +---- Success return bool +---@param path string +---@return any isFile +function RL.IsPathFile( path ) end + +---Check if a file has been dropped into window +---- Success return bool +---@return any fileDropped +function RL.IsFileDropped() end + +---Load dropped filepaths +---- Success return string{} +---@return any files +function RL.LoadDroppedFiles() end + +---Get file modification time ( Last write time ) +---- Failure return false +---- Success return int +---@param fileName string +---@return any time +function RL.GetFileModTime( fileName ) end + +-- Core - Camera2D + +---Return camera2D id set to default configuration +---- Success return int +---@return any camera2D +function RL.CreateCamera2D() end + +---Unload Camera2D +---- Failure return false +---- Success return true +---@param Camera2D integer +---@return any success +function RL.UnloadCamera2D( Camera2D ) end + +---Begin 2D mode with custom camera ( 2D ) +---- Failure return false +---- Success return true +---@param camera any +---@return any success +function RL.BeginMode2D( camera ) end + +---Ends 2D mode with custom camera +---@return any RL.EndMode2D +function RL.EndMode2D() end + +---Set camera target ( rotation and zoom origin ) +---- Failure return false +---- Success return true +---@param camera any +---@param target table +---@return any success +function RL.SetCamera2DTarget( camera, target ) end + +---Set camera offset ( displacement from target ) +---- Failure return false +---- Success return true +---@param camera any +---@param offset table +---@return any success +function RL.SetCamera2DOffset( camera, offset ) end + +---Set camera rotation in degrees +---- Failure return false +---- Success return true +---@param camera any +---@param rotation number +---@return any success +function RL.SetCamera2DRotation( camera, rotation ) end + +---Set camera zoom ( scaling ), should be 1.0f by default +---- Failure return false +---- Success return true +---@param camera any +---@param zoom number +---@return any success +function RL.SetCamera2DZoom( camera, zoom ) end + +---Get camera2D target +---- Failure return nil +---- Success return Vector2 +---@param camera any +---@return any target +function RL.GetCamera2DTarget( camera ) end + +---Get camera2D offset +---- Failure return nil +---- Success return Vector2 +---@param camera any +---@return any offset +function RL.GetCamera2DOffset( camera ) end + +---Get camera2D rotation +---- Failure return nil +---- Success return float +---@param camera any +---@return any rotation +function RL.GetCamera2DRotation( camera ) end + +---Get camera2D zoom +---- Failure return nil +---- Success return float +---@param camera any +---@return any zoom +function RL.GetCamera2DZoom( camera ) end + +-- Core - Camera3D + +---Return camera3D id set to default configuration +---- Success return int +---@return any camera +function RL.CreateCamera3D() end + +---Unload Camera3D +---- Failure return false +---- Success return true +---@param Camera3D integer +---@return any success +function RL.UnloadCamera3D( Camera3D ) end + +---Begin 3D mode with custom camera ( 3D ) +---- Failure return false +---- Success return true +---@param camera any +---@return any success +function RL.BeginMode3D( camera ) end + +---Ends 3D mode and returns to default 2D orthographic mode +---@return any RL.EndMode3D +function RL.EndMode3D() end + +---Set camera position ( Remember to call "RL.UpdateCamera3D()" to apply changes ) +---- Failure return false +---- Success return true +---@param camera any +---@param position table +---@return any success +function RL.SetCamera3DPosition( camera, position ) end + +---Set camera target it looks-at +---- Failure return false +---- Success return true +---@param camera any +---@param target table +---@return any success +function RL.SetCamera3DTarget( camera, target ) end + +---Set camera up vector ( Rotation over it's axis ) +---- Failure return false +---- Success return true +---@param camera any +---@param up table +---@return any success +function RL.SetCamera3DUp( camera, up ) end + +---Set camera field-of-view apperture in Y ( degrees ) in perspective, used as near plane width in orthographic +---- Failure return false +---- Success return true +---@param camera any +---@param fovy number +---@return any success +function RL.SetCamera3DFovy( camera, fovy ) end + +---Set camera projection mode ( CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC ) +---- Failure return false +---- Success return true +---@param camera any +---@param projection integer +---@return any success +function RL.SetCamera3DProjection( camera, projection ) end + +---Set camera mode ( CAMERA_CUSTOM, CAMERA_FREE, CAMERA_ORBITAL... ) +---- Failure return false +---- Success return true +---@param camera any +---@param mode integer +---@return any success +function RL.SetCameraMode( camera, mode ) end + +---Get camera position +---- Failure return nil +---- Success return Vector3 +---@param camera any +---@return any position +function RL.GetCamera3DPosition( camera ) end + +---Get camera target it looks-at +---- Failure return nil +---- Success return Vector3 +---@param camera any +---@return any target +function RL.GetCamera3DTarget( camera ) end + +---Get camera up vector ( Rotation over it's axis ) +---- Failure return nil +---- 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 +---- Failure return nil +---- Success return float +---@param camera any +---@return any fovy +function RL.GetCamera3DFovy( camera ) end + +---Get camera projection mode +---- Failure return nil +---- Success return int +---@param camera any +---@return any projection +function RL.GetCamera3DProjection( camera ) end + +---Update camera position for selected mode +---- Failure return false +---- Success return true +---@param camera any +---@return any success +function RL.UpdateCamera3D( camera ) end + +---Set camera pan key to combine with mouse movement ( free camera ) +---- Failure return false +---- Success return true +---@param keyPan integer +---@return any success +function RL.SetCameraPanControl( keyPan ) end + +---Set camera alt key to combine with mouse movement ( free camera ) +---- Failure return false +---- Success return true +---@param keyAlt integer +---@return any success +function RL.SetCameraAltControl( keyAlt ) end + +---Set camera smooth zoom key to combine with mouse ( free camera ) +---- Failure return false +---- Success return true +---@param keySmoothZoom integer +---@return any success +function RL.SetCameraSmoothZoomControl( keySmoothZoom ) end + +---Set camera move controls ( 1st person and 3rd person cameras ) +---- Failure return false +---- Success return true +---@param keyFront integer +---@param keyBack integer +---@param keyRight integer +---@param keyLeft integer +---@param keyUp integer +---@param keyDown integer +---@return any success +function RL.SetCameraMoveControls( keyFront, keyBack, keyRight, keyLeft, keyUp, keyDown ) end + +-- Core - Screen-space + +---Get a ray trace from mouse position +---- Failure return false +---- Success return Ray +---@param mousePosition table +---@param camera any +---@return any ray +function RL.GetMouseRay( mousePosition, camera ) end + +---Get camera transform matrix ( view matrix ) +---- Failure return false +---- Success return Matrix +---@param camera any +---@return any matrix +function RL.GetCameraMatrix( camera ) end + +---Get camera 2d transform matrix +---- Failure return false +---- Success return Matrix +---@param camera any +---@return any matrix +function RL.GetCameraMatrix2D( camera ) end + +---Get the screen space position for a 3d world space position +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return Vector2 +---@param position table +---@param camera any +---@return any position +function RL.GetScreenToWorld2D( position, camera ) end + +-- Shapes - Drawing + +---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 +---- Failure return false +---- Success return true +---@param texture any +---@param source table +---@return any success +function RL.SetShapesTexture( texture, source ) end + +---Draw a pixel +---- Failure return false +---- Success return true +---@param pos table +---@param color table +---@return any success +function RL.DrawPixel( pos, color ) end + +---Draw a line defining thickness +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param thickness number +---@param color table +---@return any success +function RL.DrawLine( startPos, endPos, thickness, color ) end + +---Draw a line using cubic-bezier curves in-out +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param thickness number +---@param color table +---@return any success +function RL.DrawLineBezier( startPos, endPos, thickness, color ) end + +---Draw line using quadratic bezier curves with a control point +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param controlPos table +---@param thickness number +---@param color table +---@return any success +function RL.DrawLineBezierQuad( startPos, endPos, controlPos, thickness, color ) end + +---Draw line using quadratic bezier curves with a control point +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param startControlPos table +---@param endControlPos table +---@param thickness number +---@param color table +---@return any success +function RL.DrawLineBezierCubic( startPos, endPos, startControlPos, endControlPos, thickness, color ) end + +---Draw lines sequence +---- Failure return false +---- Success return true +---@param points any +---@param pointsCount integer +---@param color table +---@return any success +function RL.DrawLineStrip( points, pointsCount, color ) end + +---Draw a color-filled circle +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param color table +---@return any success +function RL.DrawCircle( center, radius, color ) end + +---Draw a piece of a circle +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any success +function RL.DrawCircleSector( center, radius, startAngle, endAngle, segments, color ) end + +---Draw circle sector outline +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any success +function RL.DrawCircleSectorLines( center, radius, startAngle, endAngle, segments, color ) end + +---Draw a gradient-filled circle +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param color1 table +---@param color2 table +---@return any success +function RL.DrawCircleGradient( center, radius, color1, color2 ) end + +---Draw circle outline +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param color table +---@return any success +function RL.DrawCircleLines( center, radius, color ) end + +---Draw ellipse +---- Failure return false +---- Success return true +---@param center table +---@param radiusH number +---@param radiusV number +---@param color table +---@return any success +function RL.DrawEllipse( center, radiusH, radiusV, color ) end + +---Draw ellipse outline +---- Failure return false +---- Success return true +---@param center table +---@param radiusH number +---@param radiusV number +---@param color table +---@return any success +function RL.DrawEllipseLines( center, radiusH, radiusV, color ) end + +---Draw ring +---- Failure return false +---- Success return true +---@param center table +---@param innerRadius number +---@param outerRadius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any success +function RL.DrawRing( center, innerRadius, outerRadius, startAngle, endAngle, segments, color ) end + +---Draw ring outline +---- Failure return false +---- Success return true +---@param center table +---@param innerRadius number +---@param outerRadius number +---@param startAngle number +---@param endAngle number +---@param segments integer +---@param color table +---@return any success +function RL.DrawRingLines( center, innerRadius, outerRadius, startAngle, endAngle, segments, color ) end + +---Draw a color-filled rectangle +---- Failure return false +---- Success return true +---@param rec table +---@param color table +---@return any success +function RL.DrawRectangle( rec, color ) end + +---Draw a color-filled rectangle with pro parameters +---- Failure return false +---- Success return true +---@param rec table +---@param origin table +---@param rotation number +---@param color table +---@return any success +function RL.DrawRectanglePro( rec, origin, rotation, color ) end + +---Draw a vertical-gradient-filled rectangle +---- Failure return false +---- Success return true +---@param rectangle table +---@param color1 table +---@param color2 table +---@return any success +function RL.DrawRectangleGradientV( rectangle, color1, color2 ) end + +---Draw a horizontal-gradient-filled rectangle +---- Failure return false +---- Success return true +---@param rectangle table +---@param color1 table +---@param color2 table +---@return any success +function RL.DrawRectangleGradientH( rectangle, color1, color2 ) end + +---Draw a gradient-filled rectangle with custom vertex colors +---- Failure return false +---- Success return true +---@param rectangle table +---@param col1 table +---@param col2 table +---@param col3 table +---@param col4 table +---@return any success +function RL.DrawRectangleGradientEx( rectangle, col1, col2, col3, col4 ) end + +---Draw rectangle outline +---- Failure return false +---- Success return true +---@param rec table +---@param color table +---@return any success +function RL.DrawRectangleLines( rec, color ) end + +---Draw rectangle outline with extended parameters +---- Failure return false +---- Success return true +---@param rec table +---@param lineThick integer +---@param color table +---@return any success +function RL.DrawRectangleLinesEx( rec, lineThick, color ) end + +---Draw rectangle with rounded edges +---- Failure return false +---- Success return true +---@param rec table +---@param roundness number +---@param segments integer +---@param color table +---@return any success +function RL.DrawRectangleRounded( rec, roundness, segments, color ) end + +---Draw rectangle with rounded edges outline +---- Failure return false +---- Success return true +---@param rec table +---@param roundness number +---@param segments integer +---@param lineThick integer +---@param color table +---@return any success +function RL.DrawRectangleRoundedLines( rec, roundness, segments, lineThick, color ) end + +---Draw a color-filled triangle ( Vertex in counter-clockwise order! ) +---- Failure return false +---- Success return true +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any success +function RL.DrawTriangle( v1, v2, v3, color ) end + +---Draw triangle outline ( Vertex in counter-clockwise order! ) +---- Failure return false +---- Success return true +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any success +function RL.DrawTriangleLines( v1, v2, v3, color ) end + +---Draw a triangle fan defined by points ( first vertex is the center ) +---- Failure return false +---- Success return true +---@param points any +---@param pointsCount integer +---@param color table +---@return any success +function RL.DrawTriangleFan( points, pointsCount, color ) end + +---Draw a triangle strip defined by points +---- Failure return false +---- Success return true +---@param points any +---@param pointsCount integer +---@param color table +---@return any success +function RL.DrawTriangleStrip( points, pointsCount, color ) end + +---Draw a regular polygon ( Vector version ) +---- Failure return false +---- Success return true +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param color table +---@return any success +function RL.DrawPoly( center, sides, radius, rotation, color ) end + +---Draw a polygon outline of n sides +---- Failure return false +---- Success return true +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param color table +---@return any success +function RL.DrawPolyLines( center, sides, radius, rotation, color ) end + +---Draw a polygon outline of n sides with extended parameters +---- Failure return false +---- Success return true +---@param center table +---@param sides integer +---@param radius number +---@param rotation number +---@param lineThick number +---@param color table +---@return any success +function RL.DrawPolyLinesEx( center, sides, radius, rotation, lineThick, color ) end + +-- Shapes - Collision + +---Check collision between two rectangles +---- Failure return nil +---- Success return bool +---@param rec1 table +---@param rec2 table +---@return any collision +function RL.CheckCollisionRecs( rec1, rec2 ) end + +---Check collision between two circles +---- Failure return nil +---- 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 +---- Failure return nil +---- Success return bool +---@param center table +---@param radius number +---@param rec table +---@return any collision +function RL.CheckCollisionCircleRec( center, radius, rec ) end + +---Check if point is inside rectangle +---- Failure return nil +---- Success return bool +---@param point table +---@param rec table +---@return any collision +function RL.CheckCollisionPointRec( point, rec ) end + +---Check if point is inside circle +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 the collision between two lines defined by two points each, returns collision point by reference +---- Failure return nil +---- 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] +---- Failure return nil +---- 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 +---- Failure return nil +---- Success return Rectangle +---@param rec1 table +---@param rec2 table +---@return any rectangle +function RL.GetCollisionRec( rec1, rec2 ) end + +-- Textures - Image Loading + +---Load image from file into CPU memory ( RAM ) +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any image +function RL.LoadImage( fileName ) end + +---Load image from GPU texture data +---- Failure return -1 +---- Success return int +---@param texture any +---@return any image +function RL.LoadImageFromTexture( texture ) end + +---Load image from screen buffer and ( screenshot ) +---- Success return int +---@return any image +function RL.LoadImageFromScreen() end + +---Unload image from CPU memory ( RAM ) +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.UnloadImage( image ) end + +---Export image data to file, returns true on success +---- Failure return nil +---- Success return bool +---@param image any +---@param fileName string +---@return any success +function RL.ExportImage( image, fileName ) end + +---Export image as code file defining an array of bytes, returns true on success +---- Failure return nil +---- Success return bool +---@param image any +---@param fileName string +---@return any success +function RL.ExportImageAsCode( image, fileName ) end + +-- Textures - Image Generation + +---Generate image: plain color +---- Failure return -1 +---- Success return int +---@param width integer +---@param height integer +---@param color table +---@return any image +function RL.GenImageColor( width, height, color ) end + +---Generate image: vertical gradient +---- Failure return -1 +---- Success return int +---@param size table +---@param top table +---@param bottom table +---@return any image +function RL.GenImageGradientV( size, top, bottom ) end + +---Generate image: horizontal gradient +---- Failure return -1 +---- Success return int +---@param size table +---@param left table +---@param right table +---@return any image +function RL.GenImageGradientH( size, left, right ) end + +---Generate image: radial gradient +---- Failure return -1 +---- Success return int +---@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: checked +---- Failure return -1 +---- Success return int +---@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 +---- Failure return -1 +---- Success return int +---@param size table +---@param factor number +---@return any image +function RL.GenImageWhiteNoise( size, factor ) end + +---Generate image: cellular algorithm. Bigger tileSize means bigger cells +---- Failure return -1 +---- Success return int +---@param size table +---@param tileSize integer +---@return any image +function RL.GenImageCellular( size, tileSize ) end + +-- Textures - Image Manipulation Functions + +---Create an image duplicate ( useful for transformations ) +---- Failure return -1 +---- Success return int +---@param image any +---@return any image +function RL.ImageCopy( image ) end + +---Create an image from another image piece +---- Failure return -1 +---- Success return int +---@param image any +---@param rec table +---@return any image +function RL.ImageFromImage( image, rec ) end + +---Create an image from text ( custom sprite font ) +---- Failure return -1 +---- Success return int +---@param font any +---@param text string +---@param fontSize number +---@param spacing number +---@param tint table +---@return any image +function RL.ImageText( font, text, fontSize, spacing, tint ) end + +---Convert image data to desired format +---- Failure return false +---- Success return true +---@param image any +---@param newFormat integer +---@return any success +function RL.ImageFormat( image, newFormat ) end + +---Convert image to POT ( power-of-two ) +---- Failure return false +---- Success return true +---@param image any +---@param fill table +---@return any success +function RL.ImageToPOT( image, fill ) end + +---Crop an image to a defined rectangle +---- Failure return false +---- Success return true +---@param image any +---@param crop table +---@return any success +function RL.ImageCrop( image, crop ) end + +---Crop image depending on alpha value +---- Failure return false +---- Success return true +---@param image any +---@param threshold number +---@return any success +function RL.ImageAlphaCrop( image, threshold ) end + +---Clear alpha channel to desired color +---- Failure return false +---- Success return true +---@param image any +---@param color table +---@param threshold number +---@return any success +function RL.ImageAlphaClear( image, color, threshold ) end + +---Apply alpha mask to image +---- Failure return false +---- Success return true +---@param image any +---@param alphaMask any +---@return any success +function RL.ImageAlphaMask( image, alphaMask ) end + +---Premultiply alpha channel +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageAlphaPremultiply( image ) end + +---Resize image ( Bicubic scaling algorithm ) +---- Failure return false +---- Success return true +---@param image any +---@param size table +---@return any success +function RL.ImageResize( image, size ) end + +---Resize image ( Nearest-Neighbor scaling algorithm ) +---- Failure return false +---- Success return true +---@param image any +---@param size table +---@return any success +function RL.ImageResizeNN( image, size ) end + +---Resize canvas and fill with color +---- Failure return false +---- Success return true +---@param image any +---@param size table +---@param offset table +---@param fill table +---@return any success +function RL.ImageResizeCanvas( image, size, offset, fill ) end + +---Generate all mipmap levels for a provided image +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageMipmaps( image ) end + +---Dither image data to 16bpp or lower ( Floyd-Steinberg dithering ) +---- Failure return false +---- Success return true +---@param image any +---@param bpp table +---@return any success +function RL.ImageDither( image, bpp ) end + +---Flip image vertically +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageFlipVertical( image ) end + +---Flip image horizontally +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageFlipHorizontal( image ) end + +---Rotate image clockwise 90deg +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageRotateCW( image ) end + +---Rotate image counter-clockwise 90deg +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageRotateCCW( image ) end + +---Modify image color: tint +---- Failure return false +---- Success return true +---@param image any +---@param color table +---@return any success +function RL.ImageColorTint( image, color ) end + +---Modify image color: invert +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageColorInvert( image ) end + +---Modify image color: grayscale +---- Failure return false +---- Success return true +---@param image any +---@return any success +function RL.ImageColorGrayscale( image ) end + +---Modify image color: contrast ( -100 to 100 ) +---- Failure return false +---- Success return true +---@param image any +---@param contrast number +---@return any success +function RL.ImageColorContrast( image, contrast ) end + +---Modify image color: brightness ( -255 to 255 ) +---- Failure return false +---- Success return true +---@param image any +---@param brightness integer +---@return any success +function RL.ImageColorBrightness( image, brightness ) end + +---Modify image color: replace color +---- Failure return false +---- Success return true +---@param image any +---@param color table +---@param replace table +---@return any success +function RL.ImageColorReplace( image, color, replace ) end + +---Load color data from image as a Color array ( RGBA - 32bit ) +---- Failure return false +---- 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 ) +---- Failure return false +---- Success return Color{} +---@param image any +---@param maxPaletteSize integer +---@return any colors +function RL.LoadImagePalette( image, maxPaletteSize ) end + +---Get image alpha border rectangle +---- Failure return false +---- 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 +---- Failure return false +---- Success return Color +---@param image any +---@param pixelPos table +---@return any color +function RL.GetImageColor( image, pixelPos ) end + +-- Textures - Image Drawing + +---Clear image background with given color +---- Failure return false +---- Success return true +---@param dst any +---@param color table +---@return any success +function RL.ImageClearBackground( dst, color ) end + +---Draw pixel within an image +---- Failure return false +---- Success return true +---@param dst any +---@param position table +---@param color table +---@return any success +function RL.ImageDrawPixel( dst, position, color ) end + +---Draw line within an image +---- Failure return false +---- Success return true +---@param dst any +---@param start table +---@param end table +---@param color table +---@return any success +function RL.ImageDrawLine( dst, start, end, color ) end + +---Draw circle within an image +---- Failure return false +---- Success return true +---@param dst any +---@param center table +---@param radius integer +---@param color table +---@return any success +function RL.ImageDrawCircle( dst, center, radius, color ) end + +---Draw rectangle within an image +---- Failure return false +---- Success return true +---@param dst any +---@param rec table +---@param color table +---@return any success +function RL.ImageDrawRectangle( dst, rec, color ) end + +---Draw rectangle lines within an image +---- Failure return false +---- Success return true +---@param dst any +---@param rec table +---@param thick integer +---@param color table +---@return any success +function RL.ImageDrawRectangleLines( dst, rec, thick, color ) end + +---Draw a source image within a destination image ( Tint applied to source ) +---- Failure return false +---- Success return true +---@param dst any +---@param src any +---@param srcRec table +---@param dstRec table +---@param tint table +---@return any success +function RL.ImageDraw( dst, src, srcRec, dstRec, tint ) end + +---Draw text ( Custom sprite font ) within an image ( Destination ) +---- Failure return false +---- Success return true +---@param dst any +---@param font any +---@param text string +---@param position table +---@param fontSize number +---@param spacing number +---@param tint table +---@return any success +function RL.ImageDrawTextEx( dst, font, text, position, fontSize, spacing, tint ) end + +-- Textures - Image Configuration + +---Get image size +---- Failure return nil +---- Success return Vector2 +---@param image any +---@return any size +function RL.GetImageSize( image ) end + +---Get image mipmaps. Mipmap levels, 1 by default +---- Failure return false +---- Success return int +---@param image any +---@return any mipmaps +function RL.GetImageMipmaps( image ) end + +---Get image data format ( PixelFormat type ) +---- Failure return false +---- Success return int +---@param image any +---@return any format +function RL.GetImageFormat( image ) end + +-- Textures - Texture Loading + +---Load texture from file into GPU memory ( VRAM ) +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any texture +function RL.LoadTexture( fileName ) end + +---Load texture from image data +---- Failure return -1 +---- Success return int +---@param image any +---@return any texture +function RL.LoadTextureFromImage( image ) end + +---Load cubemap from image, multiple image cubemap layouts supported +---- Failure return -1 +---- Success return int +---@param image any +---@param layout integer +---@return any texture +function RL.LoadTextureCubemap( image, layout ) end + +---Load texture for rendering ( framebuffer ) +---- Failure return -1 +---- Success return int +---@param size table +---@return any renderTexture +function RL.LoadRenderTexture( size ) end + +---Unload texture from GPU memory ( VRAM ) +---- Failure return false +---- Success return true +---@param texture any +---@return any success +function RL.UnloadTexture( texture ) end + +---Unload render texture from GPU memory ( VRAM ) +---- Failure return false +---- Success return true +---@param target any +---@return any success +function RL.UnloadRenderTexture( target ) end + +---Update GPU texture with new data +---NOTE! Should be TEXTURE_SOURCE_TEXTURE. Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format +---- Failure return false +---- Success return true +---@param texture any +---@param pixels any +---@return any success +function RL.UpdateTexture( texture, pixels ) end + +---Update GPU texture rectangle with new data +---NOTE! Should be TEXTURE_SOURCE_TEXTURE. Pixel should be in format { { 255, 255, 255, 255 }... } depending on the pixel format +---- Failure return false +---- Success return true +---@param texture any +---@param rec table +---@param pixels any +---@return any success +function RL.UpdateTextureRec( texture, rec, pixels ) end + +-- Textures - Texture Drawing + +---Draw a Texture2D +---- Failure return false +---- Success return true +---@param texture any +---@param position table +---@param tint table +---@return any success +function RL.DrawTexture( texture, position, tint ) end + +---Draw a part of a texture defined by a rectangle +---- Failure return false +---- Success return true +---@param texture any +---@param source table +---@param position table +---@param tint table +---@return any success +function RL.DrawTextureRec( texture, source, position, tint ) end + +---Draw part of a texture ( defined by a rectangle ) with rotation and scale tiled into dest +---- Failure return false +---- Success return true +---@param texture any +---@param source table +---@param dest table +---@param origin table +---@param rotation number +---@param scale number +---@param tint table +---@return any success +function RL.DrawTextureTiled( texture, source, dest, origin, rotation, scale, tint ) end + +---Draw a part of a texture defined by a rectangle with "pro" parameters +---- Failure return false +---- Success return true +---@param texture any +---@param source table +---@param dest table +---@param origin table +---@param rotation number +---@param tint table +---@return any success +function RL.DrawTexturePro( texture, source, dest, origin, rotation, tint ) end + +---Draws a texture ( or part of it ) that stretches or shrinks nicely +---- Failure return false +---- Success return true +---@param texture any +---@param nPatchInfo any +---@param dest table +---@param origin table +---@param rotation number +---@param tint table +---@return any success +function RL.DrawTextureNPatch( texture, nPatchInfo, dest, origin, rotation, tint ) end + +---Draw a textured polygon ( Convex ) +---- Failure return false +---- Success return true +---@param texture any +---@param center table +---@param points any +---@param texcoords any +---@param pointsCount integer +---@param tint table +---@return any success +function RL.DrawTexturePoly( texture, center, points, texcoords, pointsCount, tint ) end + +---Begin drawing to render texture +---- Failure return false +---- Success return true +---@param target any +---@return any success +function RL.BeginTextureMode( target ) end + +---Ends drawing to render texture +---@return any RL.EndTextureMode +function RL.EndTextureMode() end + +---Set what texture source to use ( TEXTURE_SOURCE_TEXTURE or TEXTURE_SOURCE_RENDER_TEXTURE ) +---- Failure return false +---- Success return true +---@param textureSource integer +---@return any success +function RL.SetTextureSource( textureSource ) end + +---Get current texture source type ( TEXTURE_SOURCE_TEXTURE or TEXTURE_SOURCE_RENDER_TEXTURE ) +---- Success return int +---@return any textureSource +function RL.GetTextureSource() end + +-- Textures - Texture Configuration + +---Generate GPU mipmaps for a texture +---- Failure return false +---- Success return true +---@param texture any +---@return any success +function RL.GenTextureMipmaps( texture ) end + +---Set texture scaling filter mode ( TEXTURE_FILTER_POINT, TEXTURE_FILTER_BILINEAR... ) +---- Failure return false +---- Success return true +---@param texture any +---@param filter integer +---@return any success +function RL.SetTextureFilter( texture, filter ) end + +---Set texture wrapping mode ( TEXTURE_WRAP_REPEAT, TEXTURE_WRAP_CLAMP... ) +---- Failure return false +---- Success return true +---@param texture any +---@param wrap integer +---@return any success +function RL.SetTextureWrap( texture, wrap ) end + +---Get texture size +---- Failure return nil +---- Success return Vector2 +---@param texture any +---@return any size +function RL.GetTextureSize( texture ) end + +---Get texture mipmaps. Mipmap levels, 1 by default +---- Failure return false +---- Success return int +---@param texture any +---@return any mipmaps +function RL.GetTextureMipmaps( texture ) end + +---Get texture mipmaps. Mipmap levels, 1 by default +---- Failure return false +---- Success return int +---@param texture any +---@return any format +function RL.GetTextureFormat( texture ) end + +-- Textures - Color/pixel + +---Returns color with alpha applied, alpha goes from 0.0f to 1.0f +---- Failure return false +---- Success return Color +---@param color table +---@param alpha number +---@return any color +function RL.Fade( color, alpha ) end + +---Returns hexadecimal value for a Color +---- Failure return false +---- Success return int +---@param color table +---@return any value +function RL.ColorToInt( color ) end + +---Returns Color normalized as float [0..1] +---- Failure return false +---- Success return Vector4 +---@param color table +---@return any color +function RL.ColorNormalize( color ) end + +---Color from normalized values [0..1] +---- Failure return false +---- 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] +---- Failure return false +---- 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] +---- Failure return false +---- Success return Color +---@param hue number +---@param saturation number +---@param value number +---@return any color +function RL.ColorFromHSV( hue, saturation, value ) end + +---Returns color with alpha applied, alpha goes from 0.0f to 1.0f +---- Failure return false +---- 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 +---- Failure return false +---- Success return Color +---@param dst table +---@param src table +---@param tint table +---@return any color +function RL.ColorAlphaBlend( dst, src, tint ) end + +---Get Color structure from hexadecimal value +---- Failure return false +---- Success return Color +---@param int any +---@return any Color +function RL.GetColor( int ) end + +---Get pixel color from source texture +---- Failure return false +---- Success return Color +---@param texture any +---@param position table +---@return any Color +function RL.GetPixelColor( texture, position ) end + +---Get pixel data size in bytes for certain format +---- Failure return false +---- Success return int +---@param width integer +---@param height integer +---@param format integer +---@return any size +function RL.GetPixelDataSize( width, height, format ) end + +-- Text - Loading + +---Load font from file into GPU memory ( VRAM ) +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any font +function RL.LoadFont( fileName ) end + +---Load font from file with extended parameters. Loading the default character set +---- Failure return -1 +---- Success return int +---@param fileName string +---@param fontSize integer +---@return any font +function RL.LoadFontEx( fileName, fontSize ) end + +---Load font from Image ( XNA style ) +---- Failure return -1 +---- Success return int +---@param image any +---@param key table +---@param firstChar integer +---@return any font +function RL.LoadFontFromImage( image, key, firstChar ) end + +---Unload Font from GPU memory ( VRAM ) +---- Failure return false +---- Success return true +---@param font any +---@return any success +function RL.UnloadFont( font ) end + +-- Text - Draw + +---Draw current FPS +---- Failure return false +---- Success return true +---@param pos table +---@return any success +function RL.DrawFPS( pos ) end + +---Draw text using font and additional parameters +---- Failure return false +---- Success return true +---@param font any +---@param text string +---@param position table +---@param fontSize number +---@param spacing number +---@param tint table +---@return any success +function RL.DrawText( font, text, position, fontSize, spacing, tint ) end + +---Draw text using Font and pro parameters ( rotation ) +---- Failure return false +---- Success return true +---@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 success +function RL.DrawTextPro( font, text, position, origin, rotation, fontSize, spacing, tint ) end + +-- Text - Misc + +---Measure string size for Font +---- Failure return false +---- Success return Vector2 +---@param font any +---@param text string +---@param fontSize number +---@param spacing number +---@return any size +function RL.MeasureText( font, text, fontSize, spacing ) end + +---Get font baseSize +---- Failure return false +---- Success return int +---@param font any +---@return any baseSize +function RL.GetFontBaseSize( font ) end + +---Get font glyphCount +---- Failure return false +---- Success return int +---@param font any +---@return any glyphCount +function RL.GetFontGlyphCount( font ) end + +---Get font glyphPadding +---- Failure return false +---- Success return int +---@param font any +---@return any glyphPadding +function RL.GetFontGlyphPadding( font ) end + +-- Models - Basic + +---Draw a line in 3D world space +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param color table +---@return any success +function RL.DrawLine3D( startPos, endPos, color ) end + +---Draw a point in 3D space, actually a small line +---- Failure return false +---- Success return true +---@param position table +---@param color table +---@return any success +function RL.DrawPoint3D( position, color ) end + +---Draw a circle in 3D world space +---- Failure return false +---- Success return true +---@param center table +---@param radius number +---@param rotationAxis table +---@param rotationAngle number +---@param color table +---@return any success +function RL.DrawCircle3D( center, radius, rotationAxis, rotationAngle, color ) end + +---Draw a color-filled triangle ( Vertex in counter-clockwise order! ) +---- Failure return false +---- Success return true +---@param v1 table +---@param v2 table +---@param v3 table +---@param color table +---@return any success +function RL.DrawTriangle3D( v1, v2, v3, color ) end + +---Draw cube +---- Failure return false +---- Success return true +---@param position table +---@param size table +---@param color table +---@return any success +function RL.DrawCube( position, size, color ) end + +---Draw cube wires +---- Failure return false +---- Success return true +---@param position table +---@param size table +---@param color table +---@return any success +function RL.DrawCubeWires( position, size, color ) end + +---Draw cube textured +---- Failure return false +---- Success return true +---@param texture any +---@param position table +---@param size table +---@param color table +---@return any success +function RL.DrawCubeTexture( texture, position, size, color ) end + +---Draw sphere +---- Failure return false +---- Success return true +---@param centerPos table +---@param radius number +---@param color table +---@return any success +function RL.DrawSphere( centerPos, radius, color ) end + +---Draw sphere with extended parameters +---- Failure return false +---- Success return true +---@param centerPos table +---@param radius number +---@param rings integer +---@param slices integer +---@param color table +---@return any success +function RL.DrawSphereEx( centerPos, radius, rings, slices, color ) end + +---Draw sphere wires +---- Failure return false +---- Success return true +---@param centerPos table +---@param radius number +---@param rings integer +---@param slices integer +---@param color table +---@return any success +function RL.DrawSphereWires( centerPos, radius, rings, slices, color ) end + +---Draw a cylinder/cone +---- Failure return false +---- Success return true +---@param position table +---@param radiusTop number +---@param radiusBottom number +---@param height number +---@param slices integer +---@param color table +---@return any success +function RL.DrawCylinder( position, radiusTop, radiusBottom, height, slices, color ) end + +---Draw a cylinder with base at startPos and top at endPos +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param startRadius number +---@param endRadius number +---@param sides integer +---@param color table +---@return any success +function RL.DrawCylinderEx( startPos, endPos, startRadius, endRadius, sides, color ) end + +---Draw a cylinder/cone wires +---- Failure return false +---- Success return true +---@param position table +---@param radiusTop number +---@param radiusBottom number +---@param height number +---@param slices integer +---@param color table +---@return any success +function RL.DrawCylinderWires( position, radiusTop, radiusBottom, height, slices, color ) end + +---Draw a cylinder wires with base at startPos and top at endPos +---- Failure return false +---- Success return true +---@param startPos table +---@param endPos table +---@param startRadius number +---@param endRadius number +---@param sides integer +---@param color table +---@return any success +function RL.DrawCylinderWiresEx( startPos, endPos, startRadius, endRadius, sides, color ) end + +---Draw a plane XZ +---- Failure return false +---- Success return true +---@param centerPos table +---@param size table +---@param color table +---@return any success +function RL.DrawPlane( centerPos, size, color ) end + +---Draw 3D textured quad. ( Texture coordinates opengl style 0.0 - 1.0 ). +---- Failure return false +---- Success return true +---@param texture any +---@param vertices any +---@param texCoords any +---@param colors any +---@return any success +function RL.DrawQuad3DTexture( texture, vertices, texCoords, colors ) end + +---Draw a ray line +---- Failure return false +---- Success return true +---@param ray any +---@param color table +---@return any success +function RL.DrawRay( ray, color ) end + +---Draw a grid ( Centered at ( 0, 0, 0 ) ) +---- Failure return false +---- Success return true +---@param slices integer +---@param spacing number +---@return any success +function RL.DrawGrid( slices, spacing ) end + +-- Models - Mesh + +---Generate polygonal mesh +---- Failure return -1 +---- Success return int +---@param sides integer +---@param radius number +---@return any mesh +function RL.GenMeshPoly( sides, radius ) end + +---Generate plane mesh ( With subdivisions ) +---- Failure return -1 +---- Success return int +---@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 +---- Failure return -1 +---- Success return int +---@param size table +---@return any mesh +function RL.GenMeshCube( size ) end + +---Generate sphere mesh ( Standard sphere ) +---- Failure return -1 +---- Success return int +---@param radius number +---@param rings integer +---@param slices integer +---@return any mesh +function RL.GenMeshSphere( radius, rings, slices ) end + +---Generate cylinder mesh +---- Failure return -1 +---- Success return int +---@param radius number +---@param height number +---@param slices integer +---@return any mesh +function RL.GenMeshCylinder( radius, height, slices ) end + +---Generate cone/pyramid mesh +---- Failure return -1 +---- Success return int +---@param radius number +---@param height number +---@param slices integer +---@return any mesh +function RL.GenMeshCone( radius, height, slices ) end + +---Generate torus mesh +---- Failure return -1 +---- Success return int +---@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 +---- Failure return -1 +---- Success return int +---@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 +---- Failure return -1 +---- Success return int +---@param heightmap any +---@param size table +---@return any mesh +function RL.GenMeshHeightmap( heightmap, size ) end + +---Generate custom mesh from vertex attribute data and uploads it into a VAO ( if supported ) and VBO +---- Failure return -1 +---- Success return int +---@param mesh any +---@param dynamic boolean +---@return any mesh +function RL.GenMeshCustom( mesh, dynamic ) end + +---Update mesh vertex data in GPU. +---Note! Mainly intented to be used with custom meshes. +---- Failure return false +---- Success return true +---@param mesh any +---@return any success +function RL.UpdateMesh( mesh ) end + +---Unload mesh data from CPU and GPU +---- Failure return false +---- Success return true +---@param mesh any +---@return any success +function RL.UnloadMesh( mesh ) end + +---Draw a 3d mesh with material and transform +---- Failure return false +---- Success return true +---@param mesh any +---@param material any +---@param transform table +---@return any success +function RL.DrawMesh( mesh, material, transform ) end + +---Draw multiple mesh instances with material and different transforms +---- Failure return false +---- Success return true +---@param mesh any +---@param material any +---@param transforms any +---@param instances integer +---@return any success +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 +---- Failure return false +---- Success return true +---@param mesh any +---@param fileName string +---@return any success +function RL.ExportMesh( mesh, fileName ) end + +---Compute mesh bounding box limits +---- Failure return false +---- Success return BoundingBox +---@param mesh any +---@return any boundingBox +function RL.GetMeshBoundingBox( mesh ) end + +---Compute mesh tangents +---- Failure return false +---- Success return true +---@param mesh any +---@return any success +function RL.GenMeshTangents( mesh ) end + +-- Models - Material + +---Load default material +---- Success return int +---@return any material +function RL.LoadMaterialDefault() end + +---Load material from table. See material table definition +---- Failure return false +---- Success return int +---@param material any +---@return any material +function RL.CreateMaterial( material ) end + +---Unload material from GPU memory ( VRAM ) +---- Failure return false +---- Success return true +---@param material any +---@return any success +function RL.UnloadMaterial( material ) end + +---Set texture for a material map type ( MATERIAL_MAP_ALBEDO, MATERIAL_MAP_METALNESS... ) +---- Failure return false +---- Success return true +---@param material any +---@param mapType integer +---@param texture any +---@return any success +function RL.SetMaterialTexture( material, mapType, texture ) end + +---Set color for a material map type +---- Failure return false +---- Success return true +---@param material any +---@param mapType integer +---@param color table +---@return any success +function RL.SetMaterialColor( material, mapType, color ) end + +---Set value for a material map type +---- Failure return false +---- Success return true +---@param material any +---@param mapType integer +---@param value number +---@return any success +function RL.SetMaterialValue( material, mapType, value ) end + +---Set shader for material +---- Failure return false +---- Success return true +---@param material any +---@param shader any +---@return any success +function RL.SetMaterialShader( material, shader ) end + +-- Models - Model + +---Load model from files ( Meshes and materials ) +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any model +function RL.LoadModel( fileName ) end + +---Load model from generated mesh ( Default material ) +---- Failure return -1 +---- Success return int +---@param mesh any +---@return any model +function RL.LoadModelFromMesh( mesh ) end + +---Unload model ( Including meshes ) from memory ( RAM and/or VRAM ) +---- Failure return false +---- Success return true +---@param model any +---@return any success +function RL.UnloadModel( model ) end + +---Draw a model ( With texture if set ) +---- Failure return false +---- Success return true +---@param model any +---@param position table +---@param scale number +---@param tint table +---@return any success +function RL.DrawModel( model, position, scale, tint ) end + +---Draw a model with extended parameters +---- Failure return false +---- Success return true +---@param model any +---@param position table +---@param rotationAxis table +---@param rotationAngle number +---@param scale table +---@param tint table +---@return any success +function RL.DrawModelEx( model, position, rotationAxis, rotationAngle, scale, tint ) end + +---Copies material to model material. ( Model material is the material id in models. Material can be deleted if not used elsewhere ) +---- Failure return false +---- Success return true +---@param model any +---@param modelMaterial any +---@param material any +---@return any success +function RL.SetModelMaterial( model, modelMaterial, material ) end + +---Set material for a mesh ( Mesh and material on this model ) +---- Failure return false +---- Success return true +---@param model any +---@param meshId integer +---@param materialId integer +---@return any success +function RL.SetModelMeshMaterial( model, meshId, materialId ) end + +---Draw a billboard texture +---- Failure return false +---- Success return true +---@param camera any +---@param texture any +---@param position table +---@param size number +---@param tint table +---@return any success +function RL.DrawBillboard( camera, texture, position, size, tint ) end + +---Draw a billboard texture defined by source +---- Failure return false +---- Success return true +---@param camera any +---@param texture any +---@param source table +---@param position table +---@param size table +---@param tint table +---@return any success +function RL.DrawBillboardRec( camera, texture, source, position, size, tint ) end + +---Set model transform matrix +---- Failure return false +---- Success return true +---@param model any +---@param transform table +---@return any success +function RL.SetModelTransform( model, transform ) end + +---Get model transform matrix +---- Failure return false +---- Success return Matrix +---@param model any +---@return any transform +function RL.GetModelTransform( model ) end + +-- Model - Animations + +---Load model animations from file +---- Failure return -1 +---- Success return int, int +---@param fileName string +---@return any animations +---@return any animationCount +function RL.LoadModelAnimations( fileName ) end + +---Update model animation pose +---- Failure return false +---- Success return true +---@param model any +---@param animations any +---@param animation integer +---@param frame integer +---@return any success +function RL.UpdateModelAnimation( model, animations, animation, frame ) end + +---Unload animation data +---- Failure return false +---- Success return true +---@param animations any +---@return any success +function RL.UnloadModelAnimations( animations ) end + +---Check model animation skeleton match +---- Failure return nil +---- Success return bool +---@param model any +---@param animations any +---@return any valid +function RL.IsModelAnimationValid( model, animations ) end + +---Return modelAnimation bone count +---- Failure return false +---- Success return int +---@param animations any +---@param animation integer +---@return any boneCount +function RL.GetModelAnimationBoneCount( animations, animation ) end + +---Return modelAnimation frame count +---- Failure return false +---- Success return int +---@param animations any +---@param animation integer +---@return any frameCount +function RL.GetModelAnimationFrameCount( animations, animation ) end + +-- Model - Collision + +---Check collision between two spheres +---- Failure return nil +---- 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 +---- Failure return nil +---- Success return bool +---@param box1 any +---@param box2 any +---@return any collision +function RL.CheckCollisionBoxes( box1, box2 ) end + +---Check collision between box and sphere +---- Failure return nil +---- 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 } ) +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 +---- Failure return nil +---- 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 + +-- Audio - Audio device management + +---Set master volume ( listener ) +---- Failure return false +---- Success return true +---@param volume number +---@return any success +function RL.SetMasterVolume( volume ) end + +-- Audio - Wave/Sound Loading + +---Load sound from file +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any sound +function RL.LoadSound( fileName ) end + +---Load wave data from file +---- Failure return -1 +---- Success return int +---@param fileName string +---@return any wave +function RL.LoadWave( fileName ) end + +---Load sound from wave data +---- Failure return -1 +---- Success return int +---@param wave any +---@return any sound +function RL.LoadSoundFromWave( wave ) end + +---Unload sound +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.UnloadSound( sound ) end + +---Unload wave data +---- Failure return false +---- Success return true +---@param wave any +---@return any success +function RL.UnloadWave( wave ) end + +---Export wave data to file, returns true on success +---- Failure return false +---- Success return true +---@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 +---- Failure return false +---- Success return true +---@param wave any +---@param fileName string +---@return any success +function RL.ExportWaveAsCode( wave, fileName ) end + +-- Audio - Wave/Sound management + +---Play a sound +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.PlaySound( sound ) end + +---Stop playing a sound +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.StopSound( sound ) end + +---Pause a sound +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.PauseSound( sound ) end + +---Resume a paused sound +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.ResumeSound( sound ) end + +---Play a sound ( Using multichannel buffer pool ) +---- Failure return false +---- Success return true +---@param sound any +---@return any success +function RL.PlaySoundMulti( sound ) end + +---Stop any sound playing ( using multichannel buffer pool ) +---@return any RL.StopSoundMulti +function RL.StopSoundMulti() end + +---Get number of sounds playing in the multichannel +---- Success return int +---@return any count +function RL.GetSoundsPlaying() end + +---Check if a sound is currently playing +---- Failure return nil +---- Success return bool +---@param sound any +---@return any playing +function RL.IsSoundPlaying( sound ) end + +---Set volume for a sound ( 1.0 is max level ) +---- Failure return false +---- Success return true +---@param sound any +---@param volume number +---@return any success +function RL.SetSoundVolume( sound, volume ) end + +---Set pitch for a sound ( 1.0 is base level ) +---- Failure return false +---- Success return true +---@param sound any +---@param pitch number +---@return any success +function RL.SetSoundPitch( sound, pitch ) end + +---Set pan for a sound ( 0.5 is center ) +---- Failure return false +---- Success return true +---@param sound any +---@param pan number +---@return any success +function RL.SetSoundPan( sound, pan ) end + +---Convert wave data to desired format +---- Failure return false +---- Success return true +---@param wave any +---@param sampleRate integer +---@param sampleSize integer +---@param channels integer +---@return any success +function RL.WaveFormat( wave, sampleRate, sampleSize, channels ) end + +---Copy a wave to a new wave +---- Failure return -1 +---- Success return int +---@param wave any +---@return any wave +function RL.WaveCopy( wave ) end + +---Crop a wave to defined samples range +---- Failure return false +---- Success return true +---@param wave any +---@param initSample integer +---@param finalSample integer +---@return any success +function RL.WaveCrop( wave, initSample, finalSample ) end + +-- Audio - Music management + +---Load music stream from file +---- Failure return false +---- Success return true +---@param fileName string +---@return any success +function RL.LoadMusicStream( fileName ) end + +---Start music playing +---@return any RL.PlayMusicStream +function RL.PlayMusicStream() end + +---Check if music is playing +---- Success return bool +---@return any playing +function RL.IsMusicStreamPlaying() end + +---Stop music playing +---@return any RL.StopMusicStream +function RL.StopMusicStream() end + +---Pause music playing +---@return any RL.PauseMusicStream +function RL.PauseMusicStream() end + +---Resume playing paused music +---@return any RL.ResumeMusicStream +function RL.ResumeMusicStream() end + +---Seek music to a position ( in seconds ) +---- Failure return false +---- Success return true +---@param position number +---@return any success +function RL.SeekMusicStream( position ) end + +---Set volume for music ( 1.0 is max level ) +---- Failure return false +---- Success return true +---@param volume number +---@return any success +function RL.SetMusicVolume( volume ) end + +---Set pitch for a music ( 1.0 is base level ) +---- Failure return false +---- Success return true +---@param pitch number +---@return any success +function RL.SetMusicPitch( pitch ) end + +---Set pan for a music ( 0.5 is center ) +---- Failure return false +---- Success return true +---@param pan number +---@return any success +function RL.SetMusicPan( pan ) end + +---Get music time length ( in seconds ) +---- Success return float +---@return any length +function RL.GetMusicTimeLength() end + +---Get current music time played ( in seconds ) +---- Success return float +---@return any played +function RL.GetMusicTimePlayed() end + +-- Math - Utils + +---Clamp float value +---- Failure return false +---- 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 +---- Failure return false +---- Success return float +---@param start number +---@param end number +---@param amount number +---@return any result +function RL.Lerp( start, end, amount ) end + +---Normalize input value within input range +---- Failure return false +---- Success return float +---@param value number +---@param start number +---@param end number +---@return any result +function RL.Normalize( value, start, end ) end + +---Remap input value within input range to output range +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return int +---@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) +---- Failure return false +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Add( v1, v2 ) end + +---Add vector and float value +---- Failure return false +---- Success return Vector2 +---@param v table +---@param add number +---@return any result +function RL.Vector2AddValue( v, add ) end + +---Subtract two vectors (v1 - v2) +---- Failure return false +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Subtract( v1, v2 ) end + +---Subtract vector by float value +---- Failure return false +---- Success return Vector2 +---@param v table +---@param sub number +---@return any result +function RL.Vector2SubtractValue( v, sub ) end + +---Calculate vector length +---- Failure return false +---- Success return float +---@param v any +---@return any result +function RL.Vector2Length( v ) end + +---Calculate vector square length +---- Failure return false +---- Success return float +---@param v any +---@return any result +function RL.Vector2LengthSqr( v ) end + +---Calculate two vectors dot product +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2DotProduct( v1, v2 ) end + +---Calculate distance between two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Distance( v1, v2 ) end + +---Calculate square distance between two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2DistanceSqr( v1, v2 ) end + +---Calculate angle from two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Angle( v1, v2 ) end + +---Scale vector ( multiply by value ) +---- Failure return false +---- Success return Vector2 +---@param v table +---@param scale number +---@return any result +function RL.Vector2Scale( v, scale ) end + +---Multiply vector by vector +---- Failure return false +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Multiply( v1, v2 ) end + +---Negate vector +---- Failure return false +---- Success return Vector2 +---@param v table +---@return any result +function RL.Vector2Negate( v ) end + +---Divide vector by vector +---- Failure return false +---- Success return Vector2 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Divide( v1, v2 ) end + +---Normalize provided vector +---- Failure return false +---- Success return Vector2 +---@param v table +---@return any result +function RL.Vector2Normalize( v ) end + +---Transforms a Vector2 by a given Matrix +---- Failure return false +---- Success return Vector2 +---@param v table +---@param mat table +---@return any result +function RL.Vector2Transform( v, mat ) end + +---Calculate linear interpolation between two vectors +---- Failure return false +---- 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 +---- Failure return false +---- Success return Vector2 +---@param v table +---@param normal table +---@return any result +function RL.Vector2Reflect( v, normal ) end + +---Rotate vector by angle +---- Failure return false +---- Success return Vector2 +---@param v table +---@param angle number +---@return any result +function RL.Vector2Rotate( v, angle ) end + +---Move Vector towards target +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return int +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector2Equals( v1, v2 ) 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 +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Add( v1, v2 ) end + +---Add vector and float value +---- Failure return false +---- Success return Vector3 +---@param v table +---@param add number +---@return any result +function RL.Vector3AddValue( v, add ) end + +---Subtract two vectors +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Subtract( v1, v2 ) end + +---Subtract vector by float value +---- Failure return false +---- Success return Vector3 +---@param v table +---@param sub number +---@return any result +function RL.Vector3SubtractValue( v, sub ) end + +---Multiply vector by scalar +---- Failure return false +---- Success return Vector3 +---@param v table +---@param scalar number +---@return any result +function RL.Vector3Scale( v, scalar ) end + +---Multiply vector by vector +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Multiply( v1, v2 ) end + +---Calculate two vectors cross product +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3CrossProduct( v1, v2 ) end + +---Calculate one vector perpendicular vector +---- Failure return false +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Perpendicular( v ) end + +---Calculate vector length +---- Failure return false +---- Success return float +---@param v table +---@return any result +function RL.Vector3Length( v ) end + +---Calculate vector square length +---- Failure return false +---- Success return float +---@param v table +---@return any result +function RL.Vector3LengthSqr( v ) end + +---Calculate two vectors dot product +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3DotProduct( v1, v2 ) end + +---Calculate distance between two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Distance( v1, v2 ) end + +---Calculate square distance between two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3DistanceSqr( v1, v2 ) end + +---Calculate angle between two vectors +---- Failure return false +---- Success return float +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Angle( v1, v2 ) end + +---Negate provided vector ( invert direction ) +---- Failure return false +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Negate( v ) end + +---Divide vector by vector +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@return any result +function RL.Vector3Divide( v1, v2 ) end + +---Normalize provided vector +---- Failure return false +---- Success return Vector3 +---@param v table +---@return any result +function RL.Vector3Normalize( v ) end + +---Orthonormalize provided vectors. Makes vectors normalized and orthogonal to each other. +---Gram-Schmidt function implementation +---- Failure return false +---- 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 +---- Failure return false +---- Success return Vector3 +---@param v table +---@param mat table +---@return any result +function RL.Vector3Transform( v, mat ) end + +---Transform a vector by quaternion rotation +---- Failure return false +---- Success return Vector3 +---@param v table +---@param q table +---@return any result +function RL.Vector3RotateByQuaternion( v, q ) end + +---Rotates a vector around an axis +---- Failure return false +---- Success return Vector3 +---@param v table +---@param axis table +---@param angle number +---@return any result +function RL.Vector3RotateByAxisAngle( v, axis, angle ) end + +---Calculate linear interpolation between two vectors +---- Failure return false +---- Success return Vector3 +---@param v1 table +---@param v2 table +---@param amount number +---@return any result +function RL.Vector3Lerp( v1, v2, amount ) end + +---Calculate reflected vector to normal +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return int +---@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 +---- Failure return false +---- Success return Vector3 +---@param v table +---@param n table +---@param r number +---@return any result +function RL.Vector3Refract( v, n, r ) end + +-- Math - Matrix + +---Compute matrix determinant +---- Failure return false +---- 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 ) +---- Failure return false +---- Success return float +---@param mat table +---@return any result +function RL.MatrixTrace( mat ) end + +---Transposes provided matrix +---- Failure return false +---- Success return Matrix +---@param mat table +---@return any result +function RL.MatrixTranspose( mat ) end + +---Invert provided matrix +---- Failure return false +---- 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 +---- Failure return false +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixAdd( left, right ) end + +---Subtract two matrices (left - right) +---- Failure return false +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixSubtract( left, right ) end + +---Get two matrix multiplication +---- Failure return false +---- Success return Matrix +---@param left table +---@param right table +---@return any result +function RL.MatrixMultiply( left, right ) end + +---Get translation matrix +---- Failure return false +---- 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 +---- Failure return false +---- 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 ) +---- Failure return false +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateX( angle ) end + +---Get y-rotation matrix ( angle in radians ) +---- Failure return false +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateY( angle ) end + +---Get z-rotation matrix ( angle in radians ) +---- Failure return false +---- Success return Matrix +---@param angle number +---@return any result +function RL.MatrixRotateZ( angle ) end + +---Get xyz-rotation matrix ( angles in radians ) +---- Failure return false +---- Success return Matrix +---@param angle table +---@return any result +function RL.MatrixRotateXYZ( angle ) end + +---Get zyx-rotation matrix ( angles in radians ) +---- Failure return false +---- Success return Matrix +---@param angle table +---@return any result +function RL.MatrixRotateZYX( angle ) end + +---Get scaling matrix +---- Failure return false +---- Success return Matrix +---@param scale table +---@return any result +function RL.MatrixScale( scale ) end + +---Get perspective projection matrix +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 ) +---- Failure return false +---- Success return Matrix +---@param eye table +---@param target table +---@param up table +---@return any result +function RL.MatrixLookAt( eye, target, up ) end + +-- Math - Quaternion + +---Add two quaternions +---- Failure return false +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionAdd( q1, q2 ) end + +---Add quaternion and float value +---- Failure return false +---- Success return Quaternion +---@param q table +---@param add number +---@return any result +function RL.QuaternionAddValue( q, add ) end + +---Subtract two quaternions +---- Failure return false +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionSubtract( q1, q2 ) end + +---Subtract quaternion and float value +---- Failure return false +---- 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 +---- Failure return false +---- Success return float +---@param q table +---@return any result +function RL.QuaternionLength( q ) end + +---Normalize provided quaternion +---- Failure return false +---- Success return Quaternion +---@param q table +---@return any result +function RL.QuaternionNormalize( q ) end + +---Invert provided quaternion +---- Failure return false +---- Success return Quaternion +---@param q table +---@return any result +function RL.QuaternionInvert( q ) end + +---Calculate two quaternion multiplication +---- Failure return false +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionMultiply( q1, q2 ) end + +---Scale quaternion by float value +---- Failure return false +---- Success return Quaternion +---@param q table +---@param mul number +---@return any result +function RL.QuaternionScale( q, mul ) end + +---Divide two quaternions +---- Failure return false +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionDivide( q1, q2 ) end + +---Calculate linear interpolation between two quaternions +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return Quaternion +---@param q1 table +---@param q2 table +---@param amount number +---@return any result +function RL.QuaternionSlerp( q1, q2, amount ) end + +---Calculate quaternion based on the rotation from one vector to another +---- Failure return false +---- 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 +---- Failure return false +---- Success return Quaternion +---@param mat table +---@return any result +function RL.QuaternionFromMatrix( mat ) end + +---Get a quaternion for a given rotation matrix +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- Success return Vector3 +---@param q table +---@return any result +function RL.QuaternionToEuler( q ) end + +---Transform a quaternion given a transformation matrix +---- Failure return false +---- 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 +---- Failure return false +---- Success return int +---@param q1 table +---@param q2 table +---@return any result +function RL.QuaternionEquals( q1, q2 ) end + +-- Gui - Global + +---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 +---- Failure return false +---- Success return true +---@param alpha number +---@return any success +function RL.GuiFade( alpha ) end + +---Set gui state ( global state ) +---- Failure return false +---- Success return true +---@param state integer +---@return any success +function RL.GuiSetState( state ) end + +---Get gui state ( global state ) +---- Success return int +---@return any state +function RL.GuiGetState() end + +-- Gui - Font + +---Set gui custom font ( Global state ) +---- Failure return false +---- Success return true +---@param font any +---@return any success +function RL.GuiSetFont( font ) end + +-- Gui - Style + +---Set one style property +---- Failure return false +---- Success return true +---@param control integer +---@param property integer +---@param value integer +---@return any success +function RL.GuiSetStyle( control, property, value ) end + +---Get one style property +---- Failure return false +---- Success return int +---@param control integer +---@param property integer +---@return any value +function RL.GuiGetStyle( control, property ) end + +---Load style file over global style variable ( .rgs ) +---- Failure return false +---- Success return true +---@param control integer +---@param property integer +---@return any success +function RL.GuiLoadStyle( control, property ) end + +---Load style default over global style +---@return any RL.GuiLoadStyleDefault +function RL.GuiLoadStyleDefault() end + +-- Gui - Container + +---Window Box control, shows a window that can be closed +---- Failure return nil +---- Success return bool +---@param bounds table +---@param title string +---@return any state +function RL.GuiWindowBox( bounds, title ) end + +---Group Box control with text name +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiGroupBox( bounds, text ) end + +---Line separator control, could contain text +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiLine( bounds, text ) end + +---Panel control, useful to group controls +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiPanel( bounds, text ) end + +---Scroll Panel control +---- Failure return false +---- Success return Rectangle, Vector2 +---@param bounds table +---@param text string +---@param content table +---@param scroll table +---@return any view +---@return any scroll +function RL.GuiScrollPanel( bounds, text, content, scroll ) end + +-- Gui - Basic + +---Label control, shows text +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiLabel( bounds, text ) end + +---Button control, returns true when clicked +---- Failure return nil +---- Success return boolean +---@param bounds table +---@param text string +---@return any clicked +function RL.GuiButton( bounds, text ) end + +---Label button control, show true when clicked +---- Failure return nil +---- Success return boolean +---@param bounds table +---@param text string +---@return any clicked +function RL.GuiLabelButton( bounds, text ) end + +---Toggle Button control, returns true when active +---- Failure return nil +---- Success return boolean +---@param bounds table +---@param text string +---@param active boolean +---@return any active +function RL.GuiToggle( bounds, text, active ) end + +---Toggle Group control, returns active toggle index +---- Failure return false +---- Success return int +---@param bounds table +---@param text string +---@param active integer +---@return any index +function RL.GuiToggleGroup( bounds, text, active ) end + +---Check Box control, returns true when active +---- Failure return nil +---- Success return boolean +---@param bounds table +---@param text string +---@param checked boolean +---@return any active +function RL.GuiCheckBox( bounds, text, checked ) end + +---Combo Box control, returns selected item index +---- Failure return nil +---- Success return int +---@param bounds table +---@param text string +---@param active integer +---@return any active +function RL.GuiComboBox( bounds, text, active ) end + +---Text Box control, updates input text +---- Failure return nil +---- Success return boolean, string +---@param bounds table +---@param text string +---@param textSize integer +---@param editMode boolean +---@return any pressed +---@return any text +function RL.GuiTextBox( bounds, text, textSize, editMode ) end + +---Text Box control with multiple lines +---- Failure return nil +---- Success return boolean, string +---@param bounds table +---@param text string +---@param textSize integer +---@param editMode boolean +---@return any pressed +---@return any text +function RL.GuiTextBoxMulti( bounds, text, textSize, editMode ) end + +---Spinner control, returns selected value +---- Failure return nil +---- Success return boolean, int +---@param bounds table +---@param text string +---@param value integer +---@param minValue integer +---@param maxValue integer +---@param editMode boolean +---@return any pressed +---@return any value +function RL.GuiSpinner( bounds, text, value, minValue, maxValue, editMode ) end + +---Value Box control, updates input text with numbers +---- Failure return nil +---- Success return boolean, int +---@param bounds table +---@param text string +---@param value integer +---@param minValue integer +---@param maxValue integer +---@param editMode boolean +---@return any pressed +---@return any value +function RL.GuiValueBox( bounds, text, value, minValue, maxValue, editMode ) end + +---Slider control, returns selected value +---- Failure return nil +---- Success return float +---@param bounds table +---@param textLeft string +---@param textRight string +---@param value number +---@param minValue number +---@param maxValue number +---@return any value +function RL.GuiSlider( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Slider Bar control, returns selected value +---- Failure return nil +---- Success return float +---@param bounds table +---@param textLeft string +---@param textRight string +---@param value number +---@param minValue number +---@param maxValue number +---@return any value +function RL.GuiSliderBar( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Progress Bar control, shows current progress value +---- Failure return nil +---- Success return float +---@param bounds table +---@param textLeft string +---@param textRight string +---@param value number +---@param minValue number +---@param maxValue number +---@return any value +function RL.GuiProgressBar( bounds, textLeft, textRight, value, minValue, maxValue ) end + +---Scroll Bar control +---- Failure return nil +---- 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 + +---Dropdown Box control, returns selected item +---- Failure return nil +---- Success return bool, int +---@param bounds table +---@param text string +---@param active integer +---@param editMode boolean +---@return any pressed +---@return any item +function RL.GuiDropdownBox( bounds, text, active, editMode ) end + +---Status Bar control, shows info text +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiStatusBar( bounds, text ) end + +---Dummy control for placeholders +---- Failure return false +---- Success return true +---@param bounds table +---@param text string +---@return any success +function RL.GuiDummyRec( bounds, text ) end + +---Grid control, returns mouse cell position +---- Failure return false +---- Success return Vector2 +---@param bounds table +---@param text string +---@param spacing number +---@param subdivs integer +---@return any cell +function RL.GuiGrid( bounds, text, spacing, subdivs ) end + +-- Gui - Advanced + +---List View control, returns selected list item index and scroll index +---- Failure return nil +---- Success return int, int +---@param bounds table +---@param text string +---@param scrollIndex integer +---@param active integer +---@return any itemIndex +---@return any scrollIndex +function RL.GuiListView( bounds, text, scrollIndex, active ) end + +---List View with extended parameters, returns selected list item index, scroll index and focus +---- Failure return nil +---- Success return int, int, int +---@param bounds table +---@param text string +---@param focus integer +---@param scrollIndex integer +---@param active integer +---@return any itemIndex +---@return any scrollIndex +---@return any focus +function RL.GuiListViewEx( bounds, text, focus, scrollIndex, active ) end + +---Message Box control, displays a message, returns button index ( 0 is x button ) +---- Failure return false +---- Success return int +---@param bounds table +---@param title string +---@param message string +---@param buttons string +---@return any buttonIndex +function RL.GuiMessageBox( bounds, title, message, buttons ) end + +---Text Input Box control, ask for text, supports secret +---- Failure return false +---- Success return int, string, int +---@param bounds table +---@param title string +---@param message string +---@param buttons string +---@param text string +---@param textMaxSize integer +---@param secretViewActive integer +---@return any buttonIndex +---@return any text +---@return any secretViewActive +function RL.GuiTextInputBox( bounds, title, message, buttons, text, textMaxSize, secretViewActive ) end + +---Color Picker control ( multiple color controls ) +---- Failure return false +---- Success return Color +---@param bounds table +---@param text string +---@param color table +---@return any color +function RL.GuiColorPicker( bounds, text, color ) end + +---Color Panel control +---- Failure return false +---- Success return Color +---@param bounds table +---@param text string +---@param color table +---@return any color +function RL.GuiColorPanel( bounds, text, color ) end + +---Color Bar Alpha control +---- Failure return false +---- Success return float +---@param bounds table +---@param text string +---@param alpha number +---@return any alpha +function RL.GuiColorBarAlpha( bounds, text, alpha ) end + +---Color Bar Hue control +---- Failure return false +---- Success return float +---@param bounds table +---@param text string +---@param value number +---@return any hue +function RL.GuiColorBarHue( bounds, text, value ) end + +-- Gui - Icons + +---Get text with icon id prepended ( if supported ) +---- Failure return false +---- Success return string +---@param iconId integer +---@param text string +---@return any text +function RL.GuiIconText( iconId, text ) end + +---Draw icon +---- Failure return false +---- Success return true +---@param iconId integer +---@param pos table +---@param pixelSize integer +---@param color table +---@return any success +function RL.GuiDrawIcon( iconId, pos, pixelSize, color ) end + +---Set icon scale ( 1 by default ) +---- Failure return false +---- Success return true +---@param scale integer +---@return any success +function RL.GuiSetIconScale( scale ) end + +---Set icon pixel value +---- Failure return false +---- Success return true +---@param iconId integer +---@param pos table +---@return any success +function RL.GuiSetIconPixel( iconId, pos ) end + +---Clear icon pixel value +---- Failure return false +---- Success return true +---@param iconId integer +---@param pos table +---@return any success +function RL.GuiClearIconPixel( iconId, pos ) end + +---Check icon pixel value +---- Failure return nil +---- Success return bool +---@param iconId integer +---@param pos table +---@return any value +function RL.GuiCheckIconPixel( iconId, pos ) end + +-- Lights - Basics + +---Create a light and get shader locations +---- Failure return -1 +---- Success return int +---@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 +---- Failure return false +---- Success return true +---@param shader any +---@param light any +---@return any success +function RL.UpdateLightValues( shader, light ) end + +-- RLGL - General render state + +---Set the line drawing width +---- Failure return false +---- Success return true +---@param width number +---@return any success +function RL.rlSetLineWidth( width ) end + +---Get the line drawing width +---- Success return float +---@return any width +function RL.rlGetLineWidth() end + +-- Easings - Linear Easing functions + +---Ease linear +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 +---- Failure return false +---- 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 + |
