From 3eee232f104fde682aa26984a0053fda1b04a298 Mon Sep 17 00:00:00 2001 From: Nikolas Date: Sun, 3 Aug 2025 13:56:43 +0200 Subject: [PATCH] Make codepoints in loadFontData optional (#263) --- lib/preludes/raylib-prelude.zig | 15 ++++++++++++--- lib/raylib.zig | 15 ++++++++++++--- lib/rlgl.zig | 4 ++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/preludes/raylib-prelude.zig b/lib/preludes/raylib-prelude.zig index 72bf52c..7811db2 100644 --- a/lib/preludes/raylib-prelude.zig +++ b/lib/preludes/raylib-prelude.zig @@ -2192,14 +2192,23 @@ pub fn loadFontFromImage(image: Image, key: Color, firstChar: i32) RaylibError!F } /// Load font data for further use -pub fn loadFontData(fileData: []const u8, fontSize: i32, fontChars: []i32, ty: FontType) RaylibError![]GlyphInfo { +pub fn loadFontData(fileData: []const u8, fontSize: i32, codePoints: ?[]i32, ty: FontType) RaylibError![]GlyphInfo { var res: []GlyphInfo = undefined; - const ptr = cdef.LoadFontData(@as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)), @as(c_int, fontSize), @as([*c]c_int, @ptrCast(fontChars)), @as(c_int, @intCast(fontChars.len)), ty); + var codePointsFinal = @as([*c]i32, 0); + var codePointsLen: i32 = 0; + if (codePoints) |codePointsSure| { + codePointsFinal = @as([*c]i32, @ptrCast(codePointsSure)); + codePointsLen = @as(i32, @intCast(codePointsSure.len)); + } else { + codePointsLen = 95; + } + + const ptr = cdef.LoadFontData(@as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)), @as(c_int, fontSize), codePointsFinal, @as(c_int, @intCast(codePointsLen)), ty); if (ptr == 0) return RaylibError.LoadFontData; res.ptr = @as([*]GlyphInfo, @ptrCast(ptr)); - res.len = @as(usize, @intCast(fontChars.len)); + res.len = @as(usize, @intCast(codePointsLen)); return res; } diff --git a/lib/raylib.zig b/lib/raylib.zig index 2501acf..c83efa8 100644 --- a/lib/raylib.zig +++ b/lib/raylib.zig @@ -2192,14 +2192,23 @@ pub fn loadFontFromImage(image: Image, key: Color, firstChar: i32) RaylibError!F } /// Load font data for further use -pub fn loadFontData(fileData: []const u8, fontSize: i32, fontChars: []i32, ty: FontType) RaylibError![]GlyphInfo { +pub fn loadFontData(fileData: []const u8, fontSize: i32, codePoints: ?[]i32, ty: FontType) RaylibError![]GlyphInfo { var res: []GlyphInfo = undefined; - const ptr = cdef.LoadFontData(@as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)), @as(c_int, fontSize), @as([*c]c_int, @ptrCast(fontChars)), @as(c_int, @intCast(fontChars.len)), ty); + var codePointsFinal = @as([*c]i32, 0); + var codePointsLen: i32 = 0; + if (codePoints) |codePointsSure| { + codePointsFinal = @as([*c]i32, @ptrCast(codePointsSure)); + codePointsLen = @as(i32, @intCast(codePointsSure.len)); + } else { + codePointsLen = 95; + } + + const ptr = cdef.LoadFontData(@as([*c]const u8, @ptrCast(fileData)), @as(c_int, @intCast(fileData.len)), @as(c_int, fontSize), codePointsFinal, @as(c_int, @intCast(codePointsLen)), ty); if (ptr == 0) return RaylibError.LoadFontData; res.ptr = @as([*]GlyphInfo, @ptrCast(ptr)); - res.len = @as(usize, @intCast(fontChars.len)); + res.len = @as(usize, @intCast(codePointsLen)); return res; } diff --git a/lib/rlgl.zig b/lib/rlgl.zig index b260568..c592cf9 100644 --- a/lib/rlgl.zig +++ b/lib/rlgl.zig @@ -192,8 +192,8 @@ pub const rl_default_batch_drawcalls = @as(i32, 256); pub const rl_default_batch_max_texture_units = @as(i32, 4); pub const rl_max_matrix_stack_size = @as(i32, 32); pub const rl_max_shader_locations = @as(i32, 32); -pub const rl_cull_distance_near = @as(f64, 0.01); -pub const rl_cull_distance_far = @as(f64, 1000.0); +pub const rl_cull_distance_near = @as(f64, 0.05); +pub const rl_cull_distance_far = @as(f64, 4000.0); pub const rl_texture_wrap_s = @as(i32, 0x2802); pub const rl_texture_wrap_t = @as(i32, 0x2803); pub const rl_texture_mag_filter = @as(i32, 0x2800);