diff --git a/lib/generate_functions.py b/lib/generate_functions.py index 2062212..3a68f0f 100644 --- a/lib/generate_functions.py +++ b/lib/generate_functions.py @@ -248,7 +248,13 @@ def parse_header(header_name: str, output_file: str, ext_file: str, prefix: str, "LoadFileData", "SaveFileData", "ExportDataAsCode", - "LoadImageFromMemory" + "LoadImageFromMemory", + "DrawMeshInstanced", + "UnloadModelAnimations", + "CompressData", + "DecompressData", + "EncodeDataBase64", + "DecodeDataBase64" ] if func_name in manual or "FromMemory" in func_name: diff --git a/lib/preludes/raylib-zig-prelude.zig b/lib/preludes/raylib-zig-prelude.zig index 5e97b1e..a0d32c0 100755 --- a/lib/preludes/raylib-zig-prelude.zig +++ b/lib/preludes/raylib-zig-prelude.zig @@ -412,7 +412,7 @@ pub const Mesh = extern struct { } pub fn drawInstanced(self: Mesh, material: Material, transforms: []const Matrix) void { - rl.drawMeshInstanced(self, material, transforms, transforms.len); + rl.drawMeshInstanced(self, material, transforms); } }; @@ -995,8 +995,40 @@ pub fn saveFileData(fileName: [:0]const u8, data: []anyopaque) bool { return cdef.SaveFileData(@ptrCast([*c]const u8, fileName), @ptrCast(*anyopaque, data.ptr), @intCast(c_uint, data.len)); } -pub fn exportDataAsCode(data: [:0]const u8, fileName: [:0]const u8) bool { - return cdef.ExportDataAsCode(@ptrCast([*c]const u8, data), @as(c_uint, data.len), @ptrCast([*c]const u8, fileName)); +pub fn exportDataAsCode(data: []const u8, fileName: [:0]const u8) bool { + return cdef.ExportDataAsCode(@ptrCast([*c]const u8, data), @intCast(c_uint, data.len), @ptrCast([*c]const u8, fileName)); +} + +pub fn compressData(data: []const u8) [:0]u8 { + var compDataSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.CompressData(@ptrCast([*c]const u8, data), @intCast(c_int, data.len), @ptrCast([*c]c_int, &compDataSize)); + res.len = @intCast(usize, compDataSize); + return res; +} + +pub fn decompressData(compData: []const u8) [:0]u8 { + var dataSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.DecompressData(@ptrCast([*c]const u8, compData), @intCast(c_int, compData.len), @ptrCast([*c]c_int, &dataSize)); + res.len = @intCast(usize, dataSize); + return res; +} + +pub fn encodeDataBase64(data: []const u8) []u8 { + var outputSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.EncodeDataBase64(@ptrCast([*c]const u8, data), @intCast(c_int, data.len), @ptrCast([*c]c_int, &outputSize)); + res.len = @intCast(usize, outputSize); + return res; +} + +pub fn decodeDataBase64(data: []const u8) []u8 { + var outputSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.DecodeDataBase64(@ptrCast([*c]const u8, data), @ptrCast([*c]c_int, &outputSize)); + res.len = @intCast(usize, outputSize); + return res; } pub fn loadImageFromMemory(fileType: [:0]const u8, fileData: [:0]const u8) Image { @@ -1058,6 +1090,10 @@ pub fn textSplit(text: [:0]const u8, delimiter: u8) [][:0]const u8 { return res; } +pub fn drawMeshInstanced(mesh: Mesh, material: Material, transforms: []const Matrix) void { + cdef.DrawMeshInstanced(mesh, material, @ptrCast([*c]const Matrix, transforms), @intCast(c_int, transforms.len)); +} + pub fn loadMaterials(fileName: [:0]const u8) []Material { var materialCount = 0; var res: []Material = undefined; @@ -1074,8 +1110,12 @@ pub fn loadModelAnimations(fileName: [:0]const u8) []ModelAnimation { return res; } +pub fn unloadModelAnimations(animations: []ModelAnimation) void { + cdef.UnloadModelAnimations(@ptrCast([*c]ModelAnimation, animations), @intCast(c_uint, animations.len)); +} + pub fn loadWaveFromMemory(fileType: [:0]const u8, fileData: []const u8) Wave { - return cdef.LoadWaveFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileData), @as(c_int, fileData.len)); + return cdef.LoadWaveFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileData), @intCast(c_int, fileData.len)); } pub fn loadWaveSamples(wave: Wave) []f32 { @@ -1086,5 +1126,5 @@ pub fn loadWaveSamples(wave: Wave) []f32 { } pub fn loadMusicStreamFromMemory(fileType: [:0]const u8, data: []const u8) Music { - return cdef.LoadMusicStreamFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, data), @as(c_int, data.len)); + return cdef.LoadMusicStreamFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, data), @intCast(c_int, data.len)); } diff --git a/lib/raylib-zig.zig b/lib/raylib-zig.zig index 8cf4335..b7e3749 100644 --- a/lib/raylib-zig.zig +++ b/lib/raylib-zig.zig @@ -154,7 +154,7 @@ pub const Image = extern struct { mipmaps: c_int, format: PixelFormat, - pub fn init(fileName: []const u8) Image { + pub fn init(fileName: [:0]const u8) Image { return rl.loadImage(fileName); } @@ -412,7 +412,7 @@ pub const Mesh = extern struct { } pub fn drawInstanced(self: Mesh, material: Material, transforms: []const Matrix) void { - rl.drawMeshInstanced(self, material, transforms, transforms.len); + rl.drawMeshInstanced(self, material, transforms); } }; @@ -995,11 +995,43 @@ pub fn saveFileData(fileName: [:0]const u8, data: []anyopaque) bool { return cdef.SaveFileData(@ptrCast([*c]const u8, fileName), @ptrCast(*anyopaque, data.ptr), @intCast(c_uint, data.len)); } -pub fn exportDataAsCode(data: []const u8, fileName: []const u8) bool { - return cdef.ExportDataAsCode(@ptrCast([*c]const u8, data), @as(c_uint, data.len), @ptrCast([*c]const u8, fileName)); +pub fn exportDataAsCode(data: []const u8, fileName: [:0]const u8) bool { + return cdef.ExportDataAsCode(@ptrCast([*c]const u8, data), @intCast(c_uint, data.len), @ptrCast([*c]const u8, fileName)); } -pub fn loadImageFromMemory(fileType: [:0]const u8, fileData: []const u8) Image { +pub fn compressData(data: []const u8) [:0]u8 { + var compDataSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.CompressData(@ptrCast([*c]const u8, data), @intCast(c_int, data.len), @ptrCast([*c]c_int, &compDataSize)); + res.len = @intCast(usize, compDataSize); + return res; +} + +pub fn decompressData(compData: []const u8) [:0]u8 { + var dataSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.DecompressData(@ptrCast([*c]const u8, compData), @intCast(c_int, compData.len), @ptrCast([*c]c_int, &dataSize)); + res.len = @intCast(usize, dataSize); + return res; +} + +pub fn encodeDataBase64(data: []const u8) []u8 { + var outputSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.EncodeDataBase64(@ptrCast([*c]const u8, data), @intCast(c_int, data.len), @ptrCast([*c]c_int, &outputSize)); + res.len = @intCast(usize, outputSize); + return res; +} + +pub fn decodeDataBase64(data: []const u8) []u8 { + var outputSize = 0; + var res: []u8 = undefined; + res.ptr = cdef.DecodeDataBase64(@ptrCast([*c]const u8, data), @ptrCast([*c]c_int, &outputSize)); + res.len = @intCast(usize, outputSize); + return res; +} + +pub fn loadImageFromMemory(fileType: [:0]const u8, fileData: [:0]const u8) Image { return cdef.LoadImageFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileData), @intCast(c_int, fileData.len)); } @@ -1020,10 +1052,12 @@ pub fn loadImagePalette(image: Image, maxPaletteSize: i32) []Color { pub fn loadFontFromMemory(fileType: [:0]const u8, fileData: ?[]const u8, fontSize: i32, fontChars: []i32) Font { var fileDataFinal = @as([*c]const u8, 0); + var fileDataLen = 0; if (fileData) |fileDataSure| { fileDataFinal = @ptrCast([*c]const u8, fileDataSure); + fileDataLen = fileDataSure.len; } - return cdef.LoadFontFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileDataFinal), @intCast(c_int, fileData.len), @as(c_int, fontSize), @ptrCast([*c]c_int, fontChars), @intCast(c_int, fontChars.len)); + return cdef.LoadFontFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileDataFinal), @intCast(c_int, fileDataLen), @as(c_int, fontSize), @ptrCast([*c]c_int, fontChars), @intCast(c_int, fontChars.len)); } pub fn loadFontData(fileData: []const u8, fontSize: i32, fontChars: []i32, ty: i32) []GlyphInfo { @@ -1056,6 +1090,10 @@ pub fn textSplit(text: [:0]const u8, delimiter: u8) [][:0]const u8 { return res; } +pub fn drawMeshInstanced(mesh: Mesh, material: Material, transforms: []const Matrix) void { + cdef.DrawMeshInstanced(mesh, material, @ptrCast([*c]const Matrix, transforms), @intCast(c_int, transforms.len)); +} + pub fn loadMaterials(fileName: [:0]const u8) []Material { var materialCount = 0; var res: []Material = undefined; @@ -1072,8 +1110,12 @@ pub fn loadModelAnimations(fileName: [:0]const u8) []ModelAnimation { return res; } +pub fn unloadModelAnimations(animations: []ModelAnimation) void { + cdef.UnloadModelAnimations(@ptrCast([*c]ModelAnimation, animations), @intCast(c_uint, animations.len)); +} + pub fn loadWaveFromMemory(fileType: [:0]const u8, fileData: []const u8) Wave { - return cdef.LoadWaveFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileData), @as(c_int, fileData.len)); + return cdef.LoadWaveFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, fileData), @intCast(c_int, fileData.len)); } pub fn loadWaveSamples(wave: Wave) []f32 { @@ -1084,7 +1126,7 @@ pub fn loadWaveSamples(wave: Wave) []f32 { } pub fn loadMusicStreamFromMemory(fileType: [:0]const u8, data: []const u8) Music { - return cdef.LoadMusicStreamFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, data), @as(c_int, data.len)); + return cdef.LoadMusicStreamFromMemory(@ptrCast([*c]const u8, fileType), @ptrCast([*c]const u8, data), @intCast(c_int, data.len)); } pub fn initWindow(width: i32, height: i32, title: [:0]const u8) void { @@ -1599,22 +1641,6 @@ pub fn getFileModTime(fileName: [:0]const u8) i64 { return @as(i64, cdef.GetFileModTime(@ptrCast([*c]const u8, fileName))); } -pub fn compressData(data: []const u8, dataSize: i32, compDataSize: *i32) [:0]u8 { - return std.mem.span(cdef.CompressData(@ptrCast([*c]const u8, data), @as(c_int, dataSize), @ptrCast([*c]c_int, compDataSize))); -} - -pub fn decompressData(compData: []const u8, compDataSize: i32, dataSize: *i32) [:0]u8 { - return std.mem.span(cdef.DecompressData(@ptrCast([*c]const u8, compData), @as(c_int, compDataSize), @ptrCast([*c]c_int, dataSize))); -} - -pub fn encodeDataBase64(data: []const u8, dataSize: i32, outputSize: *i32) [:0]u8 { - return std.mem.span(cdef.EncodeDataBase64(@ptrCast([*c]const u8, data), @as(c_int, dataSize), @ptrCast([*c]c_int, outputSize))); -} - -pub fn decodeDataBase64(data: []const u8, outputSize: *i32) [:0]u8 { - return std.mem.span(cdef.DecodeDataBase64(@ptrCast([*c]const u8, data), @ptrCast([*c]c_int, outputSize))); -} - pub fn isKeyPressed(key: KeyboardKey) bool { return cdef.IsKeyPressed(key); } @@ -2703,10 +2729,6 @@ pub fn drawMesh(mesh: Mesh, material: Material, transform: Matrix) void { cdef.DrawMesh(mesh, material, transform); } -pub fn drawMeshInstanced(mesh: Mesh, material: Material, transforms: []const Matrix, instances: i32) void { - cdef.DrawMeshInstanced(mesh, material, @ptrCast([*c]const Matrix, transforms), @as(c_int, instances)); -} - pub fn exportMesh(mesh: Mesh, fileName: [:0]const u8) bool { return cdef.ExportMesh(mesh, @ptrCast([*c]const u8, fileName)); } @@ -2787,10 +2809,6 @@ pub fn unloadModelAnimation(anim: ModelAnimation) void { cdef.UnloadModelAnimation(anim); } -pub fn unloadModelAnimations(animations: []ModelAnimation, count: u32) void { - cdef.UnloadModelAnimations(@ptrCast([*c]ModelAnimation, animations), @as(c_uint, count)); -} - pub fn isModelAnimationValid(model: Model, anim: ModelAnimation) bool { return cdef.IsModelAnimationValid(model, anim); }