diff --git a/build.zig b/build.zig
index 75a77dd5..9c275736 100644
--- a/build.zig
+++ b/build.zig
@@ -2,7 +2,7 @@ const std = @import("std");
const builtin = @import("builtin");
/// Minimum supported version of Zig
-const min_ver = "0.12.0";
+const min_ver = "0.13.0";
comptime {
const order = std.SemanticVersion.order;
@@ -11,36 +11,6 @@ comptime {
@compileError("Raylib requires zig version " ++ min_ver);
}
-// NOTE(freakmangd): I don't like using a global here, but it prevents having to
-// get the flags a second time when adding raygui
-var raylib_flags_arr: std.ArrayListUnmanaged([]const u8) = .{};
-
-// This has been tested with zig version 0.12.0
-pub fn addRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile {
- const raylib_dep = b.dependencyFromBuildZig(@This(), .{
- .target = target,
- .optimize = optimize,
- .raudio = options.raudio,
- .rmodels = options.rmodels,
- .rshapes = options.rshapes,
- .rtext = options.rtext,
- .rtextures = options.rtextures,
- .platform = options.platform,
- .shared = options.shared,
- .linux_display_backend = options.linux_display_backend,
- .opengl_version = options.opengl_version,
- .config = options.config,
- });
- const raylib = raylib_dep.artifact("raylib");
-
- if (options.raygui) {
- const raygui_dep = b.dependency(options.raygui_dependency_name, .{});
- addRaygui(b, raylib, raygui_dep);
- }
-
- return raylib;
-}
-
fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void {
raylib.defineCMacro("PLATFORM_DESKTOP", null);
@@ -52,6 +22,30 @@ fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend
}
}
+fn createEmsdkStep(b: *std.Build, emsdk: *std.Build.Dependency) *std.Build.Step.Run {
+ if (builtin.os.tag == .windows) {
+ return b.addSystemCommand(&.{emsdk.path("emsdk.bat").getPath(b)});
+ } else {
+ return b.addSystemCommand(&.{emsdk.path("emsdk").getPath(b)});
+ }
+}
+
+fn emSdkSetupStep(b: *std.Build, emsdk: *std.Build.Dependency) !?*std.Build.Step.Run {
+ const dot_emsc_path = emsdk.path(".emscripten").getPath(b);
+ const dot_emsc_exists = !std.meta.isError(std.fs.accessAbsolute(dot_emsc_path, .{}));
+
+ if (!dot_emsc_exists) {
+ const emsdk_install = createEmsdkStep(b, emsdk);
+ emsdk_install.addArgs(&.{ "install", "latest" });
+ const emsdk_activate = createEmsdkStep(b, emsdk);
+ emsdk_activate.addArgs(&.{ "activate", "latest" });
+ emsdk_activate.step.dependOn(&emsdk_install.step);
+ return emsdk_activate;
+ } else {
+ return null;
+ }
+}
+
/// A list of all flags from `src/config.h` that one may override
const config_h_flags = outer: {
// Set this value higher if compile errors happen as `src/config.h` gets larger
@@ -83,21 +77,26 @@ const config_h_flags = outer: {
};
fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile {
- raylib_flags_arr.clearRetainingCapacity();
+ var raylib_flags_arr = std.ArrayList([]const u8).init(b.allocator);
+ defer raylib_flags_arr.deinit();
- const shared_flags = &[_][]const u8{
- "-fPIC",
- "-DBUILD_LIBTYPE_SHARED",
- };
- try raylib_flags_arr.appendSlice(b.allocator, &[_][]const u8{
+ try raylib_flags_arr.appendSlice(&[_][]const u8{
"-std=gnu99",
"-D_GNU_SOURCE",
"-DGL_SILENCE_DEPRECATION=199309L",
"-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/3674
});
+
+ if (options.shared) {
+ try raylib_flags_arr.appendSlice(&[_][]const u8{
+ "-fPIC",
+ "-DBUILD_LIBTYPE_SHARED",
+ });
+ }
+
if (options.config.len > 0) {
// Sets a flag indiciating the use of a custom `config.h`
- try raylib_flags_arr.append(b.allocator, "-DEXTERNAL_CONFIG_FLAGS");
+ try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS");
// Splits a space-separated list of config flags into multiple flags
//
@@ -107,7 +106,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
// Apply config flags supplied by the user
while (config_iter.next()) |config_flag|
- try raylib_flags_arr.append(b.allocator, config_flag);
+ try raylib_flags_arr.append(config_flag);
// Apply all relevant configs from `src/config.h` *except* the user-specified ones
//
@@ -125,14 +124,10 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
}
// Otherwise, append default value from config.h to compile flags
- try raylib_flags_arr.append(b.allocator, flag);
+ try raylib_flags_arr.append(flag);
}
}
- if (options.shared) {
- try raylib_flags_arr.appendSlice(b.allocator, shared_flags);
- }
-
const raylib = if (options.shared)
b.addSharedLibrary(.{
.name = "raylib",
@@ -223,6 +218,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
waylandGenerate(b, raylib, "xdg-activation-v1.xml", "xdg-activation-v1-client-protocol");
waylandGenerate(b, raylib, "idle-inhibit-unstable-v1.xml", "idle-inhibit-unstable-v1-client-protocol");
}
+
setDesktopPlatform(raylib, options.platform);
} else {
if (options.opengl_version == .auto) {
@@ -255,8 +251,15 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
setDesktopPlatform(raylib, options.platform);
},
.macos => {
+ // Include xcode_frameworks for cross compilation
+ if (b.lazyDependency("xcode_frameworks", .{})) |dep| {
+ raylib.addSystemFrameworkPath(dep.path("Frameworks"));
+ raylib.addSystemIncludePath(dep.path("include"));
+ raylib.addLibraryPath(dep.path("lib"));
+ }
+
// On macos rglfw.c include Objective-C files.
- try raylib_flags_arr.append(b.allocator, "-ObjC");
+ try raylib_flags_arr.append("-ObjC");
raylib.root_module.addCSourceFile(.{
.file = b.path("src/rglfw.c"),
.flags = raylib_flags_arr.items,
@@ -271,20 +274,19 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
setDesktopPlatform(raylib, options.platform);
},
.emscripten => {
+ // Include emscripten for cross compilation
+ if (b.lazyDependency("emsdk", .{})) |dep| {
+ if (try emSdkSetupStep(b, dep)) |emSdkStep| {
+ raylib.step.dependOn(&emSdkStep.step);
+ }
+
+ raylib.addIncludePath(dep.path("upstream/emscripten/cache/sysroot/include"));
+ }
+
raylib.defineCMacro("PLATFORM_WEB", null);
if (options.opengl_version == .auto) {
raylib.defineCMacro("GRAPHICS_API_OPENGL_ES2", null);
}
-
- if (b.sysroot == null) {
- @panic("Pass '--sysroot \"$EMSDK/upstream/emscripten\"'");
- }
-
- const cache_include = b.pathJoin(&.{ b.sysroot.?, "cache", "sysroot", "include" });
-
- var dir = std.fs.openDirAbsolute(cache_include, std.fs.Dir.OpenDirOptions{ .access_sub_paths = true, .no_follow = true }) catch @panic("No emscripten cache. Generate it!");
- dir.close();
- raylib.addIncludePath(.{ .cwd_relative = cache_include });
},
else => {
@panic("Unsupported OS");
@@ -296,25 +298,19 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
.flags = raylib_flags_arr.items,
});
- return raylib;
-}
+ if (options.raygui) {
+ const raygui_dep = b.dependency(options.raygui_dependency_name, .{});
-/// This function does not need to be called if you passed .raygui = true to addRaylib
-pub fn addRaygui(b: *std.Build, raylib: *std.Build.Step.Compile, raygui_dep: *std.Build.Dependency) void {
- if (raylib_flags_arr.items.len == 0) {
- @panic(
- \\argument 2 `raylib` in `addRaygui` must come from b.dependency("raylib", ...).artifact("raylib")
- );
+ var gen_step = b.addWriteFiles();
+ raylib.step.dependOn(&gen_step.step);
+
+ const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
+ raylib.addCSourceFile(.{ .file = raygui_c_path, .flags = raylib_flags_arr.items });
+ raylib.addIncludePath(raygui_dep.path("src"));
+ raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h");
}
- var gen_step = b.addWriteFiles();
- raylib.step.dependOn(&gen_step.step);
-
- const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
- raylib.addCSourceFile(.{ .file = raygui_c_path, .flags = raylib_flags_arr.items });
- raylib.addIncludePath(raygui_dep.path("src"));
-
- raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h");
+ return raylib;
}
pub const Options = struct {
diff --git a/build.zig.zon b/build.zig.zon
new file mode 100644
index 00000000..557028e4
--- /dev/null
+++ b/build.zig.zon
@@ -0,0 +1,24 @@
+.{
+ .name = "raylib",
+ .version = "5.5.0",
+ .minimum_zig_version = "0.13.0",
+
+ .dependencies = .{
+ .xcode_frameworks = .{
+ .url = "git+https://github.com/hexops/xcode-frameworks#a6bf82e032d4d9923ad5c222d466710fcc05f249",
+ .hash = "12208da4dfcd9b53fb367375fb612ec73f38e53015f1ce6ae6d6e8437a637078e170",
+ .lazy = true,
+ },
+ .emsdk = .{
+ .url = "git+https://github.com/emscripten-core/emsdk#3.1.50",
+ .hash = "1220e8fe9509f0843e5e22326300ca415c27afbfbba3992f3c3184d71613540b5564",
+ .lazy = true,
+ },
+ },
+
+ .paths = .{
+ "build.zig",
+ "build.zig.zon",
+ "src",
+ },
+}
diff --git a/examples/Makefile b/examples/Makefile
index 304599cf..a47911b5 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -87,6 +87,8 @@ USE_EXTERNAL_GLFW ?= FALSE
# WARNING: Library is not included in raylib, it MUST be configured by users
SDL_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/include
SDL_LIBRARY_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/lib
+SDL_LIBRARIES ?= -lSDL2 -lSDL2main
+
# Use Wayland display server protocol on Linux desktop (by default it uses X11 windowing system)
# NOTE: This variable is only used for PLATFORM_OS: LINUX
@@ -263,9 +265,9 @@ endif
# Define include paths for required headers: INCLUDE_PATHS
# NOTE: Some external/extras libraries could be required (stb, easings...)
#------------------------------------------------------------------------------------------------
-INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external
-
+INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS)
# Define additional directories containing required header files
+
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
ifeq ($(PLATFORM_OS),BSD)
INCLUDE_PATHS += -I$(RAYLIB_INCLUDE_PATH) -I/usr/pkg/include -I/usr/X11R7/include
@@ -415,12 +417,12 @@ endif
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL)
ifeq ($(PLATFORM_OS),WINDOWS)
# Libraries for Windows desktop compilation
- LDLIBS = -lraylib -lSDL2 -lSDL2main -lopengl32 -lgdi32
+ LDLIBS = -lraylib $(SDL_LIBRARIES) -lopengl32 -lgdi32
endif
ifeq ($(PLATFORM_OS),LINUX)
# Libraries for Debian GNU/Linux desktop compiling
# NOTE: Required packages: libegl1-mesa-dev
- LDLIBS = -lraylib -lSDL2 -lSDL2main -lGL -lm -lpthread -ldl -lrt
+ LDLIBS = -lraylib $(SDL_LIBRARIES) -lGL -lm -lpthread -ldl -lrt
# On X11 requires also below libraries
LDLIBS += -lX11
@@ -646,8 +648,12 @@ OTHERS = \
others/embedded_files_loading \
others/raylib_opengl_interop \
others/raymath_vector_angle \
- others/rlgl_compute_shader \
- others/rlgl_standalone
+ others/rlgl_compute_shader
+
+ifeq ($(TARGET_PLATFORM), PLATFORM_DESKTOP_GFLW)
+ OTHERS += others/rlgl_standalone
+endif
+
CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST))
diff --git a/parser/output/raylib_api.json b/parser/output/raylib_api.json
index 8f5a6c82..aa86d3f7 100644
--- a/parser/output/raylib_api.json
+++ b/parser/output/raylib_api.json
@@ -3520,6 +3520,11 @@
"description": "Get clipboard text content",
"returnType": "const char *"
},
+ {
+ "name": "GetClipboardImage",
+ "description": "Get clipboard image",
+ "returnType": "Image"
+ },
{
"name": "EnableEventWaiting",
"description": "Enable waiting for events on EndDrawing(), no automatic event polling",
diff --git a/parser/output/raylib_api.lua b/parser/output/raylib_api.lua
index f532cd0d..e5a20049 100644
--- a/parser/output/raylib_api.lua
+++ b/parser/output/raylib_api.lua
@@ -3397,6 +3397,11 @@ return {
description = "Get clipboard text content",
returnType = "const char *"
},
+ {
+ name = "GetClipboardImage",
+ description = "Get clipboard image",
+ returnType = "Image"
+ },
{
name = "EnableEventWaiting",
description = "Enable waiting for events on EndDrawing(), no automatic event polling",
diff --git a/parser/output/raylib_api.txt b/parser/output/raylib_api.txt
index f45217ac..e3849555 100644
--- a/parser/output/raylib_api.txt
+++ b/parser/output/raylib_api.txt
@@ -988,7 +988,7 @@ Callback 006: AudioCallback() (2 input parameters)
Param[1]: bufferData (type: void *)
Param[2]: frames (type: unsigned int)
-Functions found: 580
+Functions found: 581
Function 001: InitWindow() (3 input parameters)
Name: InitWindow
@@ -1227,112 +1227,117 @@ Function 046: GetClipboardText() (0 input parameters)
Return type: const char *
Description: Get clipboard text content
No input parameters
-Function 047: EnableEventWaiting() (0 input parameters)
+Function 047: GetClipboardImage() (0 input parameters)
+ Name: GetClipboardImage
+ Return type: Image
+ Description: Get clipboard image
+ No input parameters
+Function 048: EnableEventWaiting() (0 input parameters)
Name: EnableEventWaiting
Return type: void
Description: Enable waiting for events on EndDrawing(), no automatic event polling
No input parameters
-Function 048: DisableEventWaiting() (0 input parameters)
+Function 049: DisableEventWaiting() (0 input parameters)
Name: DisableEventWaiting
Return type: void
Description: Disable waiting for events on EndDrawing(), automatic events polling
No input parameters
-Function 049: ShowCursor() (0 input parameters)
+Function 050: ShowCursor() (0 input parameters)
Name: ShowCursor
Return type: void
Description: Shows cursor
No input parameters
-Function 050: HideCursor() (0 input parameters)
+Function 051: HideCursor() (0 input parameters)
Name: HideCursor
Return type: void
Description: Hides cursor
No input parameters
-Function 051: IsCursorHidden() (0 input parameters)
+Function 052: IsCursorHidden() (0 input parameters)
Name: IsCursorHidden
Return type: bool
Description: Check if cursor is not visible
No input parameters
-Function 052: EnableCursor() (0 input parameters)
+Function 053: EnableCursor() (0 input parameters)
Name: EnableCursor
Return type: void
Description: Enables cursor (unlock cursor)
No input parameters
-Function 053: DisableCursor() (0 input parameters)
+Function 054: DisableCursor() (0 input parameters)
Name: DisableCursor
Return type: void
Description: Disables cursor (lock cursor)
No input parameters
-Function 054: IsCursorOnScreen() (0 input parameters)
+Function 055: IsCursorOnScreen() (0 input parameters)
Name: IsCursorOnScreen
Return type: bool
Description: Check if cursor is on the screen
No input parameters
-Function 055: ClearBackground() (1 input parameters)
+Function 056: ClearBackground() (1 input parameters)
Name: ClearBackground
Return type: void
Description: Set background color (framebuffer clear color)
Param[1]: color (type: Color)
-Function 056: BeginDrawing() (0 input parameters)
+Function 057: BeginDrawing() (0 input parameters)
Name: BeginDrawing
Return type: void
Description: Setup canvas (framebuffer) to start drawing
No input parameters
-Function 057: EndDrawing() (0 input parameters)
+Function 058: EndDrawing() (0 input parameters)
Name: EndDrawing
Return type: void
Description: End canvas drawing and swap buffers (double buffering)
No input parameters
-Function 058: BeginMode2D() (1 input parameters)
+Function 059: BeginMode2D() (1 input parameters)
Name: BeginMode2D
Return type: void
Description: Begin 2D mode with custom camera (2D)
Param[1]: camera (type: Camera2D)
-Function 059: EndMode2D() (0 input parameters)
+Function 060: EndMode2D() (0 input parameters)
Name: EndMode2D
Return type: void
Description: Ends 2D mode with custom camera
No input parameters
-Function 060: BeginMode3D() (1 input parameters)
+Function 061: BeginMode3D() (1 input parameters)
Name: BeginMode3D
Return type: void
Description: Begin 3D mode with custom camera (3D)
Param[1]: camera (type: Camera3D)
-Function 061: EndMode3D() (0 input parameters)
+Function 062: EndMode3D() (0 input parameters)
Name: EndMode3D
Return type: void
Description: Ends 3D mode and returns to default 2D orthographic mode
No input parameters
-Function 062: BeginTextureMode() (1 input parameters)
+Function 063: BeginTextureMode() (1 input parameters)
Name: BeginTextureMode
Return type: void
Description: Begin drawing to render texture
Param[1]: target (type: RenderTexture2D)
-Function 063: EndTextureMode() (0 input parameters)
+Function 064: EndTextureMode() (0 input parameters)
Name: EndTextureMode
Return type: void
Description: Ends drawing to render texture
No input parameters
-Function 064: BeginShaderMode() (1 input parameters)
+Function 065: BeginShaderMode() (1 input parameters)
Name: BeginShaderMode
Return type: void
Description: Begin custom shader drawing
Param[1]: shader (type: Shader)
-Function 065: EndShaderMode() (0 input parameters)
+Function 066: EndShaderMode() (0 input parameters)
Name: EndShaderMode
Return type: void
Description: End custom shader drawing (use default shader)
No input parameters
-Function 066: BeginBlendMode() (1 input parameters)
+Function 067: BeginBlendMode() (1 input parameters)
Name: BeginBlendMode
Return type: void
Description: Begin blending mode (alpha, additive, multiplied, subtract, custom)
Param[1]: mode (type: int)
-Function 067: EndBlendMode() (0 input parameters)
+Function 068: EndBlendMode() (0 input parameters)
Name: EndBlendMode
Return type: void
Description: End blending mode (reset to default: alpha blending)
No input parameters
-Function 068: BeginScissorMode() (4 input parameters)
+Function 069: BeginScissorMode() (4 input parameters)
Name: BeginScissorMode
Return type: void
Description: Begin scissor mode (define screen area for following drawing)
@@ -1340,61 +1345,61 @@ Function 068: BeginScissorMode() (4 input parameters)
Param[2]: y (type: int)
Param[3]: width (type: int)
Param[4]: height (type: int)
-Function 069: EndScissorMode() (0 input parameters)
+Function 070: EndScissorMode() (0 input parameters)
Name: EndScissorMode
Return type: void
Description: End scissor mode
No input parameters
-Function 070: BeginVrStereoMode() (1 input parameters)
+Function 071: BeginVrStereoMode() (1 input parameters)
Name: BeginVrStereoMode
Return type: void
Description: Begin stereo rendering (requires VR simulator)
Param[1]: config (type: VrStereoConfig)
-Function 071: EndVrStereoMode() (0 input parameters)
+Function 072: EndVrStereoMode() (0 input parameters)
Name: EndVrStereoMode
Return type: void
Description: End stereo rendering (requires VR simulator)
No input parameters
-Function 072: LoadVrStereoConfig() (1 input parameters)
+Function 073: LoadVrStereoConfig() (1 input parameters)
Name: LoadVrStereoConfig
Return type: VrStereoConfig
Description: Load VR stereo config for VR simulator device parameters
Param[1]: device (type: VrDeviceInfo)
-Function 073: UnloadVrStereoConfig() (1 input parameters)
+Function 074: UnloadVrStereoConfig() (1 input parameters)
Name: UnloadVrStereoConfig
Return type: void
Description: Unload VR stereo config
Param[1]: config (type: VrStereoConfig)
-Function 074: LoadShader() (2 input parameters)
+Function 075: LoadShader() (2 input parameters)
Name: LoadShader
Return type: Shader
Description: Load shader from files and bind default locations
Param[1]: vsFileName (type: const char *)
Param[2]: fsFileName (type: const char *)
-Function 075: LoadShaderFromMemory() (2 input parameters)
+Function 076: LoadShaderFromMemory() (2 input parameters)
Name: LoadShaderFromMemory
Return type: Shader
Description: Load shader from code strings and bind default locations
Param[1]: vsCode (type: const char *)
Param[2]: fsCode (type: const char *)
-Function 076: IsShaderValid() (1 input parameters)
+Function 077: IsShaderValid() (1 input parameters)
Name: IsShaderValid
Return type: bool
Description: Check if a shader is valid (loaded on GPU)
Param[1]: shader (type: Shader)
-Function 077: GetShaderLocation() (2 input parameters)
+Function 078: GetShaderLocation() (2 input parameters)
Name: GetShaderLocation
Return type: int
Description: Get shader uniform location
Param[1]: shader (type: Shader)
Param[2]: uniformName (type: const char *)
-Function 078: GetShaderLocationAttrib() (2 input parameters)
+Function 079: GetShaderLocationAttrib() (2 input parameters)
Name: GetShaderLocationAttrib
Return type: int
Description: Get shader attribute location
Param[1]: shader (type: Shader)
Param[2]: attribName (type: const char *)
-Function 079: SetShaderValue() (4 input parameters)
+Function 080: SetShaderValue() (4 input parameters)
Name: SetShaderValue
Return type: void
Description: Set shader uniform value
@@ -1402,7 +1407,7 @@ Function 079: SetShaderValue() (4 input parameters)
Param[2]: locIndex (type: int)
Param[3]: value (type: const void *)
Param[4]: uniformType (type: int)
-Function 080: SetShaderValueV() (5 input parameters)
+Function 081: SetShaderValueV() (5 input parameters)
Name: SetShaderValueV
Return type: void
Description: Set shader uniform value vector
@@ -1411,32 +1416,32 @@ Function 080: SetShaderValueV() (5 input parameters)
Param[3]: value (type: const void *)
Param[4]: uniformType (type: int)
Param[5]: count (type: int)
-Function 081: SetShaderValueMatrix() (3 input parameters)
+Function 082: SetShaderValueMatrix() (3 input parameters)
Name: SetShaderValueMatrix
Return type: void
Description: Set shader uniform value (matrix 4x4)
Param[1]: shader (type: Shader)
Param[2]: locIndex (type: int)
Param[3]: mat (type: Matrix)
-Function 082: SetShaderValueTexture() (3 input parameters)
+Function 083: SetShaderValueTexture() (3 input parameters)
Name: SetShaderValueTexture
Return type: void
Description: Set shader uniform value for texture (sampler2d)
Param[1]: shader (type: Shader)
Param[2]: locIndex (type: int)
Param[3]: texture (type: Texture2D)
-Function 083: UnloadShader() (1 input parameters)
+Function 084: UnloadShader() (1 input parameters)
Name: UnloadShader
Return type: void
Description: Unload shader from GPU memory (VRAM)
Param[1]: shader (type: Shader)
-Function 084: GetScreenToWorldRay() (2 input parameters)
+Function 085: GetScreenToWorldRay() (2 input parameters)
Name: GetScreenToWorldRay
Return type: Ray
Description: Get a ray trace from screen position (i.e mouse)
Param[1]: position (type: Vector2)
Param[2]: camera (type: Camera)
-Function 085: GetScreenToWorldRayEx() (4 input parameters)
+Function 086: GetScreenToWorldRayEx() (4 input parameters)
Name: GetScreenToWorldRayEx
Return type: Ray
Description: Get a ray trace from screen position (i.e mouse) in a viewport
@@ -1444,13 +1449,13 @@ Function 085: GetScreenToWorldRayEx() (4 input parameters)
Param[2]: camera (type: Camera)
Param[3]: width (type: int)
Param[4]: height (type: int)
-Function 086: GetWorldToScreen() (2 input parameters)
+Function 087: GetWorldToScreen() (2 input parameters)
Name: GetWorldToScreen
Return type: Vector2
Description: Get the screen space position for a 3d world space position
Param[1]: position (type: Vector3)
Param[2]: camera (type: Camera)
-Function 087: GetWorldToScreenEx() (4 input parameters)
+Function 088: GetWorldToScreenEx() (4 input parameters)
Name: GetWorldToScreenEx
Return type: Vector2
Description: Get size position for a 3d world space position
@@ -1458,490 +1463,490 @@ Function 087: GetWorldToScreenEx() (4 input parameters)
Param[2]: camera (type: Camera)
Param[3]: width (type: int)
Param[4]: height (type: int)
-Function 088: GetWorldToScreen2D() (2 input parameters)
+Function 089: GetWorldToScreen2D() (2 input parameters)
Name: GetWorldToScreen2D
Return type: Vector2
Description: Get the screen space position for a 2d camera world space position
Param[1]: position (type: Vector2)
Param[2]: camera (type: Camera2D)
-Function 089: GetScreenToWorld2D() (2 input parameters)
+Function 090: GetScreenToWorld2D() (2 input parameters)
Name: GetScreenToWorld2D
Return type: Vector2
Description: Get the world space position for a 2d camera screen space position
Param[1]: position (type: Vector2)
Param[2]: camera (type: Camera2D)
-Function 090: GetCameraMatrix() (1 input parameters)
+Function 091: GetCameraMatrix() (1 input parameters)
Name: GetCameraMatrix
Return type: Matrix
Description: Get camera transform matrix (view matrix)
Param[1]: camera (type: Camera)
-Function 091: GetCameraMatrix2D() (1 input parameters)
+Function 092: GetCameraMatrix2D() (1 input parameters)
Name: GetCameraMatrix2D
Return type: Matrix
Description: Get camera 2d transform matrix
Param[1]: camera (type: Camera2D)
-Function 092: SetTargetFPS() (1 input parameters)
+Function 093: SetTargetFPS() (1 input parameters)
Name: SetTargetFPS
Return type: void
Description: Set target FPS (maximum)
Param[1]: fps (type: int)
-Function 093: GetFrameTime() (0 input parameters)
+Function 094: GetFrameTime() (0 input parameters)
Name: GetFrameTime
Return type: float
Description: Get time in seconds for last frame drawn (delta time)
No input parameters
-Function 094: GetTime() (0 input parameters)
+Function 095: GetTime() (0 input parameters)
Name: GetTime
Return type: double
Description: Get elapsed time in seconds since InitWindow()
No input parameters
-Function 095: GetFPS() (0 input parameters)
+Function 096: GetFPS() (0 input parameters)
Name: GetFPS
Return type: int
Description: Get current FPS
No input parameters
-Function 096: SwapScreenBuffer() (0 input parameters)
+Function 097: SwapScreenBuffer() (0 input parameters)
Name: SwapScreenBuffer
Return type: void
Description: Swap back buffer with front buffer (screen drawing)
No input parameters
-Function 097: PollInputEvents() (0 input parameters)
+Function 098: PollInputEvents() (0 input parameters)
Name: PollInputEvents
Return type: void
Description: Register all input events
No input parameters
-Function 098: WaitTime() (1 input parameters)
+Function 099: WaitTime() (1 input parameters)
Name: WaitTime
Return type: void
Description: Wait for some time (halt program execution)
Param[1]: seconds (type: double)
-Function 099: SetRandomSeed() (1 input parameters)
+Function 100: SetRandomSeed() (1 input parameters)
Name: SetRandomSeed
Return type: void
Description: Set the seed for the random number generator
Param[1]: seed (type: unsigned int)
-Function 100: GetRandomValue() (2 input parameters)
+Function 101: GetRandomValue() (2 input parameters)
Name: GetRandomValue
Return type: int
Description: Get a random value between min and max (both included)
Param[1]: min (type: int)
Param[2]: max (type: int)
-Function 101: LoadRandomSequence() (3 input parameters)
+Function 102: LoadRandomSequence() (3 input parameters)
Name: LoadRandomSequence
Return type: int *
Description: Load random values sequence, no values repeated
Param[1]: count (type: unsigned int)
Param[2]: min (type: int)
Param[3]: max (type: int)
-Function 102: UnloadRandomSequence() (1 input parameters)
+Function 103: UnloadRandomSequence() (1 input parameters)
Name: UnloadRandomSequence
Return type: void
Description: Unload random values sequence
Param[1]: sequence (type: int *)
-Function 103: TakeScreenshot() (1 input parameters)
+Function 104: TakeScreenshot() (1 input parameters)
Name: TakeScreenshot
Return type: void
Description: Takes a screenshot of current screen (filename extension defines format)
Param[1]: fileName (type: const char *)
-Function 104: SetConfigFlags() (1 input parameters)
+Function 105: SetConfigFlags() (1 input parameters)
Name: SetConfigFlags
Return type: void
Description: Setup init configuration flags (view FLAGS)
Param[1]: flags (type: unsigned int)
-Function 105: OpenURL() (1 input parameters)
+Function 106: OpenURL() (1 input parameters)
Name: OpenURL
Return type: void
Description: Open URL with default system browser (if available)
Param[1]: url (type: const char *)
-Function 106: TraceLog() (3 input parameters)
+Function 107: TraceLog() (3 input parameters)
Name: TraceLog
Return type: void
Description: Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
Param[1]: logLevel (type: int)
Param[2]: text (type: const char *)
Param[3]: args (type: ...)
-Function 107: SetTraceLogLevel() (1 input parameters)
+Function 108: SetTraceLogLevel() (1 input parameters)
Name: SetTraceLogLevel
Return type: void
Description: Set the current threshold (minimum) log level
Param[1]: logLevel (type: int)
-Function 108: MemAlloc() (1 input parameters)
+Function 109: MemAlloc() (1 input parameters)
Name: MemAlloc
Return type: void *
Description: Internal memory allocator
Param[1]: size (type: unsigned int)
-Function 109: MemRealloc() (2 input parameters)
+Function 110: MemRealloc() (2 input parameters)
Name: MemRealloc
Return type: void *
Description: Internal memory reallocator
Param[1]: ptr (type: void *)
Param[2]: size (type: unsigned int)
-Function 110: MemFree() (1 input parameters)
+Function 111: MemFree() (1 input parameters)
Name: MemFree
Return type: void
Description: Internal memory free
Param[1]: ptr (type: void *)
-Function 111: SetTraceLogCallback() (1 input parameters)
+Function 112: SetTraceLogCallback() (1 input parameters)
Name: SetTraceLogCallback
Return type: void
Description: Set custom trace log
Param[1]: callback (type: TraceLogCallback)
-Function 112: SetLoadFileDataCallback() (1 input parameters)
+Function 113: SetLoadFileDataCallback() (1 input parameters)
Name: SetLoadFileDataCallback
Return type: void
Description: Set custom file binary data loader
Param[1]: callback (type: LoadFileDataCallback)
-Function 113: SetSaveFileDataCallback() (1 input parameters)
+Function 114: SetSaveFileDataCallback() (1 input parameters)
Name: SetSaveFileDataCallback
Return type: void
Description: Set custom file binary data saver
Param[1]: callback (type: SaveFileDataCallback)
-Function 114: SetLoadFileTextCallback() (1 input parameters)
+Function 115: SetLoadFileTextCallback() (1 input parameters)
Name: SetLoadFileTextCallback
Return type: void
Description: Set custom file text data loader
Param[1]: callback (type: LoadFileTextCallback)
-Function 115: SetSaveFileTextCallback() (1 input parameters)
+Function 116: SetSaveFileTextCallback() (1 input parameters)
Name: SetSaveFileTextCallback
Return type: void
Description: Set custom file text data saver
Param[1]: callback (type: SaveFileTextCallback)
-Function 116: LoadFileData() (2 input parameters)
+Function 117: LoadFileData() (2 input parameters)
Name: LoadFileData
Return type: unsigned char *
Description: Load file data as byte array (read)
Param[1]: fileName (type: const char *)
Param[2]: dataSize (type: int *)
-Function 117: UnloadFileData() (1 input parameters)
+Function 118: UnloadFileData() (1 input parameters)
Name: UnloadFileData
Return type: void
Description: Unload file data allocated by LoadFileData()
Param[1]: data (type: unsigned char *)
-Function 118: SaveFileData() (3 input parameters)
+Function 119: SaveFileData() (3 input parameters)
Name: SaveFileData
Return type: bool
Description: Save data to file from byte array (write), returns true on success
Param[1]: fileName (type: const char *)
Param[2]: data (type: void *)
Param[3]: dataSize (type: int)
-Function 119: ExportDataAsCode() (3 input parameters)
+Function 120: ExportDataAsCode() (3 input parameters)
Name: ExportDataAsCode
Return type: bool
Description: Export data to code (.h), returns true on success
Param[1]: data (type: const unsigned char *)
Param[2]: dataSize (type: int)
Param[3]: fileName (type: const char *)
-Function 120: LoadFileText() (1 input parameters)
+Function 121: LoadFileText() (1 input parameters)
Name: LoadFileText
Return type: char *
Description: Load text data from file (read), returns a '\0' terminated string
Param[1]: fileName (type: const char *)
-Function 121: UnloadFileText() (1 input parameters)
+Function 122: UnloadFileText() (1 input parameters)
Name: UnloadFileText
Return type: void
Description: Unload file text data allocated by LoadFileText()
Param[1]: text (type: char *)
-Function 122: SaveFileText() (2 input parameters)
+Function 123: SaveFileText() (2 input parameters)
Name: SaveFileText
Return type: bool
Description: Save text data to file (write), string must be '\0' terminated, returns true on success
Param[1]: fileName (type: const char *)
Param[2]: text (type: char *)
-Function 123: FileExists() (1 input parameters)
+Function 124: FileExists() (1 input parameters)
Name: FileExists
Return type: bool
Description: Check if file exists
Param[1]: fileName (type: const char *)
-Function 124: DirectoryExists() (1 input parameters)
+Function 125: DirectoryExists() (1 input parameters)
Name: DirectoryExists
Return type: bool
Description: Check if a directory path exists
Param[1]: dirPath (type: const char *)
-Function 125: IsFileExtension() (2 input parameters)
+Function 126: IsFileExtension() (2 input parameters)
Name: IsFileExtension
Return type: bool
Description: Check file extension (including point: .png, .wav)
Param[1]: fileName (type: const char *)
Param[2]: ext (type: const char *)
-Function 126: GetFileLength() (1 input parameters)
+Function 127: GetFileLength() (1 input parameters)
Name: GetFileLength
Return type: int
Description: Get file length in bytes (NOTE: GetFileSize() conflicts with windows.h)
Param[1]: fileName (type: const char *)
-Function 127: GetFileExtension() (1 input parameters)
+Function 128: GetFileExtension() (1 input parameters)
Name: GetFileExtension
Return type: const char *
Description: Get pointer to extension for a filename string (includes dot: '.png')
Param[1]: fileName (type: const char *)
-Function 128: GetFileName() (1 input parameters)
+Function 129: GetFileName() (1 input parameters)
Name: GetFileName
Return type: const char *
Description: Get pointer to filename for a path string
Param[1]: filePath (type: const char *)
-Function 129: GetFileNameWithoutExt() (1 input parameters)
+Function 130: GetFileNameWithoutExt() (1 input parameters)
Name: GetFileNameWithoutExt
Return type: const char *
Description: Get filename string without extension (uses static string)
Param[1]: filePath (type: const char *)
-Function 130: GetDirectoryPath() (1 input parameters)
+Function 131: GetDirectoryPath() (1 input parameters)
Name: GetDirectoryPath
Return type: const char *
Description: Get full path for a given fileName with path (uses static string)
Param[1]: filePath (type: const char *)
-Function 131: GetPrevDirectoryPath() (1 input parameters)
+Function 132: GetPrevDirectoryPath() (1 input parameters)
Name: GetPrevDirectoryPath
Return type: const char *
Description: Get previous directory path for a given path (uses static string)
Param[1]: dirPath (type: const char *)
-Function 132: GetWorkingDirectory() (0 input parameters)
+Function 133: GetWorkingDirectory() (0 input parameters)
Name: GetWorkingDirectory
Return type: const char *
Description: Get current working directory (uses static string)
No input parameters
-Function 133: GetApplicationDirectory() (0 input parameters)
+Function 134: GetApplicationDirectory() (0 input parameters)
Name: GetApplicationDirectory
Return type: const char *
Description: Get the directory of the running application (uses static string)
No input parameters
-Function 134: MakeDirectory() (1 input parameters)
+Function 135: MakeDirectory() (1 input parameters)
Name: MakeDirectory
Return type: int
Description: Create directories (including full path requested), returns 0 on success
Param[1]: dirPath (type: const char *)
-Function 135: ChangeDirectory() (1 input parameters)
+Function 136: ChangeDirectory() (1 input parameters)
Name: ChangeDirectory
Return type: bool
Description: Change working directory, return true on success
Param[1]: dir (type: const char *)
-Function 136: IsPathFile() (1 input parameters)
+Function 137: IsPathFile() (1 input parameters)
Name: IsPathFile
Return type: bool
Description: Check if a given path is a file or a directory
Param[1]: path (type: const char *)
-Function 137: IsFileNameValid() (1 input parameters)
+Function 138: IsFileNameValid() (1 input parameters)
Name: IsFileNameValid
Return type: bool
Description: Check if fileName is valid for the platform/OS
Param[1]: fileName (type: const char *)
-Function 138: LoadDirectoryFiles() (1 input parameters)
+Function 139: LoadDirectoryFiles() (1 input parameters)
Name: LoadDirectoryFiles
Return type: FilePathList
Description: Load directory filepaths
Param[1]: dirPath (type: const char *)
-Function 139: LoadDirectoryFilesEx() (3 input parameters)
+Function 140: LoadDirectoryFilesEx() (3 input parameters)
Name: LoadDirectoryFilesEx
Return type: FilePathList
Description: Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result
Param[1]: basePath (type: const char *)
Param[2]: filter (type: const char *)
Param[3]: scanSubdirs (type: bool)
-Function 140: UnloadDirectoryFiles() (1 input parameters)
+Function 141: UnloadDirectoryFiles() (1 input parameters)
Name: UnloadDirectoryFiles
Return type: void
Description: Unload filepaths
Param[1]: files (type: FilePathList)
-Function 141: IsFileDropped() (0 input parameters)
+Function 142: IsFileDropped() (0 input parameters)
Name: IsFileDropped
Return type: bool
Description: Check if a file has been dropped into window
No input parameters
-Function 142: LoadDroppedFiles() (0 input parameters)
+Function 143: LoadDroppedFiles() (0 input parameters)
Name: LoadDroppedFiles
Return type: FilePathList
Description: Load dropped filepaths
No input parameters
-Function 143: UnloadDroppedFiles() (1 input parameters)
+Function 144: UnloadDroppedFiles() (1 input parameters)
Name: UnloadDroppedFiles
Return type: void
Description: Unload dropped filepaths
Param[1]: files (type: FilePathList)
-Function 144: GetFileModTime() (1 input parameters)
+Function 145: GetFileModTime() (1 input parameters)
Name: GetFileModTime
Return type: long
Description: Get file modification time (last write time)
Param[1]: fileName (type: const char *)
-Function 145: CompressData() (3 input parameters)
+Function 146: CompressData() (3 input parameters)
Name: CompressData
Return type: unsigned char *
Description: Compress data (DEFLATE algorithm), memory must be MemFree()
Param[1]: data (type: const unsigned char *)
Param[2]: dataSize (type: int)
Param[3]: compDataSize (type: int *)
-Function 146: DecompressData() (3 input parameters)
+Function 147: DecompressData() (3 input parameters)
Name: DecompressData
Return type: unsigned char *
Description: Decompress data (DEFLATE algorithm), memory must be MemFree()
Param[1]: compData (type: const unsigned char *)
Param[2]: compDataSize (type: int)
Param[3]: dataSize (type: int *)
-Function 147: EncodeDataBase64() (3 input parameters)
+Function 148: EncodeDataBase64() (3 input parameters)
Name: EncodeDataBase64
Return type: char *
Description: Encode data to Base64 string, memory must be MemFree()
Param[1]: data (type: const unsigned char *)
Param[2]: dataSize (type: int)
Param[3]: outputSize (type: int *)
-Function 148: DecodeDataBase64() (2 input parameters)
+Function 149: DecodeDataBase64() (2 input parameters)
Name: DecodeDataBase64
Return type: unsigned char *
Description: Decode Base64 string data, memory must be MemFree()
Param[1]: data (type: const unsigned char *)
Param[2]: outputSize (type: int *)
-Function 149: ComputeCRC32() (2 input parameters)
+Function 150: ComputeCRC32() (2 input parameters)
Name: ComputeCRC32
Return type: unsigned int
Description: Compute CRC32 hash code
Param[1]: data (type: unsigned char *)
Param[2]: dataSize (type: int)
-Function 150: ComputeMD5() (2 input parameters)
+Function 151: ComputeMD5() (2 input parameters)
Name: ComputeMD5
Return type: unsigned int *
Description: Compute MD5 hash code, returns static int[4] (16 bytes)
Param[1]: data (type: unsigned char *)
Param[2]: dataSize (type: int)
-Function 151: ComputeSHA1() (2 input parameters)
+Function 152: ComputeSHA1() (2 input parameters)
Name: ComputeSHA1
Return type: unsigned int *
Description: Compute SHA1 hash code, returns static int[5] (20 bytes)
Param[1]: data (type: unsigned char *)
Param[2]: dataSize (type: int)
-Function 152: LoadAutomationEventList() (1 input parameters)
+Function 153: LoadAutomationEventList() (1 input parameters)
Name: LoadAutomationEventList
Return type: AutomationEventList
Description: Load automation events list from file, NULL for empty list, capacity = MAX_AUTOMATION_EVENTS
Param[1]: fileName (type: const char *)
-Function 153: UnloadAutomationEventList() (1 input parameters)
+Function 154: UnloadAutomationEventList() (1 input parameters)
Name: UnloadAutomationEventList
Return type: void
Description: Unload automation events list from file
Param[1]: list (type: AutomationEventList)
-Function 154: ExportAutomationEventList() (2 input parameters)
+Function 155: ExportAutomationEventList() (2 input parameters)
Name: ExportAutomationEventList
Return type: bool
Description: Export automation events list as text file
Param[1]: list (type: AutomationEventList)
Param[2]: fileName (type: const char *)
-Function 155: SetAutomationEventList() (1 input parameters)
+Function 156: SetAutomationEventList() (1 input parameters)
Name: SetAutomationEventList
Return type: void
Description: Set automation event list to record to
Param[1]: list (type: AutomationEventList *)
-Function 156: SetAutomationEventBaseFrame() (1 input parameters)
+Function 157: SetAutomationEventBaseFrame() (1 input parameters)
Name: SetAutomationEventBaseFrame
Return type: void
Description: Set automation event internal base frame to start recording
Param[1]: frame (type: int)
-Function 157: StartAutomationEventRecording() (0 input parameters)
+Function 158: StartAutomationEventRecording() (0 input parameters)
Name: StartAutomationEventRecording
Return type: void
Description: Start recording automation events (AutomationEventList must be set)
No input parameters
-Function 158: StopAutomationEventRecording() (0 input parameters)
+Function 159: StopAutomationEventRecording() (0 input parameters)
Name: StopAutomationEventRecording
Return type: void
Description: Stop recording automation events
No input parameters
-Function 159: PlayAutomationEvent() (1 input parameters)
+Function 160: PlayAutomationEvent() (1 input parameters)
Name: PlayAutomationEvent
Return type: void
Description: Play a recorded automation event
Param[1]: event (type: AutomationEvent)
-Function 160: IsKeyPressed() (1 input parameters)
+Function 161: IsKeyPressed() (1 input parameters)
Name: IsKeyPressed
Return type: bool
Description: Check if a key has been pressed once
Param[1]: key (type: int)
-Function 161: IsKeyPressedRepeat() (1 input parameters)
+Function 162: IsKeyPressedRepeat() (1 input parameters)
Name: IsKeyPressedRepeat
Return type: bool
Description: Check if a key has been pressed again
Param[1]: key (type: int)
-Function 162: IsKeyDown() (1 input parameters)
+Function 163: IsKeyDown() (1 input parameters)
Name: IsKeyDown
Return type: bool
Description: Check if a key is being pressed
Param[1]: key (type: int)
-Function 163: IsKeyReleased() (1 input parameters)
+Function 164: IsKeyReleased() (1 input parameters)
Name: IsKeyReleased
Return type: bool
Description: Check if a key has been released once
Param[1]: key (type: int)
-Function 164: IsKeyUp() (1 input parameters)
+Function 165: IsKeyUp() (1 input parameters)
Name: IsKeyUp
Return type: bool
Description: Check if a key is NOT being pressed
Param[1]: key (type: int)
-Function 165: GetKeyPressed() (0 input parameters)
+Function 166: GetKeyPressed() (0 input parameters)
Name: GetKeyPressed
Return type: int
Description: Get key pressed (keycode), call it multiple times for keys queued, returns 0 when the queue is empty
No input parameters
-Function 166: GetCharPressed() (0 input parameters)
+Function 167: GetCharPressed() (0 input parameters)
Name: GetCharPressed
Return type: int
Description: Get char pressed (unicode), call it multiple times for chars queued, returns 0 when the queue is empty
No input parameters
-Function 167: SetExitKey() (1 input parameters)
+Function 168: SetExitKey() (1 input parameters)
Name: SetExitKey
Return type: void
Description: Set a custom key to exit program (default is ESC)
Param[1]: key (type: int)
-Function 168: IsGamepadAvailable() (1 input parameters)
+Function 169: IsGamepadAvailable() (1 input parameters)
Name: IsGamepadAvailable
Return type: bool
Description: Check if a gamepad is available
Param[1]: gamepad (type: int)
-Function 169: GetGamepadName() (1 input parameters)
+Function 170: GetGamepadName() (1 input parameters)
Name: GetGamepadName
Return type: const char *
Description: Get gamepad internal name id
Param[1]: gamepad (type: int)
-Function 170: IsGamepadButtonPressed() (2 input parameters)
+Function 171: IsGamepadButtonPressed() (2 input parameters)
Name: IsGamepadButtonPressed
Return type: bool
Description: Check if a gamepad button has been pressed once
Param[1]: gamepad (type: int)
Param[2]: button (type: int)
-Function 171: IsGamepadButtonDown() (2 input parameters)
+Function 172: IsGamepadButtonDown() (2 input parameters)
Name: IsGamepadButtonDown
Return type: bool
Description: Check if a gamepad button is being pressed
Param[1]: gamepad (type: int)
Param[2]: button (type: int)
-Function 172: IsGamepadButtonReleased() (2 input parameters)
+Function 173: IsGamepadButtonReleased() (2 input parameters)
Name: IsGamepadButtonReleased
Return type: bool
Description: Check if a gamepad button has been released once
Param[1]: gamepad (type: int)
Param[2]: button (type: int)
-Function 173: IsGamepadButtonUp() (2 input parameters)
+Function 174: IsGamepadButtonUp() (2 input parameters)
Name: IsGamepadButtonUp
Return type: bool
Description: Check if a gamepad button is NOT being pressed
Param[1]: gamepad (type: int)
Param[2]: button (type: int)
-Function 174: GetGamepadButtonPressed() (0 input parameters)
+Function 175: GetGamepadButtonPressed() (0 input parameters)
Name: GetGamepadButtonPressed
Return type: int
Description: Get the last gamepad button pressed
No input parameters
-Function 175: GetGamepadAxisCount() (1 input parameters)
+Function 176: GetGamepadAxisCount() (1 input parameters)
Name: GetGamepadAxisCount
Return type: int
Description: Get gamepad axis count for a gamepad
Param[1]: gamepad (type: int)
-Function 176: GetGamepadAxisMovement() (2 input parameters)
+Function 177: GetGamepadAxisMovement() (2 input parameters)
Name: GetGamepadAxisMovement
Return type: float
Description: Get axis movement value for a gamepad axis
Param[1]: gamepad (type: int)
Param[2]: axis (type: int)
-Function 177: SetGamepadMappings() (1 input parameters)
+Function 178: SetGamepadMappings() (1 input parameters)
Name: SetGamepadMappings
Return type: int
Description: Set internal gamepad mappings (SDL_GameControllerDB)
Param[1]: mappings (type: const char *)
-Function 178: SetGamepadVibration() (4 input parameters)
+Function 179: SetGamepadVibration() (4 input parameters)
Name: SetGamepadVibration
Return type: void
Description: Set gamepad vibration for both motors (duration in seconds)
@@ -1949,151 +1954,151 @@ Function 178: SetGamepadVibration() (4 input parameters)
Param[2]: leftMotor (type: float)
Param[3]: rightMotor (type: float)
Param[4]: duration (type: float)
-Function 179: IsMouseButtonPressed() (1 input parameters)
+Function 180: IsMouseButtonPressed() (1 input parameters)
Name: IsMouseButtonPressed
Return type: bool
Description: Check if a mouse button has been pressed once
Param[1]: button (type: int)
-Function 180: IsMouseButtonDown() (1 input parameters)
+Function 181: IsMouseButtonDown() (1 input parameters)
Name: IsMouseButtonDown
Return type: bool
Description: Check if a mouse button is being pressed
Param[1]: button (type: int)
-Function 181: IsMouseButtonReleased() (1 input parameters)
+Function 182: IsMouseButtonReleased() (1 input parameters)
Name: IsMouseButtonReleased
Return type: bool
Description: Check if a mouse button has been released once
Param[1]: button (type: int)
-Function 182: IsMouseButtonUp() (1 input parameters)
+Function 183: IsMouseButtonUp() (1 input parameters)
Name: IsMouseButtonUp
Return type: bool
Description: Check if a mouse button is NOT being pressed
Param[1]: button (type: int)
-Function 183: GetMouseX() (0 input parameters)
+Function 184: GetMouseX() (0 input parameters)
Name: GetMouseX
Return type: int
Description: Get mouse position X
No input parameters
-Function 184: GetMouseY() (0 input parameters)
+Function 185: GetMouseY() (0 input parameters)
Name: GetMouseY
Return type: int
Description: Get mouse position Y
No input parameters
-Function 185: GetMousePosition() (0 input parameters)
+Function 186: GetMousePosition() (0 input parameters)
Name: GetMousePosition
Return type: Vector2
Description: Get mouse position XY
No input parameters
-Function 186: GetMouseDelta() (0 input parameters)
+Function 187: GetMouseDelta() (0 input parameters)
Name: GetMouseDelta
Return type: Vector2
Description: Get mouse delta between frames
No input parameters
-Function 187: SetMousePosition() (2 input parameters)
+Function 188: SetMousePosition() (2 input parameters)
Name: SetMousePosition
Return type: void
Description: Set mouse position XY
Param[1]: x (type: int)
Param[2]: y (type: int)
-Function 188: SetMouseOffset() (2 input parameters)
+Function 189: SetMouseOffset() (2 input parameters)
Name: SetMouseOffset
Return type: void
Description: Set mouse offset
Param[1]: offsetX (type: int)
Param[2]: offsetY (type: int)
-Function 189: SetMouseScale() (2 input parameters)
+Function 190: SetMouseScale() (2 input parameters)
Name: SetMouseScale
Return type: void
Description: Set mouse scaling
Param[1]: scaleX (type: float)
Param[2]: scaleY (type: float)
-Function 190: GetMouseWheelMove() (0 input parameters)
+Function 191: GetMouseWheelMove() (0 input parameters)
Name: GetMouseWheelMove
Return type: float
Description: Get mouse wheel movement for X or Y, whichever is larger
No input parameters
-Function 191: GetMouseWheelMoveV() (0 input parameters)
+Function 192: GetMouseWheelMoveV() (0 input parameters)
Name: GetMouseWheelMoveV
Return type: Vector2
Description: Get mouse wheel movement for both X and Y
No input parameters
-Function 192: SetMouseCursor() (1 input parameters)
+Function 193: SetMouseCursor() (1 input parameters)
Name: SetMouseCursor
Return type: void
Description: Set mouse cursor
Param[1]: cursor (type: int)
-Function 193: GetTouchX() (0 input parameters)
+Function 194: GetTouchX() (0 input parameters)
Name: GetTouchX
Return type: int
Description: Get touch position X for touch point 0 (relative to screen size)
No input parameters
-Function 194: GetTouchY() (0 input parameters)
+Function 195: GetTouchY() (0 input parameters)
Name: GetTouchY
Return type: int
Description: Get touch position Y for touch point 0 (relative to screen size)
No input parameters
-Function 195: GetTouchPosition() (1 input parameters)
+Function 196: GetTouchPosition() (1 input parameters)
Name: GetTouchPosition
Return type: Vector2
Description: Get touch position XY for a touch point index (relative to screen size)
Param[1]: index (type: int)
-Function 196: GetTouchPointId() (1 input parameters)
+Function 197: GetTouchPointId() (1 input parameters)
Name: GetTouchPointId
Return type: int
Description: Get touch point identifier for given index
Param[1]: index (type: int)
-Function 197: GetTouchPointCount() (0 input parameters)
+Function 198: GetTouchPointCount() (0 input parameters)
Name: GetTouchPointCount
Return type: int
Description: Get number of touch points
No input parameters
-Function 198: SetGesturesEnabled() (1 input parameters)
+Function 199: SetGesturesEnabled() (1 input parameters)
Name: SetGesturesEnabled
Return type: void
Description: Enable a set of gestures using flags
Param[1]: flags (type: unsigned int)
-Function 199: IsGestureDetected() (1 input parameters)
+Function 200: IsGestureDetected() (1 input parameters)
Name: IsGestureDetected
Return type: bool
Description: Check if a gesture have been detected
Param[1]: gesture (type: unsigned int)
-Function 200: GetGestureDetected() (0 input parameters)
+Function 201: GetGestureDetected() (0 input parameters)
Name: GetGestureDetected
Return type: int
Description: Get latest detected gesture
No input parameters
-Function 201: GetGestureHoldDuration() (0 input parameters)
+Function 202: GetGestureHoldDuration() (0 input parameters)
Name: GetGestureHoldDuration
Return type: float
Description: Get gesture hold time in seconds
No input parameters
-Function 202: GetGestureDragVector() (0 input parameters)
+Function 203: GetGestureDragVector() (0 input parameters)
Name: GetGestureDragVector
Return type: Vector2
Description: Get gesture drag vector
No input parameters
-Function 203: GetGestureDragAngle() (0 input parameters)
+Function 204: GetGestureDragAngle() (0 input parameters)
Name: GetGestureDragAngle
Return type: float
Description: Get gesture drag angle
No input parameters
-Function 204: GetGesturePinchVector() (0 input parameters)
+Function 205: GetGesturePinchVector() (0 input parameters)
Name: GetGesturePinchVector
Return type: Vector2
Description: Get gesture pinch delta
No input parameters
-Function 205: GetGesturePinchAngle() (0 input parameters)
+Function 206: GetGesturePinchAngle() (0 input parameters)
Name: GetGesturePinchAngle
Return type: float
Description: Get gesture pinch angle
No input parameters
-Function 206: UpdateCamera() (2 input parameters)
+Function 207: UpdateCamera() (2 input parameters)
Name: UpdateCamera
Return type: void
Description: Update camera position for selected mode
Param[1]: camera (type: Camera *)
Param[2]: mode (type: int)
-Function 207: UpdateCameraPro() (4 input parameters)
+Function 208: UpdateCameraPro() (4 input parameters)
Name: UpdateCameraPro
Return type: void
Description: Update camera movement/rotation
@@ -2101,36 +2106,36 @@ Function 207: UpdateCameraPro() (4 input parameters)
Param[2]: movement (type: Vector3)
Param[3]: rotation (type: Vector3)
Param[4]: zoom (type: float)
-Function 208: SetShapesTexture() (2 input parameters)
+Function 209: SetShapesTexture() (2 input parameters)
Name: SetShapesTexture
Return type: void
Description: Set texture and rectangle to be used on shapes drawing
Param[1]: texture (type: Texture2D)
Param[2]: source (type: Rectangle)
-Function 209: GetShapesTexture() (0 input parameters)
+Function 210: GetShapesTexture() (0 input parameters)
Name: GetShapesTexture
Return type: Texture2D
Description: Get texture that is used for shapes drawing
No input parameters
-Function 210: GetShapesTextureRectangle() (0 input parameters)
+Function 211: GetShapesTextureRectangle() (0 input parameters)
Name: GetShapesTextureRectangle
Return type: Rectangle
Description: Get texture source rectangle that is used for shapes drawing
No input parameters
-Function 211: DrawPixel() (3 input parameters)
+Function 212: DrawPixel() (3 input parameters)
Name: DrawPixel
Return type: void
Description: Draw a pixel using geometry [Can be slow, use with care]
Param[1]: posX (type: int)
Param[2]: posY (type: int)
Param[3]: color (type: Color)
-Function 212: DrawPixelV() (2 input parameters)
+Function 213: DrawPixelV() (2 input parameters)
Name: DrawPixelV
Return type: void
Description: Draw a pixel using geometry (Vector version) [Can be slow, use with care]
Param[1]: position (type: Vector2)
Param[2]: color (type: Color)
-Function 213: DrawLine() (5 input parameters)
+Function 214: DrawLine() (5 input parameters)
Name: DrawLine
Return type: void
Description: Draw a line
@@ -2139,14 +2144,14 @@ Function 213: DrawLine() (5 input parameters)
Param[3]: endPosX (type: int)
Param[4]: endPosY (type: int)
Param[5]: color (type: Color)
-Function 214: DrawLineV() (3 input parameters)
+Function 215: DrawLineV() (3 input parameters)
Name: DrawLineV
Return type: void
Description: Draw a line (using gl lines)
Param[1]: startPos (type: Vector2)
Param[2]: endPos (type: Vector2)
Param[3]: color (type: Color)
-Function 215: DrawLineEx() (4 input parameters)
+Function 216: DrawLineEx() (4 input parameters)
Name: DrawLineEx
Return type: void
Description: Draw a line (using triangles/quads)
@@ -2154,14 +2159,14 @@ Function 215: DrawLineEx() (4 input parameters)
Param[2]: endPos (type: Vector2)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 216: DrawLineStrip() (3 input parameters)
+Function 217: DrawLineStrip() (3 input parameters)
Name: DrawLineStrip
Return type: void
Description: Draw lines sequence (using gl lines)
Param[1]: points (type: const Vector2 *)
Param[2]: pointCount (type: int)
Param[3]: color (type: Color)
-Function 217: DrawLineBezier() (4 input parameters)
+Function 218: DrawLineBezier() (4 input parameters)
Name: DrawLineBezier
Return type: void
Description: Draw line segment cubic-bezier in-out interpolation
@@ -2169,7 +2174,7 @@ Function 217: DrawLineBezier() (4 input parameters)
Param[2]: endPos (type: Vector2)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 218: DrawCircle() (4 input parameters)
+Function 219: DrawCircle() (4 input parameters)
Name: DrawCircle
Return type: void
Description: Draw a color-filled circle
@@ -2177,7 +2182,7 @@ Function 218: DrawCircle() (4 input parameters)
Param[2]: centerY (type: int)
Param[3]: radius (type: float)
Param[4]: color (type: Color)
-Function 219: DrawCircleSector() (6 input parameters)
+Function 220: DrawCircleSector() (6 input parameters)
Name: DrawCircleSector
Return type: void
Description: Draw a piece of a circle
@@ -2187,7 +2192,7 @@ Function 219: DrawCircleSector() (6 input parameters)
Param[4]: endAngle (type: float)
Param[5]: segments (type: int)
Param[6]: color (type: Color)
-Function 220: DrawCircleSectorLines() (6 input parameters)
+Function 221: DrawCircleSectorLines() (6 input parameters)
Name: DrawCircleSectorLines
Return type: void
Description: Draw circle sector outline
@@ -2197,7 +2202,7 @@ Function 220: DrawCircleSectorLines() (6 input parameters)
Param[4]: endAngle (type: float)
Param[5]: segments (type: int)
Param[6]: color (type: Color)
-Function 221: DrawCircleGradient() (5 input parameters)
+Function 222: DrawCircleGradient() (5 input parameters)
Name: DrawCircleGradient
Return type: void
Description: Draw a gradient-filled circle
@@ -2206,14 +2211,14 @@ Function 221: DrawCircleGradient() (5 input parameters)
Param[3]: radius (type: float)
Param[4]: inner (type: Color)
Param[5]: outer (type: Color)
-Function 222: DrawCircleV() (3 input parameters)
+Function 223: DrawCircleV() (3 input parameters)
Name: DrawCircleV
Return type: void
Description: Draw a color-filled circle (Vector version)
Param[1]: center (type: Vector2)
Param[2]: radius (type: float)
Param[3]: color (type: Color)
-Function 223: DrawCircleLines() (4 input parameters)
+Function 224: DrawCircleLines() (4 input parameters)
Name: DrawCircleLines
Return type: void
Description: Draw circle outline
@@ -2221,14 +2226,14 @@ Function 223: DrawCircleLines() (4 input parameters)
Param[2]: centerY (type: int)
Param[3]: radius (type: float)
Param[4]: color (type: Color)
-Function 224: DrawCircleLinesV() (3 input parameters)
+Function 225: DrawCircleLinesV() (3 input parameters)
Name: DrawCircleLinesV
Return type: void
Description: Draw circle outline (Vector version)
Param[1]: center (type: Vector2)
Param[2]: radius (type: float)
Param[3]: color (type: Color)
-Function 225: DrawEllipse() (5 input parameters)
+Function 226: DrawEllipse() (5 input parameters)
Name: DrawEllipse
Return type: void
Description: Draw ellipse
@@ -2237,7 +2242,7 @@ Function 225: DrawEllipse() (5 input parameters)
Param[3]: radiusH (type: float)
Param[4]: radiusV (type: float)
Param[5]: color (type: Color)
-Function 226: DrawEllipseLines() (5 input parameters)
+Function 227: DrawEllipseLines() (5 input parameters)
Name: DrawEllipseLines
Return type: void
Description: Draw ellipse outline
@@ -2246,7 +2251,7 @@ Function 226: DrawEllipseLines() (5 input parameters)
Param[3]: radiusH (type: float)
Param[4]: radiusV (type: float)
Param[5]: color (type: Color)
-Function 227: DrawRing() (7 input parameters)
+Function 228: DrawRing() (7 input parameters)
Name: DrawRing
Return type: void
Description: Draw ring
@@ -2257,7 +2262,7 @@ Function 227: DrawRing() (7 input parameters)
Param[5]: endAngle (type: float)
Param[6]: segments (type: int)
Param[7]: color (type: Color)
-Function 228: DrawRingLines() (7 input parameters)
+Function 229: DrawRingLines() (7 input parameters)
Name: DrawRingLines
Return type: void
Description: Draw ring outline
@@ -2268,7 +2273,7 @@ Function 228: DrawRingLines() (7 input parameters)
Param[5]: endAngle (type: float)
Param[6]: segments (type: int)
Param[7]: color (type: Color)
-Function 229: DrawRectangle() (5 input parameters)
+Function 230: DrawRectangle() (5 input parameters)
Name: DrawRectangle
Return type: void
Description: Draw a color-filled rectangle
@@ -2277,20 +2282,20 @@ Function 229: DrawRectangle() (5 input parameters)
Param[3]: width (type: int)
Param[4]: height (type: int)
Param[5]: color (type: Color)
-Function 230: DrawRectangleV() (3 input parameters)
+Function 231: DrawRectangleV() (3 input parameters)
Name: DrawRectangleV
Return type: void
Description: Draw a color-filled rectangle (Vector version)
Param[1]: position (type: Vector2)
Param[2]: size (type: Vector2)
Param[3]: color (type: Color)
-Function 231: DrawRectangleRec() (2 input parameters)
+Function 232: DrawRectangleRec() (2 input parameters)
Name: DrawRectangleRec
Return type: void
Description: Draw a color-filled rectangle
Param[1]: rec (type: Rectangle)
Param[2]: color (type: Color)
-Function 232: DrawRectanglePro() (4 input parameters)
+Function 233: DrawRectanglePro() (4 input parameters)
Name: DrawRectanglePro
Return type: void
Description: Draw a color-filled rectangle with pro parameters
@@ -2298,7 +2303,7 @@ Function 232: DrawRectanglePro() (4 input parameters)
Param[2]: origin (type: Vector2)
Param[3]: rotation (type: float)
Param[4]: color (type: Color)
-Function 233: DrawRectangleGradientV() (6 input parameters)
+Function 234: DrawRectangleGradientV() (6 input parameters)
Name: DrawRectangleGradientV
Return type: void
Description: Draw a vertical-gradient-filled rectangle
@@ -2308,7 +2313,7 @@ Function 233: DrawRectangleGradientV() (6 input parameters)
Param[4]: height (type: int)
Param[5]: top (type: Color)
Param[6]: bottom (type: Color)
-Function 234: DrawRectangleGradientH() (6 input parameters)
+Function 235: DrawRectangleGradientH() (6 input parameters)
Name: DrawRectangleGradientH
Return type: void
Description: Draw a horizontal-gradient-filled rectangle
@@ -2318,7 +2323,7 @@ Function 234: DrawRectangleGradientH() (6 input parameters)
Param[4]: height (type: int)
Param[5]: left (type: Color)
Param[6]: right (type: Color)
-Function 235: DrawRectangleGradientEx() (5 input parameters)
+Function 236: DrawRectangleGradientEx() (5 input parameters)
Name: DrawRectangleGradientEx
Return type: void
Description: Draw a gradient-filled rectangle with custom vertex colors
@@ -2327,7 +2332,7 @@ Function 235: DrawRectangleGradientEx() (5 input parameters)
Param[3]: bottomLeft (type: Color)
Param[4]: topRight (type: Color)
Param[5]: bottomRight (type: Color)
-Function 236: DrawRectangleLines() (5 input parameters)
+Function 237: DrawRectangleLines() (5 input parameters)
Name: DrawRectangleLines
Return type: void
Description: Draw rectangle outline
@@ -2336,14 +2341,14 @@ Function 236: DrawRectangleLines() (5 input parameters)
Param[3]: width (type: int)
Param[4]: height (type: int)
Param[5]: color (type: Color)
-Function 237: DrawRectangleLinesEx() (3 input parameters)
+Function 238: DrawRectangleLinesEx() (3 input parameters)
Name: DrawRectangleLinesEx
Return type: void
Description: Draw rectangle outline with extended parameters
Param[1]: rec (type: Rectangle)
Param[2]: lineThick (type: float)
Param[3]: color (type: Color)
-Function 238: DrawRectangleRounded() (4 input parameters)
+Function 239: DrawRectangleRounded() (4 input parameters)
Name: DrawRectangleRounded
Return type: void
Description: Draw rectangle with rounded edges
@@ -2351,7 +2356,7 @@ Function 238: DrawRectangleRounded() (4 input parameters)
Param[2]: roundness (type: float)
Param[3]: segments (type: int)
Param[4]: color (type: Color)
-Function 239: DrawRectangleRoundedLines() (4 input parameters)
+Function 240: DrawRectangleRoundedLines() (4 input parameters)
Name: DrawRectangleRoundedLines
Return type: void
Description: Draw rectangle lines with rounded edges
@@ -2359,7 +2364,7 @@ Function 239: DrawRectangleRoundedLines() (4 input parameters)
Param[2]: roundness (type: float)
Param[3]: segments (type: int)
Param[4]: color (type: Color)
-Function 240: DrawRectangleRoundedLinesEx() (5 input parameters)
+Function 241: DrawRectangleRoundedLinesEx() (5 input parameters)
Name: DrawRectangleRoundedLinesEx
Return type: void
Description: Draw rectangle with rounded edges outline
@@ -2368,7 +2373,7 @@ Function 240: DrawRectangleRoundedLinesEx() (5 input parameters)
Param[3]: segments (type: int)
Param[4]: lineThick (type: float)
Param[5]: color (type: Color)
-Function 241: DrawTriangle() (4 input parameters)
+Function 242: DrawTriangle() (4 input parameters)
Name: DrawTriangle
Return type: void
Description: Draw a color-filled triangle (vertex in counter-clockwise order!)
@@ -2376,7 +2381,7 @@ Function 241: DrawTriangle() (4 input parameters)
Param[2]: v2 (type: Vector2)
Param[3]: v3 (type: Vector2)
Param[4]: color (type: Color)
-Function 242: DrawTriangleLines() (4 input parameters)
+Function 243: DrawTriangleLines() (4 input parameters)
Name: DrawTriangleLines
Return type: void
Description: Draw triangle outline (vertex in counter-clockwise order!)
@@ -2384,21 +2389,21 @@ Function 242: DrawTriangleLines() (4 input parameters)
Param[2]: v2 (type: Vector2)
Param[3]: v3 (type: Vector2)
Param[4]: color (type: Color)
-Function 243: DrawTriangleFan() (3 input parameters)
+Function 244: DrawTriangleFan() (3 input parameters)
Name: DrawTriangleFan
Return type: void
Description: Draw a triangle fan defined by points (first vertex is the center)
Param[1]: points (type: const Vector2 *)
Param[2]: pointCount (type: int)
Param[3]: color (type: Color)
-Function 244: DrawTriangleStrip() (3 input parameters)
+Function 245: DrawTriangleStrip() (3 input parameters)
Name: DrawTriangleStrip
Return type: void
Description: Draw a triangle strip defined by points
Param[1]: points (type: const Vector2 *)
Param[2]: pointCount (type: int)
Param[3]: color (type: Color)
-Function 245: DrawPoly() (5 input parameters)
+Function 246: DrawPoly() (5 input parameters)
Name: DrawPoly
Return type: void
Description: Draw a regular polygon (Vector version)
@@ -2407,7 +2412,7 @@ Function 245: DrawPoly() (5 input parameters)
Param[3]: radius (type: float)
Param[4]: rotation (type: float)
Param[5]: color (type: Color)
-Function 246: DrawPolyLines() (5 input parameters)
+Function 247: DrawPolyLines() (5 input parameters)
Name: DrawPolyLines
Return type: void
Description: Draw a polygon outline of n sides
@@ -2416,7 +2421,7 @@ Function 246: DrawPolyLines() (5 input parameters)
Param[3]: radius (type: float)
Param[4]: rotation (type: float)
Param[5]: color (type: Color)
-Function 247: DrawPolyLinesEx() (6 input parameters)
+Function 248: DrawPolyLinesEx() (6 input parameters)
Name: DrawPolyLinesEx
Return type: void
Description: Draw a polygon outline of n sides with extended parameters
@@ -2426,7 +2431,7 @@ Function 247: DrawPolyLinesEx() (6 input parameters)
Param[4]: rotation (type: float)
Param[5]: lineThick (type: float)
Param[6]: color (type: Color)
-Function 248: DrawSplineLinear() (4 input parameters)
+Function 249: DrawSplineLinear() (4 input parameters)
Name: DrawSplineLinear
Return type: void
Description: Draw spline: Linear, minimum 2 points
@@ -2434,7 +2439,7 @@ Function 248: DrawSplineLinear() (4 input parameters)
Param[2]: pointCount (type: int)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 249: DrawSplineBasis() (4 input parameters)
+Function 250: DrawSplineBasis() (4 input parameters)
Name: DrawSplineBasis
Return type: void
Description: Draw spline: B-Spline, minimum 4 points
@@ -2442,7 +2447,7 @@ Function 249: DrawSplineBasis() (4 input parameters)
Param[2]: pointCount (type: int)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 250: DrawSplineCatmullRom() (4 input parameters)
+Function 251: DrawSplineCatmullRom() (4 input parameters)
Name: DrawSplineCatmullRom
Return type: void
Description: Draw spline: Catmull-Rom, minimum 4 points
@@ -2450,7 +2455,7 @@ Function 250: DrawSplineCatmullRom() (4 input parameters)
Param[2]: pointCount (type: int)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 251: DrawSplineBezierQuadratic() (4 input parameters)
+Function 252: DrawSplineBezierQuadratic() (4 input parameters)
Name: DrawSplineBezierQuadratic
Return type: void
Description: Draw spline: Quadratic Bezier, minimum 3 points (1 control point): [p1, c2, p3, c4...]
@@ -2458,7 +2463,7 @@ Function 251: DrawSplineBezierQuadratic() (4 input parameters)
Param[2]: pointCount (type: int)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 252: DrawSplineBezierCubic() (4 input parameters)
+Function 253: DrawSplineBezierCubic() (4 input parameters)
Name: DrawSplineBezierCubic
Return type: void
Description: Draw spline: Cubic Bezier, minimum 4 points (2 control points): [p1, c2, c3, p4, c5, c6...]
@@ -2466,7 +2471,7 @@ Function 252: DrawSplineBezierCubic() (4 input parameters)
Param[2]: pointCount (type: int)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 253: DrawSplineSegmentLinear() (4 input parameters)
+Function 254: DrawSplineSegmentLinear() (4 input parameters)
Name: DrawSplineSegmentLinear
Return type: void
Description: Draw spline segment: Linear, 2 points
@@ -2474,7 +2479,7 @@ Function 253: DrawSplineSegmentLinear() (4 input parameters)
Param[2]: p2 (type: Vector2)
Param[3]: thick (type: float)
Param[4]: color (type: Color)
-Function 254: DrawSplineSegmentBasis() (6 input parameters)
+Function 255: DrawSplineSegmentBasis() (6 input parameters)
Name: DrawSplineSegmentBasis
Return type: void
Description: Draw spline segment: B-Spline, 4 points
@@ -2484,7 +2489,7 @@ Function 254: DrawSplineSegmentBasis() (6 input parameters)
Param[4]: p4 (type: Vector2)
Param[5]: thick (type: float)
Param[6]: color (type: Color)
-Function 255: DrawSplineSegmentCatmullRom() (6 input parameters)
+Function 256: DrawSplineSegmentCatmullRom() (6 input parameters)
Name: DrawSplineSegmentCatmullRom
Return type: void
Description: Draw spline segment: Catmull-Rom, 4 points
@@ -2494,7 +2499,7 @@ Function 255: DrawSplineSegmentCatmullRom() (6 input parameters)
Param[4]: p4 (type: Vector2)
Param[5]: thick (type: float)
Param[6]: color (type: Color)
-Function 256: DrawSplineSegmentBezierQuadratic() (5 input parameters)
+Function 257: DrawSplineSegmentBezierQuadratic() (5 input parameters)
Name: DrawSplineSegmentBezierQuadratic
Return type: void
Description: Draw spline segment: Quadratic Bezier, 2 points, 1 control point
@@ -2503,7 +2508,7 @@ Function 256: DrawSplineSegmentBezierQuadratic() (5 input parameters)
Param[3]: p3 (type: Vector2)
Param[4]: thick (type: float)
Param[5]: color (type: Color)
-Function 257: DrawSplineSegmentBezierCubic() (6 input parameters)
+Function 258: DrawSplineSegmentBezierCubic() (6 input parameters)
Name: DrawSplineSegmentBezierCubic
Return type: void
Description: Draw spline segment: Cubic Bezier, 2 points, 2 control points
@@ -2513,14 +2518,14 @@ Function 257: DrawSplineSegmentBezierCubic() (6 input parameters)
Param[4]: p4 (type: Vector2)
Param[5]: thick (type: float)
Param[6]: color (type: Color)
-Function 258: GetSplinePointLinear() (3 input parameters)
+Function 259: GetSplinePointLinear() (3 input parameters)
Name: GetSplinePointLinear
Return type: Vector2
Description: Get (evaluate) spline point: Linear
Param[1]: startPos (type: Vector2)
Param[2]: endPos (type: Vector2)
Param[3]: t (type: float)
-Function 259: GetSplinePointBasis() (5 input parameters)
+Function 260: GetSplinePointBasis() (5 input parameters)
Name: GetSplinePointBasis
Return type: Vector2
Description: Get (evaluate) spline point: B-Spline
@@ -2529,7 +2534,7 @@ Function 259: GetSplinePointBasis() (5 input parameters)
Param[3]: p3 (type: Vector2)
Param[4]: p4 (type: Vector2)
Param[5]: t (type: float)
-Function 260: GetSplinePointCatmullRom() (5 input parameters)
+Function 261: GetSplinePointCatmullRom() (5 input parameters)
Name: GetSplinePointCatmullRom
Return type: Vector2
Description: Get (evaluate) spline point: Catmull-Rom
@@ -2538,7 +2543,7 @@ Function 260: GetSplinePointCatmullRom() (5 input parameters)
Param[3]: p3 (type: Vector2)
Param[4]: p4 (type: Vector2)
Param[5]: t (type: float)
-Function 261: GetSplinePointBezierQuad() (4 input parameters)
+Function 262: GetSplinePointBezierQuad() (4 input parameters)
Name: GetSplinePointBezierQuad
Return type: Vector2
Description: Get (evaluate) spline point: Quadratic Bezier
@@ -2546,7 +2551,7 @@ Function 261: GetSplinePointBezierQuad() (4 input parameters)
Param[2]: c2 (type: Vector2)
Param[3]: p3 (type: Vector2)
Param[4]: t (type: float)
-Function 262: GetSplinePointBezierCubic() (5 input parameters)
+Function 263: GetSplinePointBezierCubic() (5 input parameters)
Name: GetSplinePointBezierCubic
Return type: Vector2
Description: Get (evaluate) spline point: Cubic Bezier
@@ -2555,13 +2560,13 @@ Function 262: GetSplinePointBezierCubic() (5 input parameters)
Param[3]: c3 (type: Vector2)
Param[4]: p4 (type: Vector2)
Param[5]: t (type: float)
-Function 263: CheckCollisionRecs() (2 input parameters)
+Function 264: CheckCollisionRecs() (2 input parameters)
Name: CheckCollisionRecs
Return type: bool
Description: Check collision between two rectangles
Param[1]: rec1 (type: Rectangle)
Param[2]: rec2 (type: Rectangle)
-Function 264: CheckCollisionCircles() (4 input parameters)
+Function 265: CheckCollisionCircles() (4 input parameters)
Name: CheckCollisionCircles
Return type: bool
Description: Check collision between two circles
@@ -2569,14 +2574,14 @@ Function 264: CheckCollisionCircles() (4 input parameters)
Param[2]: radius1 (type: float)
Param[3]: center2 (type: Vector2)
Param[4]: radius2 (type: float)
-Function 265: CheckCollisionCircleRec() (3 input parameters)
+Function 266: CheckCollisionCircleRec() (3 input parameters)
Name: CheckCollisionCircleRec
Return type: bool
Description: Check collision between circle and rectangle
Param[1]: center (type: Vector2)
Param[2]: radius (type: float)
Param[3]: rec (type: Rectangle)
-Function 266: CheckCollisionCircleLine() (4 input parameters)
+Function 267: CheckCollisionCircleLine() (4 input parameters)
Name: CheckCollisionCircleLine
Return type: bool
Description: Check if circle collides with a line created betweeen two points [p1] and [p2]
@@ -2584,20 +2589,20 @@ Function 266: CheckCollisionCircleLine() (4 input parameters)
Param[2]: radius (type: float)
Param[3]: p1 (type: Vector2)
Param[4]: p2 (type: Vector2)
-Function 267: CheckCollisionPointRec() (2 input parameters)
+Function 268: CheckCollisionPointRec() (2 input parameters)
Name: CheckCollisionPointRec
Return type: bool
Description: Check if point is inside rectangle
Param[1]: point (type: Vector2)
Param[2]: rec (type: Rectangle)
-Function 268: CheckCollisionPointCircle() (3 input parameters)
+Function 269: CheckCollisionPointCircle() (3 input parameters)
Name: CheckCollisionPointCircle
Return type: bool
Description: Check if point is inside circle
Param[1]: point (type: Vector2)
Param[2]: center (type: Vector2)
Param[3]: radius (type: float)
-Function 269: CheckCollisionPointTriangle() (4 input parameters)
+Function 270: CheckCollisionPointTriangle() (4 input parameters)
Name: CheckCollisionPointTriangle
Return type: bool
Description: Check if point is inside a triangle
@@ -2605,7 +2610,7 @@ Function 269: CheckCollisionPointTriangle() (4 input parameters)
Param[2]: p1 (type: Vector2)
Param[3]: p2 (type: Vector2)
Param[4]: p3 (type: Vector2)
-Function 270: CheckCollisionPointLine() (4 input parameters)
+Function 271: CheckCollisionPointLine() (4 input parameters)
Name: CheckCollisionPointLine
Return type: bool
Description: Check if point belongs to line created between two points [p1] and [p2] with defined margin in pixels [threshold]
@@ -2613,14 +2618,14 @@ Function 270: CheckCollisionPointLine() (4 input parameters)
Param[2]: p1 (type: Vector2)
Param[3]: p2 (type: Vector2)
Param[4]: threshold (type: int)
-Function 271: CheckCollisionPointPoly() (3 input parameters)
+Function 272: CheckCollisionPointPoly() (3 input parameters)
Name: CheckCollisionPointPoly
Return type: bool
Description: Check if point is within a polygon described by array of vertices
Param[1]: point (type: Vector2)
Param[2]: points (type: const Vector2 *)
Param[3]: pointCount (type: int)
-Function 272: CheckCollisionLines() (5 input parameters)
+Function 273: CheckCollisionLines() (5 input parameters)
Name: CheckCollisionLines
Return type: bool
Description: Check the collision between two lines defined by two points each, returns collision point by reference
@@ -2629,18 +2634,18 @@ Function 272: CheckCollisionLines() (5 input parameters)
Param[3]: startPos2 (type: Vector2)
Param[4]: endPos2 (type: Vector2)
Param[5]: collisionPoint (type: Vector2 *)
-Function 273: GetCollisionRec() (2 input parameters)
+Function 274: GetCollisionRec() (2 input parameters)
Name: GetCollisionRec
Return type: Rectangle
Description: Get collision rectangle for two rectangles collision
Param[1]: rec1 (type: Rectangle)
Param[2]: rec2 (type: Rectangle)
-Function 274: LoadImage() (1 input parameters)
+Function 275: LoadImage() (1 input parameters)
Name: LoadImage
Return type: Image
Description: Load image from file into CPU memory (RAM)
Param[1]: fileName (type: const char *)
-Function 275: LoadImageRaw() (5 input parameters)
+Function 276: LoadImageRaw() (5 input parameters)
Name: LoadImageRaw
Return type: Image
Description: Load image from RAW file data
@@ -2649,13 +2654,13 @@ Function 275: LoadImageRaw() (5 input parameters)
Param[3]: height (type: int)
Param[4]: format (type: int)
Param[5]: headerSize (type: int)
-Function 276: LoadImageAnim() (2 input parameters)
+Function 277: LoadImageAnim() (2 input parameters)
Name: LoadImageAnim
Return type: Image
Description: Load image sequence from file (frames appended to image.data)
Param[1]: fileName (type: const char *)
Param[2]: frames (type: int *)
-Function 277: LoadImageAnimFromMemory() (4 input parameters)
+Function 278: LoadImageAnimFromMemory() (4 input parameters)
Name: LoadImageAnimFromMemory
Return type: Image
Description: Load image sequence from memory buffer
@@ -2663,60 +2668,60 @@ Function 277: LoadImageAnimFromMemory() (4 input parameters)
Param[2]: fileData (type: const unsigned char *)
Param[3]: dataSize (type: int)
Param[4]: frames (type: int *)
-Function 278: LoadImageFromMemory() (3 input parameters)
+Function 279: LoadImageFromMemory() (3 input parameters)
Name: LoadImageFromMemory
Return type: Image
Description: Load image from memory buffer, fileType refers to extension: i.e. '.png'
Param[1]: fileType (type: const char *)
Param[2]: fileData (type: const unsigned char *)
Param[3]: dataSize (type: int)
-Function 279: LoadImageFromTexture() (1 input parameters)
+Function 280: LoadImageFromTexture() (1 input parameters)
Name: LoadImageFromTexture
Return type: Image
Description: Load image from GPU texture data
Param[1]: texture (type: Texture2D)
-Function 280: LoadImageFromScreen() (0 input parameters)
+Function 281: LoadImageFromScreen() (0 input parameters)
Name: LoadImageFromScreen
Return type: Image
Description: Load image from screen buffer and (screenshot)
No input parameters
-Function 281: IsImageValid() (1 input parameters)
+Function 282: IsImageValid() (1 input parameters)
Name: IsImageValid
Return type: bool
Description: Check if an image is valid (data and parameters)
Param[1]: image (type: Image)
-Function 282: UnloadImage() (1 input parameters)
+Function 283: UnloadImage() (1 input parameters)
Name: UnloadImage
Return type: void
Description: Unload image from CPU memory (RAM)
Param[1]: image (type: Image)
-Function 283: ExportImage() (2 input parameters)
+Function 284: ExportImage() (2 input parameters)
Name: ExportImage
Return type: bool
Description: Export image data to file, returns true on success
Param[1]: image (type: Image)
Param[2]: fileName (type: const char *)
-Function 284: ExportImageToMemory() (3 input parameters)
+Function 285: ExportImageToMemory() (3 input parameters)
Name: ExportImageToMemory
Return type: unsigned char *
Description: Export image to memory buffer
Param[1]: image (type: Image)
Param[2]: fileType (type: const char *)
Param[3]: fileSize (type: int *)
-Function 285: ExportImageAsCode() (2 input parameters)
+Function 286: ExportImageAsCode() (2 input parameters)
Name: ExportImageAsCode
Return type: bool
Description: Export image as code file defining an array of bytes, returns true on success
Param[1]: image (type: Image)
Param[2]: fileName (type: const char *)
-Function 286: GenImageColor() (3 input parameters)
+Function 287: GenImageColor() (3 input parameters)
Name: GenImageColor
Return type: Image
Description: Generate image: plain color
Param[1]: width (type: int)
Param[2]: height (type: int)
Param[3]: color (type: Color)
-Function 287: GenImageGradientLinear() (5 input parameters)
+Function 288: GenImageGradientLinear() (5 input parameters)
Name: GenImageGradientLinear
Return type: Image
Description: Generate image: linear gradient, direction in degrees [0..360], 0=Vertical gradient
@@ -2725,7 +2730,7 @@ Function 287: GenImageGradientLinear() (5 input parameters)
Param[3]: direction (type: int)
Param[4]: start (type: Color)
Param[5]: end (type: Color)
-Function 288: GenImageGradientRadial() (5 input parameters)
+Function 289: GenImageGradientRadial() (5 input parameters)
Name: GenImageGradientRadial
Return type: Image
Description: Generate image: radial gradient
@@ -2734,7 +2739,7 @@ Function 288: GenImageGradientRadial() (5 input parameters)
Param[3]: density (type: float)
Param[4]: inner (type: Color)
Param[5]: outer (type: Color)
-Function 289: GenImageGradientSquare() (5 input parameters)
+Function 290: GenImageGradientSquare() (5 input parameters)
Name: GenImageGradientSquare
Return type: Image
Description: Generate image: square gradient
@@ -2743,7 +2748,7 @@ Function 289: GenImageGradientSquare() (5 input parameters)
Param[3]: density (type: float)
Param[4]: inner (type: Color)
Param[5]: outer (type: Color)
-Function 290: GenImageChecked() (6 input parameters)
+Function 291: GenImageChecked() (6 input parameters)
Name: GenImageChecked
Return type: Image
Description: Generate image: checked
@@ -2753,14 +2758,14 @@ Function 290: GenImageChecked() (6 input parameters)
Param[4]: checksY (type: int)
Param[5]: col1 (type: Color)
Param[6]: col2 (type: Color)
-Function 291: GenImageWhiteNoise() (3 input parameters)
+Function 292: GenImageWhiteNoise() (3 input parameters)
Name: GenImageWhiteNoise
Return type: Image
Description: Generate image: white noise
Param[1]: width (type: int)
Param[2]: height (type: int)
Param[3]: factor (type: float)
-Function 292: GenImagePerlinNoise() (5 input parameters)
+Function 293: GenImagePerlinNoise() (5 input parameters)
Name: GenImagePerlinNoise
Return type: Image
Description: Generate image: perlin noise
@@ -2769,45 +2774,45 @@ Function 292: GenImagePerlinNoise() (5 input parameters)
Param[3]: offsetX (type: int)
Param[4]: offsetY (type: int)
Param[5]: scale (type: float)
-Function 293: GenImageCellular() (3 input parameters)
+Function 294: GenImageCellular() (3 input parameters)
Name: GenImageCellular
Return type: Image
Description: Generate image: cellular algorithm, bigger tileSize means bigger cells
Param[1]: width (type: int)
Param[2]: height (type: int)
Param[3]: tileSize (type: int)
-Function 294: GenImageText() (3 input parameters)
+Function 295: GenImageText() (3 input parameters)
Name: GenImageText
Return type: Image
Description: Generate image: grayscale image from text data
Param[1]: width (type: int)
Param[2]: height (type: int)
Param[3]: text (type: const char *)
-Function 295: ImageCopy() (1 input parameters)
+Function 296: ImageCopy() (1 input parameters)
Name: ImageCopy
Return type: Image
Description: Create an image duplicate (useful for transformations)
Param[1]: image (type: Image)
-Function 296: ImageFromImage() (2 input parameters)
+Function 297: ImageFromImage() (2 input parameters)
Name: ImageFromImage
Return type: Image
Description: Create an image from another image piece
Param[1]: image (type: Image)
Param[2]: rec (type: Rectangle)
-Function 297: ImageFromChannel() (2 input parameters)
+Function 298: ImageFromChannel() (2 input parameters)
Name: ImageFromChannel
Return type: Image
Description: Create an image from a selected channel of another image (GRAYSCALE)
Param[1]: image (type: Image)
Param[2]: selectedChannel (type: int)
-Function 298: ImageText() (3 input parameters)
+Function 299: ImageText() (3 input parameters)
Name: ImageText
Return type: Image
Description: Create an image from text (default font)
Param[1]: text (type: const char *)
Param[2]: fontSize (type: int)
Param[3]: color (type: Color)
-Function 299: ImageTextEx() (5 input parameters)
+Function 300: ImageTextEx() (5 input parameters)
Name: ImageTextEx
Return type: Image
Description: Create an image from text (custom sprite font)
@@ -2816,76 +2821,76 @@ Function 299: ImageTextEx() (5 input parameters)
Param[3]: fontSize (type: float)
Param[4]: spacing (type: float)
Param[5]: tint (type: Color)
-Function 300: ImageFormat() (2 input parameters)
+Function 301: ImageFormat() (2 input parameters)
Name: ImageFormat
Return type: void
Description: Convert image data to desired format
Param[1]: image (type: Image *)
Param[2]: newFormat (type: int)
-Function 301: ImageToPOT() (2 input parameters)
+Function 302: ImageToPOT() (2 input parameters)
Name: ImageToPOT
Return type: void
Description: Convert image to POT (power-of-two)
Param[1]: image (type: Image *)
Param[2]: fill (type: Color)
-Function 302: ImageCrop() (2 input parameters)
+Function 303: ImageCrop() (2 input parameters)
Name: ImageCrop
Return type: void
Description: Crop an image to a defined rectangle
Param[1]: image (type: Image *)
Param[2]: crop (type: Rectangle)
-Function 303: ImageAlphaCrop() (2 input parameters)
+Function 304: ImageAlphaCrop() (2 input parameters)
Name: ImageAlphaCrop
Return type: void
Description: Crop image depending on alpha value
Param[1]: image (type: Image *)
Param[2]: threshold (type: float)
-Function 304: ImageAlphaClear() (3 input parameters)
+Function 305: ImageAlphaClear() (3 input parameters)
Name: ImageAlphaClear
Return type: void
Description: Clear alpha channel to desired color
Param[1]: image (type: Image *)
Param[2]: color (type: Color)
Param[3]: threshold (type: float)
-Function 305: ImageAlphaMask() (2 input parameters)
+Function 306: ImageAlphaMask() (2 input parameters)
Name: ImageAlphaMask
Return type: void
Description: Apply alpha mask to image
Param[1]: image (type: Image *)
Param[2]: alphaMask (type: Image)
-Function 306: ImageAlphaPremultiply() (1 input parameters)
+Function 307: ImageAlphaPremultiply() (1 input parameters)
Name: ImageAlphaPremultiply
Return type: void
Description: Premultiply alpha channel
Param[1]: image (type: Image *)
-Function 307: ImageBlurGaussian() (2 input parameters)
+Function 308: ImageBlurGaussian() (2 input parameters)
Name: ImageBlurGaussian
Return type: void
Description: Apply Gaussian blur using a box blur approximation
Param[1]: image (type: Image *)
Param[2]: blurSize (type: int)
-Function 308: ImageKernelConvolution() (3 input parameters)
+Function 309: ImageKernelConvolution() (3 input parameters)
Name: ImageKernelConvolution
Return type: void
Description: Apply custom square convolution kernel to image
Param[1]: image (type: Image *)
Param[2]: kernel (type: const float *)
Param[3]: kernelSize (type: int)
-Function 309: ImageResize() (3 input parameters)
+Function 310: ImageResize() (3 input parameters)
Name: ImageResize
Return type: void
Description: Resize image (Bicubic scaling algorithm)
Param[1]: image (type: Image *)
Param[2]: newWidth (type: int)
Param[3]: newHeight (type: int)
-Function 310: ImageResizeNN() (3 input parameters)
+Function 311: ImageResizeNN() (3 input parameters)
Name: ImageResizeNN
Return type: void
Description: Resize image (Nearest-Neighbor scaling algorithm)
Param[1]: image (type: Image *)
Param[2]: newWidth (type: int)
Param[3]: newHeight (type: int)
-Function 311: ImageResizeCanvas() (6 input parameters)
+Function 312: ImageResizeCanvas() (6 input parameters)
Name: ImageResizeCanvas
Return type: void
Description: Resize canvas and fill with color
@@ -2895,12 +2900,12 @@ Function 311: ImageResizeCanvas() (6 input parameters)
Param[4]: offsetX (type: int)
Param[5]: offsetY (type: int)
Param[6]: fill (type: Color)
-Function 312: ImageMipmaps() (1 input parameters)
+Function 313: ImageMipmaps() (1 input parameters)
Name: ImageMipmaps
Return type: void
Description: Compute all mipmap levels for a provided image
Param[1]: image (type: Image *)
-Function 313: ImageDither() (5 input parameters)
+Function 314: ImageDither() (5 input parameters)
Name: ImageDither
Return type: void
Description: Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
@@ -2909,109 +2914,109 @@ Function 313: ImageDither() (5 input parameters)
Param[3]: gBpp (type: int)
Param[4]: bBpp (type: int)
Param[5]: aBpp (type: int)
-Function 314: ImageFlipVertical() (1 input parameters)
+Function 315: ImageFlipVertical() (1 input parameters)
Name: ImageFlipVertical
Return type: void
Description: Flip image vertically
Param[1]: image (type: Image *)
-Function 315: ImageFlipHorizontal() (1 input parameters)
+Function 316: ImageFlipHorizontal() (1 input parameters)
Name: ImageFlipHorizontal
Return type: void
Description: Flip image horizontally
Param[1]: image (type: Image *)
-Function 316: ImageRotate() (2 input parameters)
+Function 317: ImageRotate() (2 input parameters)
Name: ImageRotate
Return type: void
Description: Rotate image by input angle in degrees (-359 to 359)
Param[1]: image (type: Image *)
Param[2]: degrees (type: int)
-Function 317: ImageRotateCW() (1 input parameters)
+Function 318: ImageRotateCW() (1 input parameters)
Name: ImageRotateCW
Return type: void
Description: Rotate image clockwise 90deg
Param[1]: image (type: Image *)
-Function 318: ImageRotateCCW() (1 input parameters)
+Function 319: ImageRotateCCW() (1 input parameters)
Name: ImageRotateCCW
Return type: void
Description: Rotate image counter-clockwise 90deg
Param[1]: image (type: Image *)
-Function 319: ImageColorTint() (2 input parameters)
+Function 320: ImageColorTint() (2 input parameters)
Name: ImageColorTint
Return type: void
Description: Modify image color: tint
Param[1]: image (type: Image *)
Param[2]: color (type: Color)
-Function 320: ImageColorInvert() (1 input parameters)
+Function 321: ImageColorInvert() (1 input parameters)
Name: ImageColorInvert
Return type: void
Description: Modify image color: invert
Param[1]: image (type: Image *)
-Function 321: ImageColorGrayscale() (1 input parameters)
+Function 322: ImageColorGrayscale() (1 input parameters)
Name: ImageColorGrayscale
Return type: void
Description: Modify image color: grayscale
Param[1]: image (type: Image *)
-Function 322: ImageColorContrast() (2 input parameters)
+Function 323: ImageColorContrast() (2 input parameters)
Name: ImageColorContrast
Return type: void
Description: Modify image color: contrast (-100 to 100)
Param[1]: image (type: Image *)
Param[2]: contrast (type: float)
-Function 323: ImageColorBrightness() (2 input parameters)
+Function 324: ImageColorBrightness() (2 input parameters)
Name: ImageColorBrightness
Return type: void
Description: Modify image color: brightness (-255 to 255)
Param[1]: image (type: Image *)
Param[2]: brightness (type: int)
-Function 324: ImageColorReplace() (3 input parameters)
+Function 325: ImageColorReplace() (3 input parameters)
Name: ImageColorReplace
Return type: void
Description: Modify image color: replace color
Param[1]: image (type: Image *)
Param[2]: color (type: Color)
Param[3]: replace (type: Color)
-Function 325: LoadImageColors() (1 input parameters)
+Function 326: LoadImageColors() (1 input parameters)
Name: LoadImageColors
Return type: Color *
Description: Load color data from image as a Color array (RGBA - 32bit)
Param[1]: image (type: Image)
-Function 326: LoadImagePalette() (3 input parameters)
+Function 327: LoadImagePalette() (3 input parameters)
Name: LoadImagePalette
Return type: Color *
Description: Load colors palette from image as a Color array (RGBA - 32bit)
Param[1]: image (type: Image)
Param[2]: maxPaletteSize (type: int)
Param[3]: colorCount (type: int *)
-Function 327: UnloadImageColors() (1 input parameters)
+Function 328: UnloadImageColors() (1 input parameters)
Name: UnloadImageColors
Return type: void
Description: Unload color data loaded with LoadImageColors()
Param[1]: colors (type: Color *)
-Function 328: UnloadImagePalette() (1 input parameters)
+Function 329: UnloadImagePalette() (1 input parameters)
Name: UnloadImagePalette
Return type: void
Description: Unload colors palette loaded with LoadImagePalette()
Param[1]: colors (type: Color *)
-Function 329: GetImageAlphaBorder() (2 input parameters)
+Function 330: GetImageAlphaBorder() (2 input parameters)
Name: GetImageAlphaBorder
Return type: Rectangle
Description: Get image alpha border rectangle
Param[1]: image (type: Image)
Param[2]: threshold (type: float)
-Function 330: GetImageColor() (3 input parameters)
+Function 331: GetImageColor() (3 input parameters)
Name: GetImageColor
Return type: Color
Description: Get image pixel color at (x, y) position
Param[1]: image (type: Image)
Param[2]: x (type: int)
Param[3]: y (type: int)
-Function 331: ImageClearBackground() (2 input parameters)
+Function 332: ImageClearBackground() (2 input parameters)
Name: ImageClearBackground
Return type: void
Description: Clear image background with given color
Param[1]: dst (type: Image *)
Param[2]: color (type: Color)
-Function 332: ImageDrawPixel() (4 input parameters)
+Function 333: ImageDrawPixel() (4 input parameters)
Name: ImageDrawPixel
Return type: void
Description: Draw pixel within an image
@@ -3019,14 +3024,14 @@ Function 332: ImageDrawPixel() (4 input parameters)
Param[2]: posX (type: int)
Param[3]: posY (type: int)
Param[4]: color (type: Color)
-Function 333: ImageDrawPixelV() (3 input parameters)
+Function 334: ImageDrawPixelV() (3 input parameters)
Name: ImageDrawPixelV
Return type: void
Description: Draw pixel within an image (Vector version)
Param[1]: dst (type: Image *)
Param[2]: position (type: Vector2)
Param[3]: color (type: Color)
-Function 334: ImageDrawLine() (6 input parameters)
+Function 335: ImageDrawLine() (6 input parameters)
Name: ImageDrawLine
Return type: void
Description: Draw line within an image
@@ -3036,7 +3041,7 @@ Function 334: ImageDrawLine() (6 input parameters)
Param[4]: endPosX (type: int)
Param[5]: endPosY (type: int)
Param[6]: color (type: Color)
-Function 335: ImageDrawLineV() (4 input parameters)
+Function 336: ImageDrawLineV() (4 input parameters)
Name: ImageDrawLineV
Return type: void
Description: Draw line within an image (Vector version)
@@ -3044,7 +3049,7 @@ Function 335: ImageDrawLineV() (4 input parameters)
Param[2]: start (type: Vector2)
Param[3]: end (type: Vector2)
Param[4]: color (type: Color)
-Function 336: ImageDrawLineEx() (5 input parameters)
+Function 337: ImageDrawLineEx() (5 input parameters)
Name: ImageDrawLineEx
Return type: void
Description: Draw a line defining thickness within an image
@@ -3053,7 +3058,7 @@ Function 336: ImageDrawLineEx() (5 input parameters)
Param[3]: end (type: Vector2)
Param[4]: thick (type: int)
Param[5]: color (type: Color)
-Function 337: ImageDrawCircle() (5 input parameters)
+Function 338: ImageDrawCircle() (5 input parameters)
Name: ImageDrawCircle
Return type: void
Description: Draw a filled circle within an image
@@ -3062,7 +3067,7 @@ Function 337: ImageDrawCircle() (5 input parameters)
Param[3]: centerY (type: int)
Param[4]: radius (type: int)
Param[5]: color (type: Color)
-Function 338: ImageDrawCircleV() (4 input parameters)
+Function 339: ImageDrawCircleV() (4 input parameters)
Name: ImageDrawCircleV
Return type: void
Description: Draw a filled circle within an image (Vector version)
@@ -3070,7 +3075,7 @@ Function 338: ImageDrawCircleV() (4 input parameters)
Param[2]: center (type: Vector2)
Param[3]: radius (type: int)
Param[4]: color (type: Color)
-Function 339: ImageDrawCircleLines() (5 input parameters)
+Function 340: ImageDrawCircleLines() (5 input parameters)
Name: ImageDrawCircleLines
Return type: void
Description: Draw circle outline within an image
@@ -3079,7 +3084,7 @@ Function 339: ImageDrawCircleLines() (5 input parameters)
Param[3]: centerY (type: int)
Param[4]: radius (type: int)
Param[5]: color (type: Color)
-Function 340: ImageDrawCircleLinesV() (4 input parameters)
+Function 341: ImageDrawCircleLinesV() (4 input parameters)
Name: ImageDrawCircleLinesV
Return type: void
Description: Draw circle outline within an image (Vector version)
@@ -3087,7 +3092,7 @@ Function 340: ImageDrawCircleLinesV() (4 input parameters)
Param[2]: center (type: Vector2)
Param[3]: radius (type: int)
Param[4]: color (type: Color)
-Function 341: ImageDrawRectangle() (6 input parameters)
+Function 342: ImageDrawRectangle() (6 input parameters)
Name: ImageDrawRectangle
Return type: void
Description: Draw rectangle within an image
@@ -3097,7 +3102,7 @@ Function 341: ImageDrawRectangle() (6 input parameters)
Param[4]: width (type: int)
Param[5]: height (type: int)
Param[6]: color (type: Color)
-Function 342: ImageDrawRectangleV() (4 input parameters)
+Function 343: ImageDrawRectangleV() (4 input parameters)
Name: ImageDrawRectangleV
Return type: void
Description: Draw rectangle within an image (Vector version)
@@ -3105,14 +3110,14 @@ Function 342: ImageDrawRectangleV() (4 input parameters)
Param[2]: position (type: Vector2)
Param[3]: size (type: Vector2)
Param[4]: color (type: Color)
-Function 343: ImageDrawRectangleRec() (3 input parameters)
+Function 344: ImageDrawRectangleRec() (3 input parameters)
Name: ImageDrawRectangleRec
Return type: void
Description: Draw rectangle within an image
Param[1]: dst (type: Image *)
Param[2]: rec (type: Rectangle)
Param[3]: color (type: Color)
-Function 344: ImageDrawRectangleLines() (4 input parameters)
+Function 345: ImageDrawRectangleLines() (4 input parameters)
Name: ImageDrawRectangleLines
Return type: void
Description: Draw rectangle lines within an image
@@ -3120,7 +3125,7 @@ Function 344: ImageDrawRectangleLines() (4 input parameters)
Param[2]: rec (type: Rectangle)
Param[3]: thick (type: int)
Param[4]: color (type: Color)
-Function 345: ImageDrawTriangle() (5 input parameters)
+Function 346: ImageDrawTriangle() (5 input parameters)
Name: ImageDrawTriangle
Return type: void
Description: Draw triangle within an image
@@ -3129,7 +3134,7 @@ Function 345: ImageDrawTriangle() (5 input parameters)
Param[3]: v2 (type: Vector2)
Param[4]: v3 (type: Vector2)
Param[5]: color (type: Color)
-Function 346: ImageDrawTriangleEx() (7 input parameters)
+Function 347: ImageDrawTriangleEx() (7 input parameters)
Name: ImageDrawTriangleEx
Return type: void
Description: Draw triangle with interpolated colors within an image
@@ -3140,7 +3145,7 @@ Function 346: ImageDrawTriangleEx() (7 input parameters)
Param[5]: c1 (type: Color)
Param[6]: c2 (type: Color)
Param[7]: c3 (type: Color)
-Function 347: ImageDrawTriangleLines() (5 input parameters)
+Function 348: ImageDrawTriangleLines() (5 input parameters)
Name: ImageDrawTriangleLines
Return type: void
Description: Draw triangle outline within an image
@@ -3149,7 +3154,7 @@ Function 347: ImageDrawTriangleLines() (5 input parameters)
Param[3]: v2 (type: Vector2)
Param[4]: v3 (type: Vector2)
Param[5]: color (type: Color)
-Function 348: ImageDrawTriangleFan() (4 input parameters)
+Function 349: ImageDrawTriangleFan() (4 input parameters)
Name: ImageDrawTriangleFan
Return type: void
Description: Draw a triangle fan defined by points within an image (first vertex is the center)
@@ -3157,7 +3162,7 @@ Function 348: ImageDrawTriangleFan() (4 input parameters)
Param[2]: points (type: Vector2 *)
Param[3]: pointCount (type: int)
Param[4]: color (type: Color)
-Function 349: ImageDrawTriangleStrip() (4 input parameters)
+Function 350: ImageDrawTriangleStrip() (4 input parameters)
Name: ImageDrawTriangleStrip
Return type: void
Description: Draw a triangle strip defined by points within an image
@@ -3165,7 +3170,7 @@ Function 349: ImageDrawTriangleStrip() (4 input parameters)
Param[2]: points (type: Vector2 *)
Param[3]: pointCount (type: int)
Param[4]: color (type: Color)
-Function 350: ImageDraw() (5 input parameters)
+Function 351: ImageDraw() (5 input parameters)
Name: ImageDraw
Return type: void
Description: Draw a source image within a destination image (tint applied to source)
@@ -3174,7 +3179,7 @@ Function 350: ImageDraw() (5 input parameters)
Param[3]: srcRec (type: Rectangle)
Param[4]: dstRec (type: Rectangle)
Param[5]: tint (type: Color)
-Function 351: ImageDrawText() (6 input parameters)
+Function 352: ImageDrawText() (6 input parameters)
Name: ImageDrawText
Return type: void
Description: Draw text (using default font) within an image (destination)
@@ -3184,7 +3189,7 @@ Function 351: ImageDrawText() (6 input parameters)
Param[4]: posY (type: int)
Param[5]: fontSize (type: int)
Param[6]: color (type: Color)
-Function 352: ImageDrawTextEx() (7 input parameters)
+Function 353: ImageDrawTextEx() (7 input parameters)
Name: ImageDrawTextEx
Return type: void
Description: Draw text (custom sprite font) within an image (destination)
@@ -3195,79 +3200,79 @@ Function 352: ImageDrawTextEx() (7 input parameters)
Param[5]: fontSize (type: float)
Param[6]: spacing (type: float)
Param[7]: tint (type: Color)
-Function 353: LoadTexture() (1 input parameters)
+Function 354: LoadTexture() (1 input parameters)
Name: LoadTexture
Return type: Texture2D
Description: Load texture from file into GPU memory (VRAM)
Param[1]: fileName (type: const char *)
-Function 354: LoadTextureFromImage() (1 input parameters)
+Function 355: LoadTextureFromImage() (1 input parameters)
Name: LoadTextureFromImage
Return type: Texture2D
Description: Load texture from image data
Param[1]: image (type: Image)
-Function 355: LoadTextureCubemap() (2 input parameters)
+Function 356: LoadTextureCubemap() (2 input parameters)
Name: LoadTextureCubemap
Return type: TextureCubemap
Description: Load cubemap from image, multiple image cubemap layouts supported
Param[1]: image (type: Image)
Param[2]: layout (type: int)
-Function 356: LoadRenderTexture() (2 input parameters)
+Function 357: LoadRenderTexture() (2 input parameters)
Name: LoadRenderTexture
Return type: RenderTexture2D
Description: Load texture for rendering (framebuffer)
Param[1]: width (type: int)
Param[2]: height (type: int)
-Function 357: IsTextureValid() (1 input parameters)
+Function 358: IsTextureValid() (1 input parameters)
Name: IsTextureValid
Return type: bool
Description: Check if a texture is valid (loaded in GPU)
Param[1]: texture (type: Texture2D)
-Function 358: UnloadTexture() (1 input parameters)
+Function 359: UnloadTexture() (1 input parameters)
Name: UnloadTexture
Return type: void
Description: Unload texture from GPU memory (VRAM)
Param[1]: texture (type: Texture2D)
-Function 359: IsRenderTextureValid() (1 input parameters)
+Function 360: IsRenderTextureValid() (1 input parameters)
Name: IsRenderTextureValid
Return type: bool
Description: Check if a render texture is valid (loaded in GPU)
Param[1]: target (type: RenderTexture2D)
-Function 360: UnloadRenderTexture() (1 input parameters)
+Function 361: UnloadRenderTexture() (1 input parameters)
Name: UnloadRenderTexture
Return type: void
Description: Unload render texture from GPU memory (VRAM)
Param[1]: target (type: RenderTexture2D)
-Function 361: UpdateTexture() (2 input parameters)
+Function 362: UpdateTexture() (2 input parameters)
Name: UpdateTexture
Return type: void
Description: Update GPU texture with new data
Param[1]: texture (type: Texture2D)
Param[2]: pixels (type: const void *)
-Function 362: UpdateTextureRec() (3 input parameters)
+Function 363: UpdateTextureRec() (3 input parameters)
Name: UpdateTextureRec
Return type: void
Description: Update GPU texture rectangle with new data
Param[1]: texture (type: Texture2D)
Param[2]: rec (type: Rectangle)
Param[3]: pixels (type: const void *)
-Function 363: GenTextureMipmaps() (1 input parameters)
+Function 364: GenTextureMipmaps() (1 input parameters)
Name: GenTextureMipmaps
Return type: void
Description: Generate GPU mipmaps for a texture
Param[1]: texture (type: Texture2D *)
-Function 364: SetTextureFilter() (2 input parameters)
+Function 365: SetTextureFilter() (2 input parameters)
Name: SetTextureFilter
Return type: void
Description: Set texture scaling filter mode
Param[1]: texture (type: Texture2D)
Param[2]: filter (type: int)
-Function 365: SetTextureWrap() (2 input parameters)
+Function 366: SetTextureWrap() (2 input parameters)
Name: SetTextureWrap
Return type: void
Description: Set texture wrapping mode
Param[1]: texture (type: Texture2D)
Param[2]: wrap (type: int)
-Function 366: DrawTexture() (4 input parameters)
+Function 367: DrawTexture() (4 input parameters)
Name: DrawTexture
Return type: void
Description: Draw a Texture2D
@@ -3275,14 +3280,14 @@ Function 366: DrawTexture() (4 input parameters)
Param[2]: posX (type: int)
Param[3]: posY (type: int)
Param[4]: tint (type: Color)
-Function 367: DrawTextureV() (3 input parameters)
+Function 368: DrawTextureV() (3 input parameters)
Name: DrawTextureV
Return type: void
Description: Draw a Texture2D with position defined as Vector2
Param[1]: texture (type: Texture2D)
Param[2]: position (type: Vector2)
Param[3]: tint (type: Color)
-Function 368: DrawTextureEx() (5 input parameters)
+Function 369: DrawTextureEx() (5 input parameters)
Name: DrawTextureEx
Return type: void
Description: Draw a Texture2D with extended parameters
@@ -3291,7 +3296,7 @@ Function 368: DrawTextureEx() (5 input parameters)
Param[3]: rotation (type: float)
Param[4]: scale (type: float)
Param[5]: tint (type: Color)
-Function 369: DrawTextureRec() (4 input parameters)
+Function 370: DrawTextureRec() (4 input parameters)
Name: DrawTextureRec
Return type: void
Description: Draw a part of a texture defined by a rectangle
@@ -3299,7 +3304,7 @@ Function 369: DrawTextureRec() (4 input parameters)
Param[2]: source (type: Rectangle)
Param[3]: position (type: Vector2)
Param[4]: tint (type: Color)
-Function 370: DrawTexturePro() (6 input parameters)
+Function 371: DrawTexturePro() (6 input parameters)
Name: DrawTexturePro
Return type: void
Description: Draw a part of a texture defined by a rectangle with 'pro' parameters
@@ -3309,7 +3314,7 @@ Function 370: DrawTexturePro() (6 input parameters)
Param[4]: origin (type: Vector2)
Param[5]: rotation (type: float)
Param[6]: tint (type: Color)
-Function 371: DrawTextureNPatch() (6 input parameters)
+Function 372: DrawTextureNPatch() (6 input parameters)
Name: DrawTextureNPatch
Return type: void
Description: Draws a texture (or part of it) that stretches or shrinks nicely
@@ -3319,119 +3324,119 @@ Function 371: DrawTextureNPatch() (6 input parameters)
Param[4]: origin (type: Vector2)
Param[5]: rotation (type: float)
Param[6]: tint (type: Color)
-Function 372: ColorIsEqual() (2 input parameters)
+Function 373: ColorIsEqual() (2 input parameters)
Name: ColorIsEqual
Return type: bool
Description: Check if two colors are equal
Param[1]: col1 (type: Color)
Param[2]: col2 (type: Color)
-Function 373: Fade() (2 input parameters)
+Function 374: Fade() (2 input parameters)
Name: Fade
Return type: Color
Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f
Param[1]: color (type: Color)
Param[2]: alpha (type: float)
-Function 374: ColorToInt() (1 input parameters)
+Function 375: ColorToInt() (1 input parameters)
Name: ColorToInt
Return type: int
Description: Get hexadecimal value for a Color (0xRRGGBBAA)
Param[1]: color (type: Color)
-Function 375: ColorNormalize() (1 input parameters)
+Function 376: ColorNormalize() (1 input parameters)
Name: ColorNormalize
Return type: Vector4
Description: Get Color normalized as float [0..1]
Param[1]: color (type: Color)
-Function 376: ColorFromNormalized() (1 input parameters)
+Function 377: ColorFromNormalized() (1 input parameters)
Name: ColorFromNormalized
Return type: Color
Description: Get Color from normalized values [0..1]
Param[1]: normalized (type: Vector4)
-Function 377: ColorToHSV() (1 input parameters)
+Function 378: ColorToHSV() (1 input parameters)
Name: ColorToHSV
Return type: Vector3
Description: Get HSV values for a Color, hue [0..360], saturation/value [0..1]
Param[1]: color (type: Color)
-Function 378: ColorFromHSV() (3 input parameters)
+Function 379: ColorFromHSV() (3 input parameters)
Name: ColorFromHSV
Return type: Color
Description: Get a Color from HSV values, hue [0..360], saturation/value [0..1]
Param[1]: hue (type: float)
Param[2]: saturation (type: float)
Param[3]: value (type: float)
-Function 379: ColorTint() (2 input parameters)
+Function 380: ColorTint() (2 input parameters)
Name: ColorTint
Return type: Color
Description: Get color multiplied with another color
Param[1]: color (type: Color)
Param[2]: tint (type: Color)
-Function 380: ColorBrightness() (2 input parameters)
+Function 381: ColorBrightness() (2 input parameters)
Name: ColorBrightness
Return type: Color
Description: Get color with brightness correction, brightness factor goes from -1.0f to 1.0f
Param[1]: color (type: Color)
Param[2]: factor (type: float)
-Function 381: ColorContrast() (2 input parameters)
+Function 382: ColorContrast() (2 input parameters)
Name: ColorContrast
Return type: Color
Description: Get color with contrast correction, contrast values between -1.0f and 1.0f
Param[1]: color (type: Color)
Param[2]: contrast (type: float)
-Function 382: ColorAlpha() (2 input parameters)
+Function 383: ColorAlpha() (2 input parameters)
Name: ColorAlpha
Return type: Color
Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f
Param[1]: color (type: Color)
Param[2]: alpha (type: float)
-Function 383: ColorAlphaBlend() (3 input parameters)
+Function 384: ColorAlphaBlend() (3 input parameters)
Name: ColorAlphaBlend
Return type: Color
Description: Get src alpha-blended into dst color with tint
Param[1]: dst (type: Color)
Param[2]: src (type: Color)
Param[3]: tint (type: Color)
-Function 384: ColorLerp() (3 input parameters)
+Function 385: ColorLerp() (3 input parameters)
Name: ColorLerp
Return type: Color
Description: Get color lerp interpolation between two colors, factor [0.0f..1.0f]
Param[1]: color1 (type: Color)
Param[2]: color2 (type: Color)
Param[3]: factor (type: float)
-Function 385: GetColor() (1 input parameters)
+Function 386: GetColor() (1 input parameters)
Name: GetColor
Return type: Color
Description: Get Color structure from hexadecimal value
Param[1]: hexValue (type: unsigned int)
-Function 386: GetPixelColor() (2 input parameters)
+Function 387: GetPixelColor() (2 input parameters)
Name: GetPixelColor
Return type: Color
Description: Get Color from a source pixel pointer of certain format
Param[1]: srcPtr (type: void *)
Param[2]: format (type: int)
-Function 387: SetPixelColor() (3 input parameters)
+Function 388: SetPixelColor() (3 input parameters)
Name: SetPixelColor
Return type: void
Description: Set color formatted into destination pixel pointer
Param[1]: dstPtr (type: void *)
Param[2]: color (type: Color)
Param[3]: format (type: int)
-Function 388: GetPixelDataSize() (3 input parameters)
+Function 389: GetPixelDataSize() (3 input parameters)
Name: GetPixelDataSize
Return type: int
Description: Get pixel data size in bytes for certain format
Param[1]: width (type: int)
Param[2]: height (type: int)
Param[3]: format (type: int)
-Function 389: GetFontDefault() (0 input parameters)
+Function 390: GetFontDefault() (0 input parameters)
Name: GetFontDefault
Return type: Font
Description: Get the default Font
No input parameters
-Function 390: LoadFont() (1 input parameters)
+Function 391: LoadFont() (1 input parameters)
Name: LoadFont
Return type: Font
Description: Load font from file into GPU memory (VRAM)
Param[1]: fileName (type: const char *)
-Function 391: LoadFontEx() (4 input parameters)
+Function 392: LoadFontEx() (4 input parameters)
Name: LoadFontEx
Return type: Font
Description: Load font from file with extended parameters, use NULL for codepoints and 0 for codepointCount to load the default character set, font size is provided in pixels height
@@ -3439,14 +3444,14 @@ Function 391: LoadFontEx() (4 input parameters)
Param[2]: fontSize (type: int)
Param[3]: codepoints (type: int *)
Param[4]: codepointCount (type: int)
-Function 392: LoadFontFromImage() (3 input parameters)
+Function 393: LoadFontFromImage() (3 input parameters)
Name: LoadFontFromImage
Return type: Font
Description: Load font from Image (XNA style)
Param[1]: image (type: Image)
Param[2]: key (type: Color)
Param[3]: firstChar (type: int)
-Function 393: LoadFontFromMemory() (6 input parameters)
+Function 394: LoadFontFromMemory() (6 input parameters)
Name: LoadFontFromMemory
Return type: Font
Description: Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
@@ -3456,12 +3461,12 @@ Function 393: LoadFontFromMemory() (6 input parameters)
Param[4]: fontSize (type: int)
Param[5]: codepoints (type: int *)
Param[6]: codepointCount (type: int)
-Function 394: IsFontValid() (1 input parameters)
+Function 395: IsFontValid() (1 input parameters)
Name: IsFontValid
Return type: bool
Description: Check if a font is valid (font data loaded, WARNING: GPU texture not checked)
Param[1]: font (type: Font)
-Function 395: LoadFontData() (6 input parameters)
+Function 396: LoadFontData() (6 input parameters)
Name: LoadFontData
Return type: GlyphInfo *
Description: Load font data for further use
@@ -3471,7 +3476,7 @@ Function 395: LoadFontData() (6 input parameters)
Param[4]: codepoints (type: int *)
Param[5]: codepointCount (type: int)
Param[6]: type (type: int)
-Function 396: GenImageFontAtlas() (6 input parameters)
+Function 397: GenImageFontAtlas() (6 input parameters)
Name: GenImageFontAtlas
Return type: Image
Description: Generate image font atlas using chars info
@@ -3481,30 +3486,30 @@ Function 396: GenImageFontAtlas() (6 input parameters)
Param[4]: fontSize (type: int)
Param[5]: padding (type: int)
Param[6]: packMethod (type: int)
-Function 397: UnloadFontData() (2 input parameters)
+Function 398: UnloadFontData() (2 input parameters)
Name: UnloadFontData
Return type: void
Description: Unload font chars info data (RAM)
Param[1]: glyphs (type: GlyphInfo *)
Param[2]: glyphCount (type: int)
-Function 398: UnloadFont() (1 input parameters)
+Function 399: UnloadFont() (1 input parameters)
Name: UnloadFont
Return type: void
Description: Unload font from GPU memory (VRAM)
Param[1]: font (type: Font)
-Function 399: ExportFontAsCode() (2 input parameters)
+Function 400: ExportFontAsCode() (2 input parameters)
Name: ExportFontAsCode
Return type: bool
Description: Export font as code file, returns true on success
Param[1]: font (type: Font)
Param[2]: fileName (type: const char *)
-Function 400: DrawFPS() (2 input parameters)
+Function 401: DrawFPS() (2 input parameters)
Name: DrawFPS
Return type: void
Description: Draw current FPS
Param[1]: posX (type: int)
Param[2]: posY (type: int)
-Function 401: DrawText() (5 input parameters)
+Function 402: DrawText() (5 input parameters)
Name: DrawText
Return type: void
Description: Draw text (using default font)
@@ -3513,7 +3518,7 @@ Function 401: DrawText() (5 input parameters)
Param[3]: posY (type: int)
Param[4]: fontSize (type: int)
Param[5]: color (type: Color)
-Function 402: DrawTextEx() (6 input parameters)
+Function 403: DrawTextEx() (6 input parameters)
Name: DrawTextEx
Return type: void
Description: Draw text using font and additional parameters
@@ -3523,7 +3528,7 @@ Function 402: DrawTextEx() (6 input parameters)
Param[4]: fontSize (type: float)
Param[5]: spacing (type: float)
Param[6]: tint (type: Color)
-Function 403: DrawTextPro() (8 input parameters)
+Function 404: DrawTextPro() (8 input parameters)
Name: DrawTextPro
Return type: void
Description: Draw text using Font and pro parameters (rotation)
@@ -3535,7 +3540,7 @@ Function 403: DrawTextPro() (8 input parameters)
Param[6]: fontSize (type: float)
Param[7]: spacing (type: float)
Param[8]: tint (type: Color)
-Function 404: DrawTextCodepoint() (5 input parameters)
+Function 405: DrawTextCodepoint() (5 input parameters)
Name: DrawTextCodepoint
Return type: void
Description: Draw one character (codepoint)
@@ -3544,7 +3549,7 @@ Function 404: DrawTextCodepoint() (5 input parameters)
Param[3]: position (type: Vector2)
Param[4]: fontSize (type: float)
Param[5]: tint (type: Color)
-Function 405: DrawTextCodepoints() (7 input parameters)
+Function 406: DrawTextCodepoints() (7 input parameters)
Name: DrawTextCodepoints
Return type: void
Description: Draw multiple character (codepoint)
@@ -3555,18 +3560,18 @@ Function 405: DrawTextCodepoints() (7 input parameters)
Param[5]: fontSize (type: float)
Param[6]: spacing (type: float)
Param[7]: tint (type: Color)
-Function 406: SetTextLineSpacing() (1 input parameters)
+Function 407: SetTextLineSpacing() (1 input parameters)
Name: SetTextLineSpacing
Return type: void
Description: Set vertical line spacing when drawing with line-breaks
Param[1]: spacing (type: int)
-Function 407: MeasureText() (2 input parameters)
+Function 408: MeasureText() (2 input parameters)
Name: MeasureText
Return type: int
Description: Measure string width for default font
Param[1]: text (type: const char *)
Param[2]: fontSize (type: int)
-Function 408: MeasureTextEx() (4 input parameters)
+Function 409: MeasureTextEx() (4 input parameters)
Name: MeasureTextEx
Return type: Vector2
Description: Measure string size for Font
@@ -3574,195 +3579,195 @@ Function 408: MeasureTextEx() (4 input parameters)
Param[2]: text (type: const char *)
Param[3]: fontSize (type: float)
Param[4]: spacing (type: float)
-Function 409: GetGlyphIndex() (2 input parameters)
+Function 410: GetGlyphIndex() (2 input parameters)
Name: GetGlyphIndex
Return type: int
Description: Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found
Param[1]: font (type: Font)
Param[2]: codepoint (type: int)
-Function 410: GetGlyphInfo() (2 input parameters)
+Function 411: GetGlyphInfo() (2 input parameters)
Name: GetGlyphInfo
Return type: GlyphInfo
Description: Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found
Param[1]: font (type: Font)
Param[2]: codepoint (type: int)
-Function 411: GetGlyphAtlasRec() (2 input parameters)
+Function 412: GetGlyphAtlasRec() (2 input parameters)
Name: GetGlyphAtlasRec
Return type: Rectangle
Description: Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found
Param[1]: font (type: Font)
Param[2]: codepoint (type: int)
-Function 412: LoadUTF8() (2 input parameters)
+Function 413: LoadUTF8() (2 input parameters)
Name: LoadUTF8
Return type: char *
Description: Load UTF-8 text encoded from codepoints array
Param[1]: codepoints (type: const int *)
Param[2]: length (type: int)
-Function 413: UnloadUTF8() (1 input parameters)
+Function 414: UnloadUTF8() (1 input parameters)
Name: UnloadUTF8
Return type: void
Description: Unload UTF-8 text encoded from codepoints array
Param[1]: text (type: char *)
-Function 414: LoadCodepoints() (2 input parameters)
+Function 415: LoadCodepoints() (2 input parameters)
Name: LoadCodepoints
Return type: int *
Description: Load all codepoints from a UTF-8 text string, codepoints count returned by parameter
Param[1]: text (type: const char *)
Param[2]: count (type: int *)
-Function 415: UnloadCodepoints() (1 input parameters)
+Function 416: UnloadCodepoints() (1 input parameters)
Name: UnloadCodepoints
Return type: void
Description: Unload codepoints data from memory
Param[1]: codepoints (type: int *)
-Function 416: GetCodepointCount() (1 input parameters)
+Function 417: GetCodepointCount() (1 input parameters)
Name: GetCodepointCount
Return type: int
Description: Get total number of codepoints in a UTF-8 encoded string
Param[1]: text (type: const char *)
-Function 417: GetCodepoint() (2 input parameters)
+Function 418: GetCodepoint() (2 input parameters)
Name: GetCodepoint
Return type: int
Description: Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
Param[1]: text (type: const char *)
Param[2]: codepointSize (type: int *)
-Function 418: GetCodepointNext() (2 input parameters)
+Function 419: GetCodepointNext() (2 input parameters)
Name: GetCodepointNext
Return type: int
Description: Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
Param[1]: text (type: const char *)
Param[2]: codepointSize (type: int *)
-Function 419: GetCodepointPrevious() (2 input parameters)
+Function 420: GetCodepointPrevious() (2 input parameters)
Name: GetCodepointPrevious
Return type: int
Description: Get previous codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
Param[1]: text (type: const char *)
Param[2]: codepointSize (type: int *)
-Function 420: CodepointToUTF8() (2 input parameters)
+Function 421: CodepointToUTF8() (2 input parameters)
Name: CodepointToUTF8
Return type: const char *
Description: Encode one codepoint into UTF-8 byte array (array length returned as parameter)
Param[1]: codepoint (type: int)
Param[2]: utf8Size (type: int *)
-Function 421: TextCopy() (2 input parameters)
+Function 422: TextCopy() (2 input parameters)
Name: TextCopy
Return type: int
Description: Copy one string to another, returns bytes copied
Param[1]: dst (type: char *)
Param[2]: src (type: const char *)
-Function 422: TextIsEqual() (2 input parameters)
+Function 423: TextIsEqual() (2 input parameters)
Name: TextIsEqual
Return type: bool
Description: Check if two text string are equal
Param[1]: text1 (type: const char *)
Param[2]: text2 (type: const char *)
-Function 423: TextLength() (1 input parameters)
+Function 424: TextLength() (1 input parameters)
Name: TextLength
Return type: unsigned int
Description: Get text length, checks for '\0' ending
Param[1]: text (type: const char *)
-Function 424: TextFormat() (2 input parameters)
+Function 425: TextFormat() (2 input parameters)
Name: TextFormat
Return type: const char *
Description: Text formatting with variables (sprintf() style)
Param[1]: text (type: const char *)
Param[2]: args (type: ...)
-Function 425: TextSubtext() (3 input parameters)
+Function 426: TextSubtext() (3 input parameters)
Name: TextSubtext
Return type: const char *
Description: Get a piece of a text string
Param[1]: text (type: const char *)
Param[2]: position (type: int)
Param[3]: length (type: int)
-Function 426: TextReplace() (3 input parameters)
+Function 427: TextReplace() (3 input parameters)
Name: TextReplace
Return type: char *
Description: Replace text string (WARNING: memory must be freed!)
Param[1]: text (type: const char *)
Param[2]: replace (type: const char *)
Param[3]: by (type: const char *)
-Function 427: TextInsert() (3 input parameters)
+Function 428: TextInsert() (3 input parameters)
Name: TextInsert
Return type: char *
Description: Insert text in a position (WARNING: memory must be freed!)
Param[1]: text (type: const char *)
Param[2]: insert (type: const char *)
Param[3]: position (type: int)
-Function 428: TextJoin() (3 input parameters)
+Function 429: TextJoin() (3 input parameters)
Name: TextJoin
Return type: const char *
Description: Join text strings with delimiter
Param[1]: textList (type: const char **)
Param[2]: count (type: int)
Param[3]: delimiter (type: const char *)
-Function 429: TextSplit() (3 input parameters)
+Function 430: TextSplit() (3 input parameters)
Name: TextSplit
Return type: const char **
Description: Split text into multiple strings
Param[1]: text (type: const char *)
Param[2]: delimiter (type: char)
Param[3]: count (type: int *)
-Function 430: TextAppend() (3 input parameters)
+Function 431: TextAppend() (3 input parameters)
Name: TextAppend
Return type: void
Description: Append text at specific position and move cursor!
Param[1]: text (type: char *)
Param[2]: append (type: const char *)
Param[3]: position (type: int *)
-Function 431: TextFindIndex() (2 input parameters)
+Function 432: TextFindIndex() (2 input parameters)
Name: TextFindIndex
Return type: int
Description: Find first text occurrence within a string
Param[1]: text (type: const char *)
Param[2]: find (type: const char *)
-Function 432: TextToUpper() (1 input parameters)
+Function 433: TextToUpper() (1 input parameters)
Name: TextToUpper
Return type: const char *
Description: Get upper case version of provided string
Param[1]: text (type: const char *)
-Function 433: TextToLower() (1 input parameters)
+Function 434: TextToLower() (1 input parameters)
Name: TextToLower
Return type: const char *
Description: Get lower case version of provided string
Param[1]: text (type: const char *)
-Function 434: TextToPascal() (1 input parameters)
+Function 435: TextToPascal() (1 input parameters)
Name: TextToPascal
Return type: const char *
Description: Get Pascal case notation version of provided string
Param[1]: text (type: const char *)
-Function 435: TextToSnake() (1 input parameters)
+Function 436: TextToSnake() (1 input parameters)
Name: TextToSnake
Return type: const char *
Description: Get Snake case notation version of provided string
Param[1]: text (type: const char *)
-Function 436: TextToCamel() (1 input parameters)
+Function 437: TextToCamel() (1 input parameters)
Name: TextToCamel
Return type: const char *
Description: Get Camel case notation version of provided string
Param[1]: text (type: const char *)
-Function 437: TextToInteger() (1 input parameters)
+Function 438: TextToInteger() (1 input parameters)
Name: TextToInteger
Return type: int
Description: Get integer value from text (negative values not supported)
Param[1]: text (type: const char *)
-Function 438: TextToFloat() (1 input parameters)
+Function 439: TextToFloat() (1 input parameters)
Name: TextToFloat
Return type: float
Description: Get float value from text (negative values not supported)
Param[1]: text (type: const char *)
-Function 439: DrawLine3D() (3 input parameters)
+Function 440: DrawLine3D() (3 input parameters)
Name: DrawLine3D
Return type: void
Description: Draw a line in 3D world space
Param[1]: startPos (type: Vector3)
Param[2]: endPos (type: Vector3)
Param[3]: color (type: Color)
-Function 440: DrawPoint3D() (2 input parameters)
+Function 441: DrawPoint3D() (2 input parameters)
Name: DrawPoint3D
Return type: void
Description: Draw a point in 3D space, actually a small line
Param[1]: position (type: Vector3)
Param[2]: color (type: Color)
-Function 441: DrawCircle3D() (5 input parameters)
+Function 442: DrawCircle3D() (5 input parameters)
Name: DrawCircle3D
Return type: void
Description: Draw a circle in 3D world space
@@ -3771,7 +3776,7 @@ Function 441: DrawCircle3D() (5 input parameters)
Param[3]: rotationAxis (type: Vector3)
Param[4]: rotationAngle (type: float)
Param[5]: color (type: Color)
-Function 442: DrawTriangle3D() (4 input parameters)
+Function 443: DrawTriangle3D() (4 input parameters)
Name: DrawTriangle3D
Return type: void
Description: Draw a color-filled triangle (vertex in counter-clockwise order!)
@@ -3779,14 +3784,14 @@ Function 442: DrawTriangle3D() (4 input parameters)
Param[2]: v2 (type: Vector3)
Param[3]: v3 (type: Vector3)
Param[4]: color (type: Color)
-Function 443: DrawTriangleStrip3D() (3 input parameters)
+Function 444: DrawTriangleStrip3D() (3 input parameters)
Name: DrawTriangleStrip3D
Return type: void
Description: Draw a triangle strip defined by points
Param[1]: points (type: const Vector3 *)
Param[2]: pointCount (type: int)
Param[3]: color (type: Color)
-Function 444: DrawCube() (5 input parameters)
+Function 445: DrawCube() (5 input parameters)
Name: DrawCube
Return type: void
Description: Draw cube
@@ -3795,14 +3800,14 @@ Function 444: DrawCube() (5 input parameters)
Param[3]: height (type: float)
Param[4]: length (type: float)
Param[5]: color (type: Color)
-Function 445: DrawCubeV() (3 input parameters)
+Function 446: DrawCubeV() (3 input parameters)
Name: DrawCubeV
Return type: void
Description: Draw cube (Vector version)
Param[1]: position (type: Vector3)
Param[2]: size (type: Vector3)
Param[3]: color (type: Color)
-Function 446: DrawCubeWires() (5 input parameters)
+Function 447: DrawCubeWires() (5 input parameters)
Name: DrawCubeWires
Return type: void
Description: Draw cube wires
@@ -3811,21 +3816,21 @@ Function 446: DrawCubeWires() (5 input parameters)
Param[3]: height (type: float)
Param[4]: length (type: float)
Param[5]: color (type: Color)
-Function 447: DrawCubeWiresV() (3 input parameters)
+Function 448: DrawCubeWiresV() (3 input parameters)
Name: DrawCubeWiresV
Return type: void
Description: Draw cube wires (Vector version)
Param[1]: position (type: Vector3)
Param[2]: size (type: Vector3)
Param[3]: color (type: Color)
-Function 448: DrawSphere() (3 input parameters)
+Function 449: DrawSphere() (3 input parameters)
Name: DrawSphere
Return type: void
Description: Draw sphere
Param[1]: centerPos (type: Vector3)
Param[2]: radius (type: float)
Param[3]: color (type: Color)
-Function 449: DrawSphereEx() (5 input parameters)
+Function 450: DrawSphereEx() (5 input parameters)
Name: DrawSphereEx
Return type: void
Description: Draw sphere with extended parameters
@@ -3834,7 +3839,7 @@ Function 449: DrawSphereEx() (5 input parameters)
Param[3]: rings (type: int)
Param[4]: slices (type: int)
Param[5]: color (type: Color)
-Function 450: DrawSphereWires() (5 input parameters)
+Function 451: DrawSphereWires() (5 input parameters)
Name: DrawSphereWires
Return type: void
Description: Draw sphere wires
@@ -3843,7 +3848,7 @@ Function 450: DrawSphereWires() (5 input parameters)
Param[3]: rings (type: int)
Param[4]: slices (type: int)
Param[5]: color (type: Color)
-Function 451: DrawCylinder() (6 input parameters)
+Function 452: DrawCylinder() (6 input parameters)
Name: DrawCylinder
Return type: void
Description: Draw a cylinder/cone
@@ -3853,7 +3858,7 @@ Function 451: DrawCylinder() (6 input parameters)
Param[4]: height (type: float)
Param[5]: slices (type: int)
Param[6]: color (type: Color)
-Function 452: DrawCylinderEx() (6 input parameters)
+Function 453: DrawCylinderEx() (6 input parameters)
Name: DrawCylinderEx
Return type: void
Description: Draw a cylinder with base at startPos and top at endPos
@@ -3863,7 +3868,7 @@ Function 452: DrawCylinderEx() (6 input parameters)
Param[4]: endRadius (type: float)
Param[5]: sides (type: int)
Param[6]: color (type: Color)
-Function 453: DrawCylinderWires() (6 input parameters)
+Function 454: DrawCylinderWires() (6 input parameters)
Name: DrawCylinderWires
Return type: void
Description: Draw a cylinder/cone wires
@@ -3873,7 +3878,7 @@ Function 453: DrawCylinderWires() (6 input parameters)
Param[4]: height (type: float)
Param[5]: slices (type: int)
Param[6]: color (type: Color)
-Function 454: DrawCylinderWiresEx() (6 input parameters)
+Function 455: DrawCylinderWiresEx() (6 input parameters)
Name: DrawCylinderWiresEx
Return type: void
Description: Draw a cylinder wires with base at startPos and top at endPos
@@ -3883,7 +3888,7 @@ Function 454: DrawCylinderWiresEx() (6 input parameters)
Param[4]: endRadius (type: float)
Param[5]: sides (type: int)
Param[6]: color (type: Color)
-Function 455: DrawCapsule() (6 input parameters)
+Function 456: DrawCapsule() (6 input parameters)
Name: DrawCapsule
Return type: void
Description: Draw a capsule with the center of its sphere caps at startPos and endPos
@@ -3893,7 +3898,7 @@ Function 455: DrawCapsule() (6 input parameters)
Param[4]: slices (type: int)
Param[5]: rings (type: int)
Param[6]: color (type: Color)
-Function 456: DrawCapsuleWires() (6 input parameters)
+Function 457: DrawCapsuleWires() (6 input parameters)
Name: DrawCapsuleWires
Return type: void
Description: Draw capsule wireframe with the center of its sphere caps at startPos and endPos
@@ -3903,51 +3908,51 @@ Function 456: DrawCapsuleWires() (6 input parameters)
Param[4]: slices (type: int)
Param[5]: rings (type: int)
Param[6]: color (type: Color)
-Function 457: DrawPlane() (3 input parameters)
+Function 458: DrawPlane() (3 input parameters)
Name: DrawPlane
Return type: void
Description: Draw a plane XZ
Param[1]: centerPos (type: Vector3)
Param[2]: size (type: Vector2)
Param[3]: color (type: Color)
-Function 458: DrawRay() (2 input parameters)
+Function 459: DrawRay() (2 input parameters)
Name: DrawRay
Return type: void
Description: Draw a ray line
Param[1]: ray (type: Ray)
Param[2]: color (type: Color)
-Function 459: DrawGrid() (2 input parameters)
+Function 460: DrawGrid() (2 input parameters)
Name: DrawGrid
Return type: void
Description: Draw a grid (centered at (0, 0, 0))
Param[1]: slices (type: int)
Param[2]: spacing (type: float)
-Function 460: LoadModel() (1 input parameters)
+Function 461: LoadModel() (1 input parameters)
Name: LoadModel
Return type: Model
Description: Load model from files (meshes and materials)
Param[1]: fileName (type: const char *)
-Function 461: LoadModelFromMesh() (1 input parameters)
+Function 462: LoadModelFromMesh() (1 input parameters)
Name: LoadModelFromMesh
Return type: Model
Description: Load model from generated mesh (default material)
Param[1]: mesh (type: Mesh)
-Function 462: IsModelValid() (1 input parameters)
+Function 463: IsModelValid() (1 input parameters)
Name: IsModelValid
Return type: bool
Description: Check if a model is valid (loaded in GPU, VAO/VBOs)
Param[1]: model (type: Model)
-Function 463: UnloadModel() (1 input parameters)
+Function 464: UnloadModel() (1 input parameters)
Name: UnloadModel
Return type: void
Description: Unload model (including meshes) from memory (RAM and/or VRAM)
Param[1]: model (type: Model)
-Function 464: GetModelBoundingBox() (1 input parameters)
+Function 465: GetModelBoundingBox() (1 input parameters)
Name: GetModelBoundingBox
Return type: BoundingBox
Description: Compute model bounding box limits (considers all meshes)
Param[1]: model (type: Model)
-Function 465: DrawModel() (4 input parameters)
+Function 466: DrawModel() (4 input parameters)
Name: DrawModel
Return type: void
Description: Draw a model (with texture if set)
@@ -3955,7 +3960,7 @@ Function 465: DrawModel() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 466: DrawModelEx() (6 input parameters)
+Function 467: DrawModelEx() (6 input parameters)
Name: DrawModelEx
Return type: void
Description: Draw a model with extended parameters
@@ -3965,7 +3970,7 @@ Function 466: DrawModelEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 467: DrawModelWires() (4 input parameters)
+Function 468: DrawModelWires() (4 input parameters)
Name: DrawModelWires
Return type: void
Description: Draw a model wires (with texture if set)
@@ -3973,7 +3978,7 @@ Function 467: DrawModelWires() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 468: DrawModelWiresEx() (6 input parameters)
+Function 469: DrawModelWiresEx() (6 input parameters)
Name: DrawModelWiresEx
Return type: void
Description: Draw a model wires (with texture if set) with extended parameters
@@ -3983,7 +3988,7 @@ Function 468: DrawModelWiresEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 469: DrawModelPoints() (4 input parameters)
+Function 470: DrawModelPoints() (4 input parameters)
Name: DrawModelPoints
Return type: void
Description: Draw a model as points
@@ -3991,7 +3996,7 @@ Function 469: DrawModelPoints() (4 input parameters)
Param[2]: position (type: Vector3)
Param[3]: scale (type: float)
Param[4]: tint (type: Color)
-Function 470: DrawModelPointsEx() (6 input parameters)
+Function 471: DrawModelPointsEx() (6 input parameters)
Name: DrawModelPointsEx
Return type: void
Description: Draw a model as points with extended parameters
@@ -4001,13 +4006,13 @@ Function 470: DrawModelPointsEx() (6 input parameters)
Param[4]: rotationAngle (type: float)
Param[5]: scale (type: Vector3)
Param[6]: tint (type: Color)
-Function 471: DrawBoundingBox() (2 input parameters)
+Function 472: DrawBoundingBox() (2 input parameters)
Name: DrawBoundingBox
Return type: void
Description: Draw bounding box (wires)
Param[1]: box (type: BoundingBox)
Param[2]: color (type: Color)
-Function 472: DrawBillboard() (5 input parameters)
+Function 473: DrawBillboard() (5 input parameters)
Name: DrawBillboard
Return type: void
Description: Draw a billboard texture
@@ -4016,7 +4021,7 @@ Function 472: DrawBillboard() (5 input parameters)
Param[3]: position (type: Vector3)
Param[4]: scale (type: float)
Param[5]: tint (type: Color)
-Function 473: DrawBillboardRec() (6 input parameters)
+Function 474: DrawBillboardRec() (6 input parameters)
Name: DrawBillboardRec
Return type: void
Description: Draw a billboard texture defined by source
@@ -4026,7 +4031,7 @@ Function 473: DrawBillboardRec() (6 input parameters)
Param[4]: position (type: Vector3)
Param[5]: size (type: Vector2)
Param[6]: tint (type: Color)
-Function 474: DrawBillboardPro() (9 input parameters)
+Function 475: DrawBillboardPro() (9 input parameters)
Name: DrawBillboardPro
Return type: void
Description: Draw a billboard texture defined by source and rotation
@@ -4039,13 +4044,13 @@ Function 474: DrawBillboardPro() (9 input parameters)
Param[7]: origin (type: Vector2)
Param[8]: rotation (type: float)
Param[9]: tint (type: Color)
-Function 475: UploadMesh() (2 input parameters)
+Function 476: UploadMesh() (2 input parameters)
Name: UploadMesh
Return type: void
Description: Upload mesh vertex data in GPU and provide VAO/VBO ids
Param[1]: mesh (type: Mesh *)
Param[2]: dynamic (type: bool)
-Function 476: UpdateMeshBuffer() (5 input parameters)
+Function 477: UpdateMeshBuffer() (5 input parameters)
Name: UpdateMeshBuffer
Return type: void
Description: Update mesh vertex data in GPU for a specific buffer index
@@ -4054,19 +4059,19 @@ Function 476: UpdateMeshBuffer() (5 input parameters)
Param[3]: data (type: const void *)
Param[4]: dataSize (type: int)
Param[5]: offset (type: int)
-Function 477: UnloadMesh() (1 input parameters)
+Function 478: UnloadMesh() (1 input parameters)
Name: UnloadMesh
Return type: void
Description: Unload mesh data from CPU and GPU
Param[1]: mesh (type: Mesh)
-Function 478: DrawMesh() (3 input parameters)
+Function 479: DrawMesh() (3 input parameters)
Name: DrawMesh
Return type: void
Description: Draw a 3d mesh with material and transform
Param[1]: mesh (type: Mesh)
Param[2]: material (type: Material)
Param[3]: transform (type: Matrix)
-Function 479: DrawMeshInstanced() (4 input parameters)
+Function 480: DrawMeshInstanced() (4 input parameters)
Name: DrawMeshInstanced
Return type: void
Description: Draw multiple mesh instances with material and different transforms
@@ -4074,35 +4079,35 @@ Function 479: DrawMeshInstanced() (4 input parameters)
Param[2]: material (type: Material)
Param[3]: transforms (type: const Matrix *)
Param[4]: instances (type: int)
-Function 480: GetMeshBoundingBox() (1 input parameters)
+Function 481: GetMeshBoundingBox() (1 input parameters)
Name: GetMeshBoundingBox
Return type: BoundingBox
Description: Compute mesh bounding box limits
Param[1]: mesh (type: Mesh)
-Function 481: GenMeshTangents() (1 input parameters)
+Function 482: GenMeshTangents() (1 input parameters)
Name: GenMeshTangents
Return type: void
Description: Compute mesh tangents
Param[1]: mesh (type: Mesh *)
-Function 482: ExportMesh() (2 input parameters)
+Function 483: ExportMesh() (2 input parameters)
Name: ExportMesh
Return type: bool
Description: Export mesh data to file, returns true on success
Param[1]: mesh (type: Mesh)
Param[2]: fileName (type: const char *)
-Function 483: ExportMeshAsCode() (2 input parameters)
+Function 484: ExportMeshAsCode() (2 input parameters)
Name: ExportMeshAsCode
Return type: bool
Description: Export mesh as code file (.h) defining multiple arrays of vertex attributes
Param[1]: mesh (type: Mesh)
Param[2]: fileName (type: const char *)
-Function 484: GenMeshPoly() (2 input parameters)
+Function 485: GenMeshPoly() (2 input parameters)
Name: GenMeshPoly
Return type: Mesh
Description: Generate polygonal mesh
Param[1]: sides (type: int)
Param[2]: radius (type: float)
-Function 485: GenMeshPlane() (4 input parameters)
+Function 486: GenMeshPlane() (4 input parameters)
Name: GenMeshPlane
Return type: Mesh
Description: Generate plane mesh (with subdivisions)
@@ -4110,42 +4115,42 @@ Function 485: GenMeshPlane() (4 input parameters)
Param[2]: length (type: float)
Param[3]: resX (type: int)
Param[4]: resZ (type: int)
-Function 486: GenMeshCube() (3 input parameters)
+Function 487: GenMeshCube() (3 input parameters)
Name: GenMeshCube
Return type: Mesh
Description: Generate cuboid mesh
Param[1]: width (type: float)
Param[2]: height (type: float)
Param[3]: length (type: float)
-Function 487: GenMeshSphere() (3 input parameters)
+Function 488: GenMeshSphere() (3 input parameters)
Name: GenMeshSphere
Return type: Mesh
Description: Generate sphere mesh (standard sphere)
Param[1]: radius (type: float)
Param[2]: rings (type: int)
Param[3]: slices (type: int)
-Function 488: GenMeshHemiSphere() (3 input parameters)
+Function 489: GenMeshHemiSphere() (3 input parameters)
Name: GenMeshHemiSphere
Return type: Mesh
Description: Generate half-sphere mesh (no bottom cap)
Param[1]: radius (type: float)
Param[2]: rings (type: int)
Param[3]: slices (type: int)
-Function 489: GenMeshCylinder() (3 input parameters)
+Function 490: GenMeshCylinder() (3 input parameters)
Name: GenMeshCylinder
Return type: Mesh
Description: Generate cylinder mesh
Param[1]: radius (type: float)
Param[2]: height (type: float)
Param[3]: slices (type: int)
-Function 490: GenMeshCone() (3 input parameters)
+Function 491: GenMeshCone() (3 input parameters)
Name: GenMeshCone
Return type: Mesh
Description: Generate cone/pyramid mesh
Param[1]: radius (type: float)
Param[2]: height (type: float)
Param[3]: slices (type: int)
-Function 491: GenMeshTorus() (4 input parameters)
+Function 492: GenMeshTorus() (4 input parameters)
Name: GenMeshTorus
Return type: Mesh
Description: Generate torus mesh
@@ -4153,7 +4158,7 @@ Function 491: GenMeshTorus() (4 input parameters)
Param[2]: size (type: float)
Param[3]: radSeg (type: int)
Param[4]: sides (type: int)
-Function 492: GenMeshKnot() (4 input parameters)
+Function 493: GenMeshKnot() (4 input parameters)
Name: GenMeshKnot
Return type: Mesh
Description: Generate trefoil knot mesh
@@ -4161,91 +4166,91 @@ Function 492: GenMeshKnot() (4 input parameters)
Param[2]: size (type: float)
Param[3]: radSeg (type: int)
Param[4]: sides (type: int)
-Function 493: GenMeshHeightmap() (2 input parameters)
+Function 494: GenMeshHeightmap() (2 input parameters)
Name: GenMeshHeightmap
Return type: Mesh
Description: Generate heightmap mesh from image data
Param[1]: heightmap (type: Image)
Param[2]: size (type: Vector3)
-Function 494: GenMeshCubicmap() (2 input parameters)
+Function 495: GenMeshCubicmap() (2 input parameters)
Name: GenMeshCubicmap
Return type: Mesh
Description: Generate cubes-based map mesh from image data
Param[1]: cubicmap (type: Image)
Param[2]: cubeSize (type: Vector3)
-Function 495: LoadMaterials() (2 input parameters)
+Function 496: LoadMaterials() (2 input parameters)
Name: LoadMaterials
Return type: Material *
Description: Load materials from model file
Param[1]: fileName (type: const char *)
Param[2]: materialCount (type: int *)
-Function 496: LoadMaterialDefault() (0 input parameters)
+Function 497: LoadMaterialDefault() (0 input parameters)
Name: LoadMaterialDefault
Return type: Material
Description: Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
No input parameters
-Function 497: IsMaterialValid() (1 input parameters)
+Function 498: IsMaterialValid() (1 input parameters)
Name: IsMaterialValid
Return type: bool
Description: Check if a material is valid (shader assigned, map textures loaded in GPU)
Param[1]: material (type: Material)
-Function 498: UnloadMaterial() (1 input parameters)
+Function 499: UnloadMaterial() (1 input parameters)
Name: UnloadMaterial
Return type: void
Description: Unload material from GPU memory (VRAM)
Param[1]: material (type: Material)
-Function 499: SetMaterialTexture() (3 input parameters)
+Function 500: SetMaterialTexture() (3 input parameters)
Name: SetMaterialTexture
Return type: void
Description: Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)
Param[1]: material (type: Material *)
Param[2]: mapType (type: int)
Param[3]: texture (type: Texture2D)
-Function 500: SetModelMeshMaterial() (3 input parameters)
+Function 501: SetModelMeshMaterial() (3 input parameters)
Name: SetModelMeshMaterial
Return type: void
Description: Set material for a mesh
Param[1]: model (type: Model *)
Param[2]: meshId (type: int)
Param[3]: materialId (type: int)
-Function 501: LoadModelAnimations() (2 input parameters)
+Function 502: LoadModelAnimations() (2 input parameters)
Name: LoadModelAnimations
Return type: ModelAnimation *
Description: Load model animations from file
Param[1]: fileName (type: const char *)
Param[2]: animCount (type: int *)
-Function 502: UpdateModelAnimation() (3 input parameters)
+Function 503: UpdateModelAnimation() (3 input parameters)
Name: UpdateModelAnimation
Return type: void
Description: Update model animation pose (CPU)
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
Param[3]: frame (type: int)
-Function 503: UpdateModelAnimationBones() (3 input parameters)
+Function 504: UpdateModelAnimationBones() (3 input parameters)
Name: UpdateModelAnimationBones
Return type: void
Description: Update model animation mesh bone matrices (GPU skinning)
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
Param[3]: frame (type: int)
-Function 504: UnloadModelAnimation() (1 input parameters)
+Function 505: UnloadModelAnimation() (1 input parameters)
Name: UnloadModelAnimation
Return type: void
Description: Unload animation data
Param[1]: anim (type: ModelAnimation)
-Function 505: UnloadModelAnimations() (2 input parameters)
+Function 506: UnloadModelAnimations() (2 input parameters)
Name: UnloadModelAnimations
Return type: void
Description: Unload animation array data
Param[1]: animations (type: ModelAnimation *)
Param[2]: animCount (type: int)
-Function 506: IsModelAnimationValid() (2 input parameters)
+Function 507: IsModelAnimationValid() (2 input parameters)
Name: IsModelAnimationValid
Return type: bool
Description: Check model animation skeleton match
Param[1]: model (type: Model)
Param[2]: anim (type: ModelAnimation)
-Function 507: CheckCollisionSpheres() (4 input parameters)
+Function 508: CheckCollisionSpheres() (4 input parameters)
Name: CheckCollisionSpheres
Return type: bool
Description: Check collision between two spheres
@@ -4253,40 +4258,40 @@ Function 507: CheckCollisionSpheres() (4 input parameters)
Param[2]: radius1 (type: float)
Param[3]: center2 (type: Vector3)
Param[4]: radius2 (type: float)
-Function 508: CheckCollisionBoxes() (2 input parameters)
+Function 509: CheckCollisionBoxes() (2 input parameters)
Name: CheckCollisionBoxes
Return type: bool
Description: Check collision between two bounding boxes
Param[1]: box1 (type: BoundingBox)
Param[2]: box2 (type: BoundingBox)
-Function 509: CheckCollisionBoxSphere() (3 input parameters)
+Function 510: CheckCollisionBoxSphere() (3 input parameters)
Name: CheckCollisionBoxSphere
Return type: bool
Description: Check collision between box and sphere
Param[1]: box (type: BoundingBox)
Param[2]: center (type: Vector3)
Param[3]: radius (type: float)
-Function 510: GetRayCollisionSphere() (3 input parameters)
+Function 511: GetRayCollisionSphere() (3 input parameters)
Name: GetRayCollisionSphere
Return type: RayCollision
Description: Get collision info between ray and sphere
Param[1]: ray (type: Ray)
Param[2]: center (type: Vector3)
Param[3]: radius (type: float)
-Function 511: GetRayCollisionBox() (2 input parameters)
+Function 512: GetRayCollisionBox() (2 input parameters)
Name: GetRayCollisionBox
Return type: RayCollision
Description: Get collision info between ray and box
Param[1]: ray (type: Ray)
Param[2]: box (type: BoundingBox)
-Function 512: GetRayCollisionMesh() (3 input parameters)
+Function 513: GetRayCollisionMesh() (3 input parameters)
Name: GetRayCollisionMesh
Return type: RayCollision
Description: Get collision info between ray and mesh
Param[1]: ray (type: Ray)
Param[2]: mesh (type: Mesh)
Param[3]: transform (type: Matrix)
-Function 513: GetRayCollisionTriangle() (4 input parameters)
+Function 514: GetRayCollisionTriangle() (4 input parameters)
Name: GetRayCollisionTriangle
Return type: RayCollision
Description: Get collision info between ray and triangle
@@ -4294,7 +4299,7 @@ Function 513: GetRayCollisionTriangle() (4 input parameters)
Param[2]: p1 (type: Vector3)
Param[3]: p2 (type: Vector3)
Param[4]: p3 (type: Vector3)
-Function 514: GetRayCollisionQuad() (5 input parameters)
+Function 515: GetRayCollisionQuad() (5 input parameters)
Name: GetRayCollisionQuad
Return type: RayCollision
Description: Get collision info between ray and quad
@@ -4303,158 +4308,158 @@ Function 514: GetRayCollisionQuad() (5 input parameters)
Param[3]: p2 (type: Vector3)
Param[4]: p3 (type: Vector3)
Param[5]: p4 (type: Vector3)
-Function 515: InitAudioDevice() (0 input parameters)
+Function 516: InitAudioDevice() (0 input parameters)
Name: InitAudioDevice
Return type: void
Description: Initialize audio device and context
No input parameters
-Function 516: CloseAudioDevice() (0 input parameters)
+Function 517: CloseAudioDevice() (0 input parameters)
Name: CloseAudioDevice
Return type: void
Description: Close the audio device and context
No input parameters
-Function 517: IsAudioDeviceReady() (0 input parameters)
+Function 518: IsAudioDeviceReady() (0 input parameters)
Name: IsAudioDeviceReady
Return type: bool
Description: Check if audio device has been initialized successfully
No input parameters
-Function 518: SetMasterVolume() (1 input parameters)
+Function 519: SetMasterVolume() (1 input parameters)
Name: SetMasterVolume
Return type: void
Description: Set master volume (listener)
Param[1]: volume (type: float)
-Function 519: GetMasterVolume() (0 input parameters)
+Function 520: GetMasterVolume() (0 input parameters)
Name: GetMasterVolume
Return type: float
Description: Get master volume (listener)
No input parameters
-Function 520: LoadWave() (1 input parameters)
+Function 521: LoadWave() (1 input parameters)
Name: LoadWave
Return type: Wave
Description: Load wave data from file
Param[1]: fileName (type: const char *)
-Function 521: LoadWaveFromMemory() (3 input parameters)
+Function 522: LoadWaveFromMemory() (3 input parameters)
Name: LoadWaveFromMemory
Return type: Wave
Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
Param[1]: fileType (type: const char *)
Param[2]: fileData (type: const unsigned char *)
Param[3]: dataSize (type: int)
-Function 522: IsWaveValid() (1 input parameters)
+Function 523: IsWaveValid() (1 input parameters)
Name: IsWaveValid
Return type: bool
Description: Checks if wave data is valid (data loaded and parameters)
Param[1]: wave (type: Wave)
-Function 523: LoadSound() (1 input parameters)
+Function 524: LoadSound() (1 input parameters)
Name: LoadSound
Return type: Sound
Description: Load sound from file
Param[1]: fileName (type: const char *)
-Function 524: LoadSoundFromWave() (1 input parameters)
+Function 525: LoadSoundFromWave() (1 input parameters)
Name: LoadSoundFromWave
Return type: Sound
Description: Load sound from wave data
Param[1]: wave (type: Wave)
-Function 525: LoadSoundAlias() (1 input parameters)
+Function 526: LoadSoundAlias() (1 input parameters)
Name: LoadSoundAlias
Return type: Sound
Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data
Param[1]: source (type: Sound)
-Function 526: IsSoundValid() (1 input parameters)
+Function 527: IsSoundValid() (1 input parameters)
Name: IsSoundValid
Return type: bool
Description: Checks if a sound is valid (data loaded and buffers initialized)
Param[1]: sound (type: Sound)
-Function 527: UpdateSound() (3 input parameters)
+Function 528: UpdateSound() (3 input parameters)
Name: UpdateSound
Return type: void
Description: Update sound buffer with new data
Param[1]: sound (type: Sound)
Param[2]: data (type: const void *)
Param[3]: sampleCount (type: int)
-Function 528: UnloadWave() (1 input parameters)
+Function 529: UnloadWave() (1 input parameters)
Name: UnloadWave
Return type: void
Description: Unload wave data
Param[1]: wave (type: Wave)
-Function 529: UnloadSound() (1 input parameters)
+Function 530: UnloadSound() (1 input parameters)
Name: UnloadSound
Return type: void
Description: Unload sound
Param[1]: sound (type: Sound)
-Function 530: UnloadSoundAlias() (1 input parameters)
+Function 531: UnloadSoundAlias() (1 input parameters)
Name: UnloadSoundAlias
Return type: void
Description: Unload a sound alias (does not deallocate sample data)
Param[1]: alias (type: Sound)
-Function 531: ExportWave() (2 input parameters)
+Function 532: ExportWave() (2 input parameters)
Name: ExportWave
Return type: bool
Description: Export wave data to file, returns true on success
Param[1]: wave (type: Wave)
Param[2]: fileName (type: const char *)
-Function 532: ExportWaveAsCode() (2 input parameters)
+Function 533: ExportWaveAsCode() (2 input parameters)
Name: ExportWaveAsCode
Return type: bool
Description: Export wave sample data to code (.h), returns true on success
Param[1]: wave (type: Wave)
Param[2]: fileName (type: const char *)
-Function 533: PlaySound() (1 input parameters)
+Function 534: PlaySound() (1 input parameters)
Name: PlaySound
Return type: void
Description: Play a sound
Param[1]: sound (type: Sound)
-Function 534: StopSound() (1 input parameters)
+Function 535: StopSound() (1 input parameters)
Name: StopSound
Return type: void
Description: Stop playing a sound
Param[1]: sound (type: Sound)
-Function 535: PauseSound() (1 input parameters)
+Function 536: PauseSound() (1 input parameters)
Name: PauseSound
Return type: void
Description: Pause a sound
Param[1]: sound (type: Sound)
-Function 536: ResumeSound() (1 input parameters)
+Function 537: ResumeSound() (1 input parameters)
Name: ResumeSound
Return type: void
Description: Resume a paused sound
Param[1]: sound (type: Sound)
-Function 537: IsSoundPlaying() (1 input parameters)
+Function 538: IsSoundPlaying() (1 input parameters)
Name: IsSoundPlaying
Return type: bool
Description: Check if a sound is currently playing
Param[1]: sound (type: Sound)
-Function 538: SetSoundVolume() (2 input parameters)
+Function 539: SetSoundVolume() (2 input parameters)
Name: SetSoundVolume
Return type: void
Description: Set volume for a sound (1.0 is max level)
Param[1]: sound (type: Sound)
Param[2]: volume (type: float)
-Function 539: SetSoundPitch() (2 input parameters)
+Function 540: SetSoundPitch() (2 input parameters)
Name: SetSoundPitch
Return type: void
Description: Set pitch for a sound (1.0 is base level)
Param[1]: sound (type: Sound)
Param[2]: pitch (type: float)
-Function 540: SetSoundPan() (2 input parameters)
+Function 541: SetSoundPan() (2 input parameters)
Name: SetSoundPan
Return type: void
Description: Set pan for a sound (0.5 is center)
Param[1]: sound (type: Sound)
Param[2]: pan (type: float)
-Function 541: WaveCopy() (1 input parameters)
+Function 542: WaveCopy() (1 input parameters)
Name: WaveCopy
Return type: Wave
Description: Copy a wave to a new wave
Param[1]: wave (type: Wave)
-Function 542: WaveCrop() (3 input parameters)
+Function 543: WaveCrop() (3 input parameters)
Name: WaveCrop
Return type: void
Description: Crop a wave to defined frames range
Param[1]: wave (type: Wave *)
Param[2]: initFrame (type: int)
Param[3]: finalFrame (type: int)
-Function 543: WaveFormat() (4 input parameters)
+Function 544: WaveFormat() (4 input parameters)
Name: WaveFormat
Return type: void
Description: Convert wave data to desired format
@@ -4462,203 +4467,203 @@ Function 543: WaveFormat() (4 input parameters)
Param[2]: sampleRate (type: int)
Param[3]: sampleSize (type: int)
Param[4]: channels (type: int)
-Function 544: LoadWaveSamples() (1 input parameters)
+Function 545: LoadWaveSamples() (1 input parameters)
Name: LoadWaveSamples
Return type: float *
Description: Load samples data from wave as a 32bit float data array
Param[1]: wave (type: Wave)
-Function 545: UnloadWaveSamples() (1 input parameters)
+Function 546: UnloadWaveSamples() (1 input parameters)
Name: UnloadWaveSamples
Return type: void
Description: Unload samples data loaded with LoadWaveSamples()
Param[1]: samples (type: float *)
-Function 546: LoadMusicStream() (1 input parameters)
+Function 547: LoadMusicStream() (1 input parameters)
Name: LoadMusicStream
Return type: Music
Description: Load music stream from file
Param[1]: fileName (type: const char *)
-Function 547: LoadMusicStreamFromMemory() (3 input parameters)
+Function 548: LoadMusicStreamFromMemory() (3 input parameters)
Name: LoadMusicStreamFromMemory
Return type: Music
Description: Load music stream from data
Param[1]: fileType (type: const char *)
Param[2]: data (type: const unsigned char *)
Param[3]: dataSize (type: int)
-Function 548: IsMusicValid() (1 input parameters)
+Function 549: IsMusicValid() (1 input parameters)
Name: IsMusicValid
Return type: bool
Description: Checks if a music stream is valid (context and buffers initialized)
Param[1]: music (type: Music)
-Function 549: UnloadMusicStream() (1 input parameters)
+Function 550: UnloadMusicStream() (1 input parameters)
Name: UnloadMusicStream
Return type: void
Description: Unload music stream
Param[1]: music (type: Music)
-Function 550: PlayMusicStream() (1 input parameters)
+Function 551: PlayMusicStream() (1 input parameters)
Name: PlayMusicStream
Return type: void
Description: Start music playing
Param[1]: music (type: Music)
-Function 551: IsMusicStreamPlaying() (1 input parameters)
+Function 552: IsMusicStreamPlaying() (1 input parameters)
Name: IsMusicStreamPlaying
Return type: bool
Description: Check if music is playing
Param[1]: music (type: Music)
-Function 552: UpdateMusicStream() (1 input parameters)
+Function 553: UpdateMusicStream() (1 input parameters)
Name: UpdateMusicStream
Return type: void
Description: Updates buffers for music streaming
Param[1]: music (type: Music)
-Function 553: StopMusicStream() (1 input parameters)
+Function 554: StopMusicStream() (1 input parameters)
Name: StopMusicStream
Return type: void
Description: Stop music playing
Param[1]: music (type: Music)
-Function 554: PauseMusicStream() (1 input parameters)
+Function 555: PauseMusicStream() (1 input parameters)
Name: PauseMusicStream
Return type: void
Description: Pause music playing
Param[1]: music (type: Music)
-Function 555: ResumeMusicStream() (1 input parameters)
+Function 556: ResumeMusicStream() (1 input parameters)
Name: ResumeMusicStream
Return type: void
Description: Resume playing paused music
Param[1]: music (type: Music)
-Function 556: SeekMusicStream() (2 input parameters)
+Function 557: SeekMusicStream() (2 input parameters)
Name: SeekMusicStream
Return type: void
Description: Seek music to a position (in seconds)
Param[1]: music (type: Music)
Param[2]: position (type: float)
-Function 557: SetMusicVolume() (2 input parameters)
+Function 558: SetMusicVolume() (2 input parameters)
Name: SetMusicVolume
Return type: void
Description: Set volume for music (1.0 is max level)
Param[1]: music (type: Music)
Param[2]: volume (type: float)
-Function 558: SetMusicPitch() (2 input parameters)
+Function 559: SetMusicPitch() (2 input parameters)
Name: SetMusicPitch
Return type: void
Description: Set pitch for a music (1.0 is base level)
Param[1]: music (type: Music)
Param[2]: pitch (type: float)
-Function 559: SetMusicPan() (2 input parameters)
+Function 560: SetMusicPan() (2 input parameters)
Name: SetMusicPan
Return type: void
Description: Set pan for a music (0.5 is center)
Param[1]: music (type: Music)
Param[2]: pan (type: float)
-Function 560: GetMusicTimeLength() (1 input parameters)
+Function 561: GetMusicTimeLength() (1 input parameters)
Name: GetMusicTimeLength
Return type: float
Description: Get music time length (in seconds)
Param[1]: music (type: Music)
-Function 561: GetMusicTimePlayed() (1 input parameters)
+Function 562: GetMusicTimePlayed() (1 input parameters)
Name: GetMusicTimePlayed
Return type: float
Description: Get current music time played (in seconds)
Param[1]: music (type: Music)
-Function 562: LoadAudioStream() (3 input parameters)
+Function 563: LoadAudioStream() (3 input parameters)
Name: LoadAudioStream
Return type: AudioStream
Description: Load audio stream (to stream raw audio pcm data)
Param[1]: sampleRate (type: unsigned int)
Param[2]: sampleSize (type: unsigned int)
Param[3]: channels (type: unsigned int)
-Function 563: IsAudioStreamValid() (1 input parameters)
+Function 564: IsAudioStreamValid() (1 input parameters)
Name: IsAudioStreamValid
Return type: bool
Description: Checks if an audio stream is valid (buffers initialized)
Param[1]: stream (type: AudioStream)
-Function 564: UnloadAudioStream() (1 input parameters)
+Function 565: UnloadAudioStream() (1 input parameters)
Name: UnloadAudioStream
Return type: void
Description: Unload audio stream and free memory
Param[1]: stream (type: AudioStream)
-Function 565: UpdateAudioStream() (3 input parameters)
+Function 566: UpdateAudioStream() (3 input parameters)
Name: UpdateAudioStream
Return type: void
Description: Update audio stream buffers with data
Param[1]: stream (type: AudioStream)
Param[2]: data (type: const void *)
Param[3]: frameCount (type: int)
-Function 566: IsAudioStreamProcessed() (1 input parameters)
+Function 567: IsAudioStreamProcessed() (1 input parameters)
Name: IsAudioStreamProcessed
Return type: bool
Description: Check if any audio stream buffers requires refill
Param[1]: stream (type: AudioStream)
-Function 567: PlayAudioStream() (1 input parameters)
+Function 568: PlayAudioStream() (1 input parameters)
Name: PlayAudioStream
Return type: void
Description: Play audio stream
Param[1]: stream (type: AudioStream)
-Function 568: PauseAudioStream() (1 input parameters)
+Function 569: PauseAudioStream() (1 input parameters)
Name: PauseAudioStream
Return type: void
Description: Pause audio stream
Param[1]: stream (type: AudioStream)
-Function 569: ResumeAudioStream() (1 input parameters)
+Function 570: ResumeAudioStream() (1 input parameters)
Name: ResumeAudioStream
Return type: void
Description: Resume audio stream
Param[1]: stream (type: AudioStream)
-Function 570: IsAudioStreamPlaying() (1 input parameters)
+Function 571: IsAudioStreamPlaying() (1 input parameters)
Name: IsAudioStreamPlaying
Return type: bool
Description: Check if audio stream is playing
Param[1]: stream (type: AudioStream)
-Function 571: StopAudioStream() (1 input parameters)
+Function 572: StopAudioStream() (1 input parameters)
Name: StopAudioStream
Return type: void
Description: Stop audio stream
Param[1]: stream (type: AudioStream)
-Function 572: SetAudioStreamVolume() (2 input parameters)
+Function 573: SetAudioStreamVolume() (2 input parameters)
Name: SetAudioStreamVolume
Return type: void
Description: Set volume for audio stream (1.0 is max level)
Param[1]: stream (type: AudioStream)
Param[2]: volume (type: float)
-Function 573: SetAudioStreamPitch() (2 input parameters)
+Function 574: SetAudioStreamPitch() (2 input parameters)
Name: SetAudioStreamPitch
Return type: void
Description: Set pitch for audio stream (1.0 is base level)
Param[1]: stream (type: AudioStream)
Param[2]: pitch (type: float)
-Function 574: SetAudioStreamPan() (2 input parameters)
+Function 575: SetAudioStreamPan() (2 input parameters)
Name: SetAudioStreamPan
Return type: void
Description: Set pan for audio stream (0.5 is centered)
Param[1]: stream (type: AudioStream)
Param[2]: pan (type: float)
-Function 575: SetAudioStreamBufferSizeDefault() (1 input parameters)
+Function 576: SetAudioStreamBufferSizeDefault() (1 input parameters)
Name: SetAudioStreamBufferSizeDefault
Return type: void
Description: Default size for new audio streams
Param[1]: size (type: int)
-Function 576: SetAudioStreamCallback() (2 input parameters)
+Function 577: SetAudioStreamCallback() (2 input parameters)
Name: SetAudioStreamCallback
Return type: void
Description: Audio thread callback to request new data
Param[1]: stream (type: AudioStream)
Param[2]: callback (type: AudioCallback)
-Function 577: AttachAudioStreamProcessor() (2 input parameters)
+Function 578: AttachAudioStreamProcessor() (2 input parameters)
Name: AttachAudioStreamProcessor
Return type: void
Description: Attach audio stream processor to stream, receives the samples as 'float'
Param[1]: stream (type: AudioStream)
Param[2]: processor (type: AudioCallback)
-Function 578: DetachAudioStreamProcessor() (2 input parameters)
+Function 579: DetachAudioStreamProcessor() (2 input parameters)
Name: DetachAudioStreamProcessor
Return type: void
Description: Detach audio stream processor from stream
Param[1]: stream (type: AudioStream)
Param[2]: processor (type: AudioCallback)
-Function 579: AttachAudioMixedProcessor() (1 input parameters)
+Function 580: AttachAudioMixedProcessor() (1 input parameters)
Name: AttachAudioMixedProcessor
Return type: void
Description: Attach audio stream processor to the entire audio pipeline, receives the samples as 'float'
Param[1]: processor (type: AudioCallback)
-Function 580: DetachAudioMixedProcessor() (1 input parameters)
+Function 581: DetachAudioMixedProcessor() (1 input parameters)
Name: DetachAudioMixedProcessor
Return type: void
Description: Detach audio stream processor from the entire audio pipeline
diff --git a/parser/output/raylib_api.xml b/parser/output/raylib_api.xml
index 20cb502d..b91874cc 100644
--- a/parser/output/raylib_api.xml
+++ b/parser/output/raylib_api.xml
@@ -674,7 +674,7 @@
-
+
@@ -795,6 +795,8 @@
+
+
diff --git a/src/Makefile b/src/Makefile
index 1f0b730c..265f95ca 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -118,6 +118,8 @@ GLFW_LINUX_ENABLE_X11 ?= TRUE
# WARNING: Library is not included in raylib, it MUST be configured by users
SDL_INCLUDE_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/include
SDL_LIBRARY_PATH ?= $(RAYLIB_SRC_PATH)/external/SDL2/lib
+SDL_LIBRARIES ?= -lSDL2 -lSDL2main
+
# Determine if the file has root access (only required to install raylib)
# "whoami" prints the name of the user that calls him (so, if it is the root user, "whoami" prints "root")
@@ -460,7 +462,7 @@ CFLAGS += $(CUSTOM_CFLAGS)
# Define include paths for required headers: INCLUDE_PATHS
# NOTE: Several external required libraries (stb and others)
#------------------------------------------------------------------------------------------------
-INCLUDE_PATHS = -I.
+INCLUDE_PATHS = -I. $(EXTRA_INCLUDE_PATHS)
# Define additional directories containing required header files
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
@@ -586,7 +588,7 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL)
LDLIBS += -lX11
endif
endif
- LDLIBS += -lSDL2 -lSDL2main
+ LDLIBS += $(SDL_LIBRARIES)
endif
ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_RGFW)
ifeq ($(PLATFORM_OS),WINDOWS)
diff --git a/src/config.h b/src/config.h
index f37a9de3..e3749c56 100644
--- a/src/config.h
+++ b/src/config.h
@@ -71,6 +71,7 @@
// Enabling this flag allows manual control of the frame processes, use at your own risk
//#define SUPPORT_CUSTOM_FRAME_CONTROL 1
+
// rcore: Configuration values
//------------------------------------------------------------------------------------
#define MAX_FILEPATH_CAPACITY 8192 // Maximum file paths capacity
@@ -272,4 +273,31 @@
//------------------------------------------------------------------------------------
#define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message
+
+// Enable partial support for clipboard image, only working on SDL3 or
+// being on both Windows OS + GLFW or Windows OS + RGFW
+#define SUPPORT_CLIPBOARD_IMAGE 1
+
+#if defined(SUPPORT_CLIPBOARD_IMAGE)
+ #ifndef STBI_REQUIRED
+ #define STBI_REQUIRED
+ #endif
+
+ #ifndef SUPPORT_FILEFORMAT_BMP // For clipboard image on Windows
+ #define SUPPORT_FILEFORMAT_BMP 1
+ #endif
+
+ #ifndef SUPPORT_FILEFORMAT_PNG // Wayland uses png for prints, at least it was on 22 LTS ubuntu
+ #define SUPPORT_FILEFORMAT_PNG 1
+ #endif
+
+ #ifndef SUPPORT_FILEFORMAT_JPG
+ #define SUPPORT_FILEFORMAT_JPG 1
+ #endif
+
+ #ifndef SUPPORT_MODULE_RTEXTURES
+ #define SUPPORT_MODULE_RTEXTURES 1
+ #endif
+#endif
+
#endif // CONFIG_H
diff --git a/src/external/win32_clipboard.h b/src/external/win32_clipboard.h
new file mode 100644
index 00000000..83285643
--- /dev/null
+++ b/src/external/win32_clipboard.h
@@ -0,0 +1,374 @@
+#if !defined(_WIN32)
+# error "This module is only made for Windows OS"
+#endif
+
+#ifndef WIN32_CLIPBOARD_
+#define WIN32_CLIPBOARD_
+unsigned char* Win32GetClipboardImageData(int* width, int* height, unsigned long long int *dataSize);
+#endif // WIN32_CLIPBOARD_
+
+#ifdef WIN32_CLIPBOARD_IMPLEMENTATION
+#include
+#include
+#include
+#include
+
+// NOTE: These search for architecture is taken from "Windows.h", and it's necessary if we really don't wanna import windows.h
+// and still make it compile on msvc, because import indirectly importing "winnt.h" (e.g. ) can cause problems is these are not defined.
+#if !defined(_X86_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_IX86)
+#define _X86_
+#if !defined(_CHPE_X86_ARM64_) && defined(_M_HYBRID)
+#define _CHPE_X86_ARM64_
+#endif
+#endif
+
+#if !defined(_AMD64_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && (defined(_M_AMD64) || defined(_M_ARM64EC))
+#define _AMD64_
+#endif
+
+#if !defined(_ARM_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_ARM)
+#define _ARM_
+#endif
+
+#if !defined(_ARM64_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64EC_) && defined(_M_ARM64)
+#define _ARM64_
+#endif
+
+#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_ARM64EC)
+#define _ARM64EC_
+#endif
+
+#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_M68K)
+#define _68K_
+#endif
+
+#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_MPPC)
+#define _MPPC_
+#endif
+
+#if !defined(_IA64_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_M_IX86) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_IA64)
+#define _IA64_
+#endif
+
+
+#define WIN32_LEAN_AND_MEAN
+// #include
+// #include
+// #include
+#include
+// #include
+
+#ifndef WINAPI
+#if defined(_ARM_)
+#define WINAPI
+#else
+#define WINAPI __stdcall
+#endif
+#endif
+
+#ifndef WINAPI
+#if defined(_ARM_)
+#define WINAPI
+#else
+#define WINAPI __stdcall
+#endif
+#endif
+
+#ifndef WINBASEAPI
+#ifndef _KERNEL32_
+#define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
+#endif
+#endif
+
+#ifndef WINUSERAPI
+#ifndef _USER32_
+#define WINUSERAPI __declspec (dllimport)
+#else
+#define WINUSERAPI
+#endif
+#endif
+
+typedef int WINBOOL;
+
+
+
+// typedef HANDLE HGLOBAL;
+
+#ifndef HWND
+#define HWND void*
+#endif
+
+
+#if !defined(_WINUSER_) || !defined(WINUSER_ALREADY_INCLUDED)
+WINUSERAPI WINBOOL WINAPI OpenClipboard(HWND hWndNewOwner);
+WINUSERAPI WINBOOL WINAPI CloseClipboard(VOID);
+WINUSERAPI DWORD WINAPI GetClipboardSequenceNumber(VOID);
+WINUSERAPI HWND WINAPI GetClipboardOwner(VOID);
+WINUSERAPI HWND WINAPI SetClipboardViewer(HWND hWndNewViewer);
+WINUSERAPI HWND WINAPI GetClipboardViewer(VOID);
+WINUSERAPI WINBOOL WINAPI ChangeClipboardChain(HWND hWndRemove, HWND hWndNewNext);
+WINUSERAPI HANDLE WINAPI SetClipboardData(UINT uFormat, HANDLE hMem);
+WINUSERAPI HANDLE WINAPI GetClipboardData(UINT uFormat);
+WINUSERAPI UINT WINAPI RegisterClipboardFormatA(LPCSTR lpszFormat);
+WINUSERAPI UINT WINAPI RegisterClipboardFormatW(LPCWSTR lpszFormat);
+WINUSERAPI int WINAPI CountClipboardFormats(VOID);
+WINUSERAPI UINT WINAPI EnumClipboardFormats(UINT format);
+WINUSERAPI int WINAPI GetClipboardFormatNameA(UINT format, LPSTR lpszFormatName, int cchMaxCount);
+WINUSERAPI int WINAPI GetClipboardFormatNameW(UINT format, LPWSTR lpszFormatName, int cchMaxCount);
+WINUSERAPI WINBOOL WINAPI EmptyClipboard(VOID);
+WINUSERAPI WINBOOL WINAPI IsClipboardFormatAvailable(UINT format);
+WINUSERAPI int WINAPI GetPriorityClipboardFormat(UINT *paFormatPriorityList, int cFormats);
+WINUSERAPI HWND WINAPI GetOpenClipboardWindow(VOID);
+#endif
+
+#ifndef HGLOBAL
+#define HGLOBAL void*
+#endif
+
+#if !defined(_WINBASE_) || !defined(WINBASE_ALREADY_INCLUDED)
+WINBASEAPI SIZE_T WINAPI GlobalSize (HGLOBAL hMem);
+WINBASEAPI LPVOID WINAPI GlobalLock (HGLOBAL hMem);
+WINBASEAPI WINBOOL WINAPI GlobalUnlock (HGLOBAL hMem);
+#endif
+
+
+#if !defined(_WINGDI_) || !defined(WINGDI_ALREADY_INCLUDED)
+#ifndef BITMAPINFOHEADER_ALREADY_DEFINED
+#define BITMAPINFOHEADER_ALREADY_DEFINED
+// Does this header need to be packed ? by the windowps header it doesnt seem to be
+#pragma pack(push, 1)
+typedef struct tagBITMAPINFOHEADER {
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
+#pragma pack(pop)
+#endif
+
+#ifndef BITMAPFILEHEADER_ALREADY_DEFINED
+#define BITMAPFILEHEADER_ALREADY_DEFINED
+#pragma pack(push, 1)
+typedef struct tagBITMAPFILEHEADER {
+ WORD bfType;
+ DWORD bfSize;
+ WORD bfReserved1;
+ WORD bfReserved2;
+ DWORD bfOffBits;
+} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
+#pragma pack(pop)
+#endif
+
+#ifndef RGBQUAD_ALREADY_DEFINED
+#define RGBQUAD_ALREADY_DEFINED
+typedef struct tagRGBQUAD {
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+ BYTE rgbReserved;
+} RGBQUAD, *LPRGBQUAD;
+#endif
+
+
+// https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wmf/4e588f70-bd92-4a6f-b77f-35d0feaf7a57
+#define BI_RGB 0x0000
+#define BI_RLE8 0x0001
+#define BI_RLE4 0x0002
+#define BI_BITFIELDS 0x0003
+#define BI_JPEG 0x0004
+#define BI_PNG 0x0005
+#define BI_CMYK 0x000B
+#define BI_CMYKRLE8 0x000C
+#define BI_CMYKRLE4 0x000D
+
+#endif
+
+// https://learn.microsoft.com/en-us/windows/win32/dataxchg/standard-clipboard-formats
+#define CF_DIB 8
+
+// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setsystemcursor
+// #define OCR_NORMAL 32512 // Normal select
+// #define OCR_IBEAM 32513 // Text select
+// #define OCR_WAIT 32514 // Busy
+// #define OCR_CROSS 32515 // Precision select
+// #define OCR_UP 32516 // Alternate select
+// #define OCR_SIZENWSE 32642 // Diagonal resize 1
+// #define OCR_SIZENESW 32643 // Diagonal resize 2
+// #define OCR_SIZEWE 32644 // Horizontal resize
+// #define OCR_SIZENS 32645 // Vertical resize
+// #define OCR_SIZEALL 32646 // Move
+// #define OCR_NO 32648 // Unavailable
+// #define OCR_HAND 32649 // Link select
+// #define OCR_APPSTARTING 32650 //
+
+
+//----------------------------------------------------------------------------------
+// Module Internal Functions Declaration
+//----------------------------------------------------------------------------------
+
+
+static BOOL OpenClipboardRetrying(HWND handle); // Open clipboard with a number of retries
+static int GetPixelDataOffset(BITMAPINFOHEADER bih);
+
+unsigned char* Win32GetClipboardImageData(int* width, int* height, unsigned long long int *dataSize)
+{
+ HWND win = NULL; // Get from somewhere but is doesnt seem to matter
+ const char* msgString = "";
+ int severity = LOG_INFO;
+ BYTE* bmpData = NULL;
+ if (!OpenClipboardRetrying(win)) {
+ severity = LOG_ERROR;
+ msgString = "Couldn't open clipboard";
+ goto end;
+ }
+
+ HGLOBAL clipHandle = (HGLOBAL)GetClipboardData(CF_DIB);
+ if (!clipHandle) {
+ severity = LOG_ERROR;
+ msgString = "Clipboard data is not an Image";
+ goto close;
+ }
+
+ BITMAPINFOHEADER *bmpInfoHeader = (BITMAPINFOHEADER *)GlobalLock(clipHandle);
+ if (!bmpInfoHeader) {
+ // Mapping from HGLOBAL to our local *address space* failed
+ severity = LOG_ERROR;
+ msgString = "Clipboard data failed to be locked";
+ goto unlock;
+ }
+
+ *width = bmpInfoHeader->biWidth;
+ *height = bmpInfoHeader->biHeight;
+
+ SIZE_T clipDataSize = GlobalSize(clipHandle);
+ if (clipDataSize < sizeof(BITMAPINFOHEADER)) {
+ // Format CF_DIB needs space for BITMAPINFOHEADER struct.
+ msgString = "Clipboard has Malformed data";
+ severity = LOG_ERROR;
+ goto unlock;
+ }
+
+ // Denotes where the pixel data starts from the bmpInfoHeader pointer
+ int pixelOffset = GetPixelDataOffset(*bmpInfoHeader);
+
+ //--------------------------------------------------------------------------------//
+ //
+ // The rest of the section is about create the bytes for a correct BMP file
+ // Then we copy the data and to a pointer
+ //
+ //--------------------------------------------------------------------------------//
+
+ BITMAPFILEHEADER bmpFileHeader = {0};
+ SIZE_T bmpFileSize = sizeof(bmpFileHeader) + clipDataSize;
+ *dataSize = bmpFileSize;
+
+ bmpFileHeader.bfType = 0x4D42; //https://stackoverflow.com/questions/601430/multibyte-character-constants-and-bitmap-file-header-type-constants#601536
+
+ bmpFileHeader.bfSize = (DWORD)bmpFileSize; // Up to 4GB works fine
+ bmpFileHeader.bfOffBits = sizeof(bmpFileHeader) + pixelOffset;
+
+ //
+ // Each process has a default heap provided by the system
+ // Memory objects allocated by GlobalAlloc and LocalAlloc are in private,
+ // committed pages with read/write access that cannot be accessed by other processes.
+ //
+ // This may be wrong since we might be allocating in a DLL and freeing from another module, the main application
+ // that may cause heap corruption. We could create a FreeImage function
+ //
+ bmpData = malloc(sizeof(bmpFileHeader) + clipDataSize);
+ // First we add the header for a bmp file
+ memcpy(bmpData, &bmpFileHeader, sizeof(bmpFileHeader));
+ // Then we add the header for the bmp itself + the pixel data
+ memcpy(bmpData + sizeof(bmpFileHeader), bmpInfoHeader, clipDataSize);
+ msgString = "Clipboad image acquired successfully";
+
+
+unlock:
+ GlobalUnlock(clipHandle);
+close:
+ CloseClipboard();
+end:
+
+ TRACELOG(severity, msgString);
+ return bmpData;
+}
+
+static BOOL OpenClipboardRetrying(HWND hWnd)
+{
+ static const int maxTries = 20;
+ static const int sleepTimeMS = 60;
+ for (int _ = 0; _ < maxTries; ++_)
+ {
+ // Might be being hold by another process
+ // Or yourself forgot to CloseClipboard
+ if (OpenClipboard(hWnd)) {
+ return true;
+ }
+ Sleep(sleepTimeMS);
+ }
+ return false;
+}
+
+// Based off of researching microsoft docs and reponses from this question https://stackoverflow.com/questions/30552255/how-to-read-a-bitmap-from-the-windows-clipboard#30552856
+// https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader
+// Get the byte offset where does the pixels data start (from a packed DIB)
+static int GetPixelDataOffset(BITMAPINFOHEADER bih)
+{
+ int offset = 0;
+ const unsigned int rgbaSize = sizeof(RGBQUAD);
+
+ // biSize Specifies the number of bytes required by the structure
+ // We expect to always be 40 because it should be packed
+ if (40 == bih.biSize && 40 == sizeof(BITMAPINFOHEADER))
+ {
+ //
+ // biBitCount Specifies the number of bits per pixel.
+ // Might exist some bit masks *after* the header and *before* the pixel offset
+ // we're looking, but only if we have more than
+ // 8 bits per pixel, so we need to ajust for that
+ //
+ if (bih.biBitCount > 8)
+ {
+ // if bih.biCompression is RBG we should NOT offset more
+
+ if (bih.biCompression == BI_BITFIELDS)
+ {
+ offset += 3 * rgbaSize;
+ } else if (bih.biCompression == 6 /* BI_ALPHABITFIELDS */)
+ {
+ // Not widely supported, but valid.
+ offset += 4 * rgbaSize;
+ }
+ }
+ }
+
+ //
+ // biClrUsed Specifies the number of color indices in the color table that are actually used by the bitmap.
+ // If this value is zero, the bitmap uses the maximum number of colors
+ // corresponding to the value of the biBitCount member for the compression mode specified by biCompression.
+ // If biClrUsed is nonzero and the biBitCount member is less than 16
+ // the biClrUsed member specifies the actual number of colors
+ //
+ if (bih.biClrUsed > 0) {
+ offset += bih.biClrUsed * rgbaSize;
+ } else {
+ if (bih.biBitCount < 16)
+ {
+ offset = offset + (rgbaSize << bih.biBitCount);
+ }
+ }
+
+ return bih.biSize + offset;
+}
+#endif // WIN32_CLIPBOARD_IMPLEMENTATION
+// EOF
+
diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c
index 45811e76..e765debc 100644
--- a/src/platforms/rcore_desktop_glfw.c
+++ b/src/platforms/rcore_desktop_glfw.c
@@ -58,6 +58,7 @@
#if defined(_WIN32)
typedef void *PVOID;
typedef PVOID HANDLE;
+ #include "../external/win32_clipboard.h"
typedef HANDLE HWND;
#define GLFW_EXPOSE_NATIVE_WIN32
#define GLFW_NATIVE_INCLUDE_NONE // To avoid some symbols re-definition in windows.h
@@ -966,6 +967,33 @@ const char *GetClipboardText(void)
return glfwGetClipboardString(platform.handle);
}
+#if defined(SUPPORT_CLIPBOARD_IMAGE)
+// Get clipboard image
+Image GetClipboardImage(void)
+{
+ Image image = {0};
+ unsigned long long int dataSize = 0;
+ void* fileData = NULL;
+
+#ifdef _WIN32
+ int width, height;
+ fileData = (void*)Win32GetClipboardImageData(&width, &height, &dataSize);
+#else
+ TRACELOG(LOG_WARNING, "Clipboard image: PLATFORM_DESKTOP_GLFW doesn't implement `GetClipboardImage` for this OS");
+#endif
+
+ if (fileData == NULL)
+ {
+ TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data.");
+ }
+ else
+ {
+ image = LoadImageFromMemory(".bmp", fileData, dataSize);
+ }
+ return image;
+}
+#endif // SUPPORT_CLIPBOARD_IMAGE
+
// Show mouse cursor
void ShowCursor(void)
{
@@ -1898,4 +1926,8 @@ static void JoystickCallback(int jid, int event)
}
}
+#ifdef _WIN32
+# define WIN32_CLIPBOARD_IMPLEMENTATION
+# include "../external/win32_clipboard.h"
+#endif
// EOF
diff --git a/src/platforms/rcore_desktop_rgfw.c b/src/platforms/rcore_desktop_rgfw.c
index 68885ce3..f3f26e3e 100644
--- a/src/platforms/rcore_desktop_rgfw.c
+++ b/src/platforms/rcore_desktop_rgfw.c
@@ -664,6 +664,43 @@ const char *GetClipboardText(void)
return RGFW_readClipboard(NULL);
}
+
+#if defined(SUPPORT_CLIPBOARD_IMAGE)
+
+#ifdef _WIN32
+# define WIN32_CLIPBOARD_IMPLEMENTATION
+# define WINUSER_ALREADY_INCLUDED
+# define WINBASE_ALREADY_INCLUDED
+# define WINGDI_ALREADY_INCLUDED
+# include "../external/win32_clipboard.h"
+#endif
+
+// Get clipboard image
+Image GetClipboardImage(void)
+{
+ Image image = {0};
+ unsigned long long int dataSize = 0;
+ void* fileData = NULL;
+
+#ifdef _WIN32
+ int width, height;
+ fileData = (void*)Win32GetClipboardImageData(&width, &height, &dataSize);
+#else
+ TRACELOG(LOG_WARNING, "Clipboard image: PLATFORM_DESKTOP_RGFW doesn't implement `GetClipboardImage` for this OS");
+#endif
+
+ if (fileData == NULL)
+ {
+ TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data.");
+ }
+ else
+ {
+ image = LoadImageFromMemory(".bmp", fileData, dataSize);
+ }
+ return image;
+}
+#endif // SUPPORT_CLIPBOARD_IMAGE
+
// Show mouse cursor
void ShowCursor(void)
{
diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c
index 7cbe0354..a201f2cd 100644
--- a/src/platforms/rcore_desktop_sdl.c
+++ b/src/platforms/rcore_desktop_sdl.c
@@ -23,7 +23,7 @@
* Custom flag for rcore on target platform -not used-
*
* DEPENDENCIES:
-* - SDL 2 (main library): Windowing and inputs management
+* - SDL 2 or SLD 3 (main library): Windowing and inputs management
* - gestures: Gestures system for touch-ready devices (or simulated from mouse inputs)
*
*
@@ -48,6 +48,10 @@
*
**********************************************************************************************/
+
+#ifndef SDL_ENABLE_OLD_NAMES
+ #define SDL_ENABLE_OLD_NAMES // Just in case we're on SDL3, we need some in-between compatibily
+#endif
#include "SDL.h" // SDL base library (window/rendered, input, timing... functionality)
#if defined(GRAPHICS_API_OPENGL_ES2)
@@ -64,6 +68,13 @@
#define MAX_CLIPBOARD_BUFFER_LENGTH 1024 // Size of the clipboard buffer used on GetClipboardText()
#endif
+#if ((defined(SDL_MAJOR_VERSION) && SDL_MAJOR_VERSION == 3) && (defined(SDL_MINOR_VERSION) && SDL_MINOR_VERSION >= 1))
+ #ifndef PLATFORM_DESKTOP_SDL3
+ #define PLATFORM_DESKTOP_SDL3
+ #endif
+#endif
+
+
//----------------------------------------------------------------------------------
// Types and Structures Definition
//----------------------------------------------------------------------------------
@@ -227,6 +238,190 @@ static const int CursorsLUT[] = {
//SDL_SYSTEM_CURSOR_WAITARROW, // No equivalent implemented on MouseCursor enum on raylib.h
};
+
+// SDL3 Migration Layer made to avoid `ifdefs` inside functions when we can.
+#ifdef PLATFORM_DESKTOP_SDL3
+
+// SDL3 Migration:
+// SDL_WINDOW_FULLSCREEN_DESKTOP has been removed,
+// and you can call SDL_GetWindowFullscreenMode()
+// to see whether an exclusive fullscreen mode will be used
+// or the borderless fullscreen desktop mode will be used
+#define SDL_WINDOW_FULLSCREEN_DESKTOP SDL_WINDOW_FULLSCREEN
+
+
+#define SDL_IGNORE false
+#define SDL_DISABLE false
+#define SDL_ENABLE true
+
+// SDL3 Migration: SDL_INIT_TIMER - no longer needed before calling SDL_AddTimer()
+#define SDL_INIT_TIMER 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|)
+
+// SDL3 Migration: The SDL_WINDOW_SHOWN flag has been removed. Windows are shown by default and can be created hidden by using the SDL_WINDOW_HIDDEN flag.
+#define SDL_WINDOW_SHOWN 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|)
+
+//
+// SDL3 Migration: Renamed
+// IMPORTANT:
+// Might need to call SDL_CleanupEvent somewhere see :https://github.com/libsdl-org/SDL/issues/3540#issuecomment-1793449852
+//
+#define SDL_DROPFILE SDL_EVENT_DROP_FILE
+
+
+const char* SDL_GameControllerNameForIndex(int joystickIndex)
+{
+ // NOTE: SDL3 uses the IDs itself (SDL_JoystickID) instead of SDL2 joystick_index
+ const char* name = NULL;
+ int numJoysticks = 0;
+ SDL_JoystickID *joysticks = SDL_GetJoysticks(&numJoysticks);
+ if (joysticks) {
+ if (joystickIndex < numJoysticks) {
+ SDL_JoystickID instance_id = joysticks[joystickIndex];
+ name = SDL_GetGamepadNameForID(instance_id);
+ }
+ SDL_free(joysticks);
+ }
+ return name;
+}
+
+int SDL_GetNumVideoDisplays(void)
+{
+ int monitorCount = 0;
+ SDL_DisplayID *displays = SDL_GetDisplays(&monitorCount);
+ // Safe because If `mem` is NULL, SDL_free does nothing.
+ SDL_free(displays);
+
+ return monitorCount;
+}
+
+
+// SLD3 Migration:
+// To emulate SDL2 this function should return `SDL_DISABLE` or `SDL_ENABLE`
+// representing the *processing state* of the event before this function makes any changes to it.
+Uint8 SDL_EventState(Uint32 type, int state) {
+
+ Uint8 stateBefore = SDL_EventEnabled(type);
+ switch (state)
+ {
+ case SDL_DISABLE: SDL_SetEventEnabled(type, false); break;
+ case SDL_ENABLE: SDL_SetEventEnabled(type, true); break;
+ default: TRACELOG(LOG_WARNING, "Event sate: unknow type");
+ }
+ return stateBefore;
+}
+
+void SDL_GetCurrentDisplayMode_Adapter(SDL_DisplayID displayID, SDL_DisplayMode* mode)
+{
+ const SDL_DisplayMode* currMode = SDL_GetCurrentDisplayMode(displayID);
+ if (currMode == NULL)
+ {
+ TRACELOG(LOG_WARNING, "No current display mode");
+ }
+ else
+ {
+ *mode = *currMode;
+ }
+}
+
+// SDL3 Migration: Renamed
+#define SDL_GetCurrentDisplayMode SDL_GetCurrentDisplayMode_Adapter
+
+
+SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
+{
+ return SDL_CreateSurface(width, height, SDL_GetPixelFormatForMasks(depth, Rmask, Gmask, Bmask, Amask));
+}
+
+// SDL3 Migration:
+// SDL_GetDisplayDPI() -
+// not reliable across platforms, approximately replaced by multiplying
+// SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms.
+// returns 0 on success or a negative error code on failure
+int SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi) {
+ float dpi = SDL_GetWindowDisplayScale(platform.window) * 96.0;
+ if (ddpi != NULL) *ddpi = dpi;
+ if (hdpi != NULL) *hdpi = dpi;
+ if (vdpi != NULL) *vdpi = dpi;
+ return 0;
+}
+
+SDL_Surface *SDL_CreateRGBSurfaceWithFormat(Uint32 flags, int width, int height, int depth, Uint32 format)
+{
+ return SDL_CreateSurface(width, height, format);
+}
+
+SDL_Surface *SDL_CreateRGBSurfaceFrom(void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
+{
+ return SDL_CreateSurfaceFrom(width, height, SDL_GetPixelFormatForMasks(depth, Rmask, Gmask, Bmask, Amask), pixels, pitch);
+}
+
+SDL_Surface *SDL_CreateRGBSurfaceWithFormatFrom(void *pixels, int width, int height, int depth, int pitch, Uint32 format)
+{
+ return SDL_CreateSurfaceFrom(width, height, format, pixels, pitch);
+}
+
+int SDL_NumJoysticks(void)
+{
+ int numJoysticks;
+ SDL_JoystickID *joysticks = SDL_GetJoysticks(&numJoysticks);
+ SDL_free(joysticks);
+ return numJoysticks;
+}
+
+
+// SDL_SetRelativeMouseMode
+// returns 0 on success or a negative error code on failure
+// If relative mode is not supported, this returns -1.
+int SDL_SetRelativeMouseMode_Adapter(SDL_bool enabled)
+{
+
+ //
+ // SDL_SetWindowRelativeMouseMode(SDL_Window *window, bool enabled)
+ // \returns true on success or false on failure; call SDL_GetError() for more
+ //
+ if (SDL_SetWindowRelativeMouseMode(platform.window, enabled))
+ {
+ return 0; // success
+ }
+ else
+ {
+ return -1; // failure
+ }
+}
+
+#define SDL_SetRelativeMouseMode SDL_SetRelativeMouseMode_Adapter
+
+bool SDL_GetRelativeMouseMode_Adapter(void)
+{
+ return SDL_GetWindowRelativeMouseMode(platform.window);
+}
+
+#define SDL_GetRelativeMouseMode SDL_GetRelativeMouseMode_Adapter
+
+
+int SDL_GetNumTouchFingers(SDL_TouchID touchID)
+{
+ // SDL_Finger **SDL_GetTouchFingers(SDL_TouchID touchID, int *count)
+ int count = 0;
+ SDL_Finger **fingers = SDL_GetTouchFingers(touchID, &count);
+ SDL_free(fingers);
+ return count;
+}
+
+#else // We're on SDL2
+
+// Since SDL2 doesn't have this function we leave a stub
+// SDL_GetClipboardData function is available since SDL 3.1.3. (e.g. SDL3)
+void* SDL_GetClipboardData(const char *mime_type, size_t *size) {
+ TRACELOG(LOG_WARNING, "Getting clipboard data that is not text is only available in SDL3");
+ // We could possibly implement it ourselves in this case for some easier platforms
+ return NULL;
+}
+
+#endif // PLATFORM_DESKTOP_SDL3
+
+
+
//----------------------------------------------------------------------------------
// Module Internal Functions Declaration
//----------------------------------------------------------------------------------
@@ -256,7 +451,12 @@ void ToggleFullscreen(void)
{
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
const int monitorCount = SDL_GetNumVideoDisplays();
+
+#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
+ if ((monitor > 0) && (monitor <= monitorCount))
+#else
if ((monitor >= 0) && (monitor < monitorCount))
+#endif
{
if ((CORE.Window.flags & FLAG_FULLSCREEN_MODE) > 0)
{
@@ -279,7 +479,11 @@ void ToggleBorderlessWindowed(void)
{
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
const int monitorCount = SDL_GetNumVideoDisplays();
+#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
+ if ((monitor > 0) && (monitor <= monitorCount))
+#else
if ((monitor >= 0) && (monitor < monitorCount))
+#endif
{
if ((CORE.Window.flags & FLAG_BORDERLESS_WINDOWED_MODE) > 0)
{
@@ -328,7 +532,11 @@ void SetWindowState(unsigned int flags)
{
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
const int monitorCount = SDL_GetNumVideoDisplays();
+ #ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
+ if ((monitor > 0) && (monitor <= monitorCount))
+ #else
if ((monitor >= 0) && (monitor < monitorCount))
+ #endif
{
SDL_SetWindowFullscreen(platform.window, SDL_WINDOW_FULLSCREEN);
CORE.Window.fullscreen = true;
@@ -387,7 +595,11 @@ void SetWindowState(unsigned int flags)
{
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
const int monitorCount = SDL_GetNumVideoDisplays();
+ #ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
+ if ((monitor > 0) && (monitor <= monitorCount))
+ #else
if ((monitor >= 0) && (monitor < monitorCount))
+ #endif
{
SDL_SetWindowFullscreen(platform.window, SDL_WINDOW_FULLSCREEN_DESKTOP);
}
@@ -606,7 +818,11 @@ void SetWindowMonitor(int monitor)
const int screenWidth = CORE.Window.screen.width;
const int screenHeight = CORE.Window.screen.height;
SDL_Rect usableBounds;
+ #ifdef PLATFORM_DESKTOP_SDL3 // Different style for success checking
+ if (SDL_GetDisplayUsableBounds(monitor, &usableBounds))
+ #else
if (SDL_GetDisplayUsableBounds(monitor, &usableBounds) == 0)
+ #endif
{
if (wasFullscreen == 1) ToggleFullscreen(); // Leave fullscreen.
@@ -704,6 +920,7 @@ int GetCurrentMonitor(void)
{
int currentMonitor = 0;
+ // Be aware that this returns an ID in SDL3 and a Index in SDL2
currentMonitor = SDL_GetWindowDisplayIndex(platform.window);
return currentMonitor;
@@ -716,7 +933,11 @@ Vector2 GetMonitorPosition(int monitor)
if ((monitor >= 0) && (monitor < monitorCount))
{
SDL_Rect displayBounds;
+ #ifdef PLATFORM_DESKTOP_SDL3
+ if (SDL_GetDisplayUsableBounds(monitor, &displayBounds))
+ #else
if (SDL_GetDisplayUsableBounds(monitor, &displayBounds) == 0)
+ #endif
{
return (Vector2){ (float)displayBounds.x, (float)displayBounds.y };
}
@@ -844,10 +1065,16 @@ Vector2 GetWindowScaleDPI(void)
{
Vector2 scale = { 1.0f, 1.0f };
+#ifndef PLATFORM_DESKTOP_SDL3
// NOTE: SDL_GetWindowDisplayScale was only added on SDL3
// see https://wiki.libsdl.org/SDL3/SDL_GetWindowDisplayScale
// TODO: Implement the window scale factor calculation manually.
TRACELOG(LOG_WARNING, "GetWindowScaleDPI() not implemented on target platform");
+#else
+ scale.x = SDL_GetWindowDisplayScale(platform.window);
+ scale.y = scale.x;
+ TRACELOG(LOG_INFO, "WindowScaleDPI is %f", scale.x);
+#endif
return scale;
}
@@ -877,19 +1104,68 @@ const char *GetClipboardText(void)
return buffer;
}
+
+#if defined(SUPPORT_CLIPBOARD_IMAGE)
+// Get clipboard image
+Image GetClipboardImage(void)
+{
+ // Let's hope compiler put these arrays in static memory
+ const char *image_formats[] = {
+ "image/bmp",
+ "image/png",
+ "image/jpg",
+ "image/tiff",
+ };
+ const char *image_extensions[] = {
+ ".bmp",
+ ".png",
+ ".jpg",
+ ".tiff",
+ };
+
+
+ Image image = {0};
+ size_t dataSize = 0;
+ void *fileData = NULL;
+ for (int i = 0; i < SDL_arraysize(image_formats); ++i)
+ {
+ // NOTE: This pointer should be free with SDL_free() at some point.
+ fileData = SDL_GetClipboardData(image_formats[i], &dataSize);
+ if (fileData) {
+ image = LoadImageFromMemory(image_extensions[i], fileData, dataSize);
+ if (IsImageValid(image))
+ {
+ TRACELOG(LOG_INFO, "Clipboard image: Got image from clipboard as a `%s` successfully", image_extensions[i]);
+ return image;
+ }
+ }
+ }
+
+ TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data. %s", SDL_GetError());
+ return image;
+}
+#endif
+
+
// Show mouse cursor
void ShowCursor(void)
{
+#ifdef PLATFORM_DESKTOP_SDL3
+ SDL_ShowCursor();
+#else
SDL_ShowCursor(SDL_ENABLE);
-
+#endif
CORE.Input.Mouse.cursorHidden = false;
}
// Hides mouse cursor
void HideCursor(void)
{
+#ifdef PLATFORM_DESKTOP_SDL3
+ SDL_HideCursor();
+#else
SDL_ShowCursor(SDL_DISABLE);
-
+#endif
CORE.Input.Mouse.cursorHidden = true;
}
@@ -897,7 +1173,13 @@ void HideCursor(void)
void EnableCursor(void)
{
SDL_SetRelativeMouseMode(SDL_FALSE);
+
+#ifdef PLATFORM_DESKTOP_SDL3
+ // SDL_ShowCursor() has been split into three functions: SDL_ShowCursor(), SDL_HideCursor(), and SDL_CursorVisible()
+ SDL_ShowCursor();
+#else
SDL_ShowCursor(SDL_ENABLE);
+#endif
platform.cursorRelative = false;
CORE.Input.Mouse.cursorHidden = false;
@@ -993,6 +1275,22 @@ const char *GetKeyName(int key)
static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
{
+#ifdef PLATFORM_DESKTOP_SDL3 // SDL3
+ int count = 0;
+ SDL_Finger **fingers = SDL_GetTouchFingers(event.touchID, &count);
+ CORE.Input.Touch.pointCount = count;
+
+ for (int i = 0; i < CORE.Input.Touch.pointCount; i++)
+ {
+ SDL_Finger *finger = fingers[i];
+ CORE.Input.Touch.pointId[i] = finger->id;
+ CORE.Input.Touch.position[i].x = finger->x*CORE.Window.screen.width;
+ CORE.Input.Touch.position[i].y = finger->y*CORE.Window.screen.height;
+ CORE.Input.Touch.currentTouchState[i] = 1;
+ }
+ SDL_free(fingers);
+#else // SDL2
+
CORE.Input.Touch.pointCount = SDL_GetNumTouchFingers(event.touchId);
for (int i = 0; i < CORE.Input.Touch.pointCount; i++)
@@ -1003,6 +1301,7 @@ static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
CORE.Input.Touch.position[i].y = finger->y*CORE.Window.screen.height;
CORE.Input.Touch.currentTouchState[i] = 1;
}
+#endif
for (int i = CORE.Input.Touch.pointCount; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.currentTouchState[i] = 0;
}
@@ -1094,16 +1393,26 @@ void PollInputEvents(void)
CORE.Window.dropFilepaths = (char **)RL_CALLOC(1024, sizeof(char *));
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
+ #ifdef PLATFORM_DESKTOP_SDL3
+ // const char *data; /**< The text for SDL_EVENT_DROP_TEXT and the file name for SDL_EVENT_DROP_FILE, NULL for other events */
+ // Event memory is now managed by SDL, so you should not free the data in SDL_EVENT_DROP_FILE, and if you want to hold onto the text in SDL_EVENT_TEXT_EDITING and SDL_EVENT_TEXT_INPUT events, you should make a copy of it. SDL_TEXTINPUTEVENT_TEXT_SIZE is no longer necessary and has been removed.
+ strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
+ #else
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.file);
SDL_free(event.drop.file);
+ #endif
CORE.Window.dropFileCount++;
}
else if (CORE.Window.dropFileCount < 1024)
{
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
+ #ifdef PLATFORM_DESKTOP_SDL3
+ strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
+ #else
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.file);
SDL_free(event.drop.file);
+ #endif
CORE.Window.dropFileCount++;
}
@@ -1112,10 +1421,18 @@ void PollInputEvents(void)
} break;
// Window events are also polled (Minimized, maximized, close...)
+
+ #ifndef PLATFORM_DESKTOP_SDL3
+ // SDL3 states:
+ // The SDL_WINDOWEVENT_* events have been moved to top level events,
+ // and SDL_WINDOWEVENT has been removed.
+ // In general, handling this change just means checking for the individual events instead of first checking for SDL_WINDOWEVENT
+ // and then checking for window events. You can compare the event >= SDL_EVENT_WINDOW_FIRST and <= SDL_EVENT_WINDOW_LAST if you need to see whether it's a window event.
case SDL_WINDOWEVENT:
{
switch (event.window.event)
{
+ #endif
case SDL_WINDOWEVENT_RESIZED:
case SDL_WINDOWEVENT_SIZE_CHANGED:
{
@@ -1143,14 +1460,23 @@ void PollInputEvents(void)
case SDL_WINDOWEVENT_FOCUS_GAINED:
case SDL_WINDOWEVENT_MAXIMIZED:
case SDL_WINDOWEVENT_RESTORED:
+ #ifdef PLATFORM_DESKTOP_SDL3
+ break;
+ #else
default: break;
}
} break;
+ #endif
// Keyboard events
case SDL_KEYDOWN:
{
+ #ifdef PLATFORM_DESKTOP_SDL3
+ // SDL3 Migration: The following structures have been removed: * SDL_Keysym
+ KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
+ #else
KeyboardKey key = ConvertScancodeToKey(event.key.keysym.scancode);
+ #endif
if (key != KEY_NULL)
{
@@ -1175,7 +1501,12 @@ void PollInputEvents(void)
case SDL_KEYUP:
{
+
+ #ifdef PLATFORM_DESKTOP_SDL3
+ KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
+ #else
KeyboardKey key = ConvertScancodeToKey(event.key.keysym.scancode);
+ #endif
if (key != KEY_NULL) CORE.Input.Keyboard.currentKeyState[key] = 0;
} break;
@@ -1527,7 +1858,11 @@ int InitPlatform(void)
}
// Init window
+#ifdef PLATFORM_DESKTOP_SDL3
+ platform.window = SDL_CreateWindow(CORE.Window.title, CORE.Window.screen.width, CORE.Window.screen.height, flags);
+#else
platform.window = SDL_CreateWindow(CORE.Window.title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, CORE.Window.screen.width, CORE.Window.screen.height, flags);
+#endif
// Init OpenGL context
platform.glContext = SDL_GL_CreateContext(platform.window);
@@ -1611,7 +1946,12 @@ int InitPlatform(void)
CORE.Storage.basePath = SDL_GetBasePath(); // Alternative: GetWorkingDirectory();
//----------------------------------------------------------------------------
+
+#ifdef PLATFORM_DESKTOP_SDL3
+ TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL3): Initialized successfully");
+#else
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL): Initialized successfully");
+#endif
return 0;
}
diff --git a/src/raylib.h b/src/raylib.h
index e0822bb7..02b3ee73 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -1011,6 +1011,7 @@ RLAPI Vector2 GetWindowScaleDPI(void); // Get window
RLAPI const char *GetMonitorName(int monitor); // Get the human-readable, UTF-8 encoded name of the specified monitor
RLAPI void SetClipboardText(const char *text); // Set clipboard text content
RLAPI const char *GetClipboardText(void); // Get clipboard text content
+RLAPI Image GetClipboardImage(void); // Get clipboard image
RLAPI void EnableEventWaiting(void); // Enable waiting for events on EndDrawing(), no automatic event polling
RLAPI void DisableEventWaiting(void); // Disable waiting for events on EndDrawing(), automatic events polling
diff --git a/src/rcore.c b/src/rcore.c
index 75b9bf45..2d1808c1 100644
--- a/src/rcore.c
+++ b/src/rcore.c
@@ -512,6 +512,12 @@ const char *TextFormat(const char *text, ...); // Formatting of tex
#define PLATFORM_DESKTOP_GLFW
#endif
+#if defined(SUPPORT_CLIPBOARD_IMAGE)
+ #if !defined(SUPPORT_FILEFORMAT_BMP) || !defined(STBI_REQUIRED) || !defined(SUPPORT_MODULE_RTEXTURES)
+ #error "To enabled SUPPORT_CLIPBOARD_IMAGE, it also needs SUPPORT_FILEFORMAT_BMP, SUPPORT_MODULE_RTEXTURES and STBI_REQUIRED to be defined. It should have been defined earlier"
+ #endif
+#endif // SUPPORT_CLIPBOARD_IMAGE
+
// Include platform-specific submodules
#if defined(PLATFORM_DESKTOP_GLFW)
#include "platforms/rcore_desktop_glfw.c"
diff --git a/src/rmodels.c b/src/rmodels.c
index daabbe20..6ddb53ae 100644
--- a/src/rmodels.c
+++ b/src/rmodels.c
@@ -2262,108 +2262,6 @@ ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount)
return animations;
}
-// Update model animated vertex data (positions and normals) for a given frame
-// NOTE: Updated data is uploaded to GPU
-void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
-{
- if ((anim.frameCount > 0) && (anim.bones != NULL) && (anim.framePoses != NULL))
- {
- if (frame >= anim.frameCount) frame = frame%anim.frameCount;
-
- for (int m = 0; m < model.meshCount; m++)
- {
- Mesh mesh = model.meshes[m];
-
- if (mesh.boneIds == NULL || mesh.boneWeights == NULL)
- {
- TRACELOG(LOG_WARNING, "MODEL: UpdateModelAnimation(): Mesh %i has no connection to bones", m);
- continue;
- }
-
- bool updated = false; // Flag to check when anim vertex information is updated
- Vector3 animVertex = { 0 };
- Vector3 animNormal = { 0 };
-
- Vector3 inTranslation = { 0 };
- Quaternion inRotation = { 0 };
- // Vector3 inScale = { 0 };
-
- Vector3 outTranslation = { 0 };
- Quaternion outRotation = { 0 };
- Vector3 outScale = { 0 };
-
- int boneId = 0;
- int boneCounter = 0;
- float boneWeight = 0.0;
-
- const int vValues = mesh.vertexCount*3;
- for (int vCounter = 0; vCounter < vValues; vCounter += 3)
- {
- mesh.animVertices[vCounter] = 0;
- mesh.animVertices[vCounter + 1] = 0;
- mesh.animVertices[vCounter + 2] = 0;
-
- if (mesh.animNormals != NULL)
- {
- mesh.animNormals[vCounter] = 0;
- mesh.animNormals[vCounter + 1] = 0;
- mesh.animNormals[vCounter + 2] = 0;
- }
-
- // Iterates over 4 bones per vertex
- for (int j = 0; j < 4; j++, boneCounter++)
- {
- boneWeight = mesh.boneWeights[boneCounter];
-
- // Early stop when no transformation will be applied
- if (boneWeight == 0.0f) continue;
-
- boneId = mesh.boneIds[boneCounter];
- //int boneIdParent = model.bones[boneId].parent;
- inTranslation = model.bindPose[boneId].translation;
- inRotation = model.bindPose[boneId].rotation;
- //inScale = model.bindPose[boneId].scale;
- outTranslation = anim.framePoses[frame][boneId].translation;
- outRotation = anim.framePoses[frame][boneId].rotation;
- outScale = anim.framePoses[frame][boneId].scale;
-
- // Vertices processing
- // NOTE: We use meshes.vertices (default vertex position) to calculate meshes.animVertices (animated vertex position)
- animVertex = (Vector3){ mesh.vertices[vCounter], mesh.vertices[vCounter + 1], mesh.vertices[vCounter + 2] };
- animVertex = Vector3Subtract(animVertex, inTranslation);
- animVertex = Vector3Multiply(animVertex, outScale);
- animVertex = Vector3RotateByQuaternion(animVertex, QuaternionMultiply(outRotation, QuaternionInvert(inRotation)));
- animVertex = Vector3Add(animVertex, outTranslation);
- //animVertex = Vector3Transform(animVertex, model.transform);
- mesh.animVertices[vCounter] += animVertex.x*boneWeight;
- mesh.animVertices[vCounter + 1] += animVertex.y*boneWeight;
- mesh.animVertices[vCounter + 2] += animVertex.z*boneWeight;
- updated = true;
-
- // Normals processing
- // NOTE: We use meshes.baseNormals (default normal) to calculate meshes.normals (animated normals)
- if (mesh.normals != NULL)
- {
- animNormal = (Vector3){ mesh.normals[vCounter], mesh.normals[vCounter + 1], mesh.normals[vCounter + 2] };
- animNormal = Vector3RotateByQuaternion(animNormal, QuaternionMultiply(outRotation, QuaternionInvert(inRotation)));
- mesh.animNormals[vCounter] += animNormal.x*boneWeight;
- mesh.animNormals[vCounter + 1] += animNormal.y*boneWeight;
- mesh.animNormals[vCounter + 2] += animNormal.z*boneWeight;
- }
- }
- }
-
- // Upload new vertex data to GPU for model drawing
- // NOTE: Only update data when values changed
- if (updated)
- {
- rlUpdateVertexBuffer(mesh.vboId[0], mesh.animVertices, mesh.vertexCount*3*sizeof(float), 0); // Update vertex position
- rlUpdateVertexBuffer(mesh.vboId[2], mesh.animNormals, mesh.vertexCount*3*sizeof(float), 0); // Update vertex normals
- }
- }
- }
-}
-
// Update model animated bones transform matrices for a given frame
// NOTE: Updated data is not uploaded to GPU but kept at model.meshes[i].boneMatrices[boneId],
// to be uploaded to shader at drawing, in case GPU skinning is enabled
@@ -2411,6 +2309,66 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
}
}
+// at least 2x speed up vs the old method
+// Update model animated vertex data (positions and normals) for a given frame
+// NOTE: Updated data is uploaded to GPU
+void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
+{
+ UpdateModelAnimationBones(model,anim,frame);
+ for (int m = 0; m < model.meshCount; m++)
+ {
+ Mesh mesh = model.meshes[m];
+ Vector3 animVertex = { 0 };
+ Vector3 animNormal = { 0 };
+ int boneId = 0;
+ int boneCounter = 0;
+ float boneWeight = 0.0;
+ bool updated = false; // Flag to check when anim vertex information is updated
+ const int vValues = mesh.vertexCount*3;
+ for (int vCounter = 0; vCounter < vValues; vCounter += 3)
+ {
+ mesh.animVertices[vCounter] = 0;
+ mesh.animVertices[vCounter + 1] = 0;
+ mesh.animVertices[vCounter + 2] = 0;
+ if (mesh.animNormals != NULL)
+ {
+ mesh.animNormals[vCounter] = 0;
+ mesh.animNormals[vCounter + 1] = 0;
+ mesh.animNormals[vCounter + 2] = 0;
+ }
+ // Iterates over 4 bones per vertex
+ for (int j = 0; j < 4; j++, boneCounter++)
+ {
+ boneWeight = mesh.boneWeights[boneCounter];
+ boneId = mesh.boneIds[boneCounter];
+ // Early stop when no transformation will be applied
+ if (boneWeight == 0.0f) continue;
+ animVertex = (Vector3){ mesh.vertices[vCounter], mesh.vertices[vCounter + 1], mesh.vertices[vCounter + 2] };
+ animVertex = Vector3Transform(animVertex,model.meshes[m].boneMatrices[boneId]);
+ mesh.animVertices[vCounter] += animVertex.x * boneWeight;
+ mesh.animVertices[vCounter+1] += animVertex.y * boneWeight;
+ mesh.animVertices[vCounter+2] += animVertex.z * boneWeight;
+ updated = true;
+ // Normals processing
+ // NOTE: We use meshes.baseNormals (default normal) to calculate meshes.normals (animated normals)
+ if (mesh.normals != NULL)
+ {
+ animNormal = (Vector3){ mesh.normals[vCounter], mesh.normals[vCounter + 1], mesh.normals[vCounter + 2] };
+ animNormal = Vector3Transform(animNormal,model.meshes[m].boneMatrices[boneId]);
+ mesh.animNormals[vCounter] += animNormal.x*boneWeight;
+ mesh.animNormals[vCounter + 1] += animNormal.y*boneWeight;
+ mesh.animNormals[vCounter + 2] += animNormal.z*boneWeight;
+ }
+ }
+ }
+ if (updated)
+ {
+ rlUpdateVertexBuffer(mesh.vboId[0], mesh.animVertices, mesh.vertexCount*3*sizeof(float), 0); // Update vertex position
+ rlUpdateVertexBuffer(mesh.vboId[2], mesh.animNormals, mesh.vertexCount*3*sizeof(float), 0); // Update vertex normals
+ }
+ }
+}
+
// Unload animation array data
void UnloadModelAnimations(ModelAnimation *animations, int animCount)
{
diff --git a/src/rtextures.c b/src/rtextures.c
index c798bdcb..2d269d7f 100644
--- a/src/rtextures.c
+++ b/src/rtextures.c
@@ -828,15 +828,15 @@ Image GenImageGradientLinear(int width, int height, int direction, Color start,
float sinDir = sinf(radianDirection);
// Calculate how far the top-left pixel is along the gradient direction from the center of said gradient
- float startingPos = 0.5 - (cosDir*width/2) - (sinDir*height/2);
+ float startingPos = 0.5f - (cosDir*width/2) - (sinDir*height/2);
// With directions that lie in the first or third quadrant (i.e. from top-left to
// bottom-right or vice-versa), pixel (0, 0) is the farthest point on the gradient
// (i.e. the pixel which should become one of the gradient's ends color); while for
// directions that lie in the second or fourth quadrant, that point is pixel (width, 0).
float maxPosValue =
((signbit(sinDir) != 0) == (signbit(cosDir) != 0))
- ? fabs(startingPos)
- : fabs(startingPos+width*cosDir);
+ ? fabsf(startingPos)
+ : fabsf(startingPos+width*cosDir);
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)