Compression/Encoding functions now with proper slices + correct casting for lens

This commit is contained in:
Not-Nik 2023-07-20 16:33:37 +02:00
parent f50189fdd0
commit e13c5bf521
No known key found for this signature in database
GPG Key ID: 08BB71E672DB3BFD
3 changed files with 102 additions and 38 deletions

View File

@ -248,7 +248,13 @@ def parse_header(header_name: str, output_file: str, ext_file: str, prefix: str,
"LoadFileData", "LoadFileData",
"SaveFileData", "SaveFileData",
"ExportDataAsCode", "ExportDataAsCode",
"LoadImageFromMemory" "LoadImageFromMemory",
"DrawMeshInstanced",
"UnloadModelAnimations",
"CompressData",
"DecompressData",
"EncodeDataBase64",
"DecodeDataBase64"
] ]
if func_name in manual or "FromMemory" in func_name: if func_name in manual or "FromMemory" in func_name:

View File

@ -412,7 +412,7 @@ pub const Mesh = extern struct {
} }
pub fn drawInstanced(self: Mesh, material: Material, transforms: []const Matrix) void { 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)); 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 { pub fn exportDataAsCode(data: []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)); 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 { 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; 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 { pub fn loadMaterials(fileName: [:0]const u8) []Material {
var materialCount = 0; var materialCount = 0;
var res: []Material = undefined; var res: []Material = undefined;
@ -1074,8 +1110,12 @@ pub fn loadModelAnimations(fileName: [:0]const u8) []ModelAnimation {
return res; 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 { 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 { 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 { 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));
} }

View File

@ -154,7 +154,7 @@ pub const Image = extern struct {
mipmaps: c_int, mipmaps: c_int,
format: PixelFormat, format: PixelFormat,
pub fn init(fileName: []const u8) Image { pub fn init(fileName: [:0]const u8) Image {
return rl.loadImage(fileName); return rl.loadImage(fileName);
} }
@ -412,7 +412,7 @@ pub const Mesh = extern struct {
} }
pub fn drawInstanced(self: Mesh, material: Material, transforms: []const Matrix) void { 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)); 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 { pub fn exportDataAsCode(data: []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)); 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)); 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 { pub fn loadFontFromMemory(fileType: [:0]const u8, fileData: ?[]const u8, fontSize: i32, fontChars: []i32) Font {
var fileDataFinal = @as([*c]const u8, 0); var fileDataFinal = @as([*c]const u8, 0);
var fileDataLen = 0;
if (fileData) |fileDataSure| { if (fileData) |fileDataSure| {
fileDataFinal = @ptrCast([*c]const u8, 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 { 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; 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 { pub fn loadMaterials(fileName: [:0]const u8) []Material {
var materialCount = 0; var materialCount = 0;
var res: []Material = undefined; var res: []Material = undefined;
@ -1072,8 +1110,12 @@ pub fn loadModelAnimations(fileName: [:0]const u8) []ModelAnimation {
return res; 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 { 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 { 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 { 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 { 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))); 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 { pub fn isKeyPressed(key: KeyboardKey) bool {
return cdef.IsKeyPressed(key); return cdef.IsKeyPressed(key);
} }
@ -2703,10 +2729,6 @@ pub fn drawMesh(mesh: Mesh, material: Material, transform: Matrix) void {
cdef.DrawMesh(mesh, material, transform); 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 { pub fn exportMesh(mesh: Mesh, fileName: [:0]const u8) bool {
return cdef.ExportMesh(mesh, @ptrCast([*c]const u8, fileName)); return cdef.ExportMesh(mesh, @ptrCast([*c]const u8, fileName));
} }
@ -2787,10 +2809,6 @@ pub fn unloadModelAnimation(anim: ModelAnimation) void {
cdef.UnloadModelAnimation(anim); 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 { pub fn isModelAnimationValid(model: Model, anim: ModelAnimation) bool {
return cdef.IsModelAnimationValid(model, anim); return cdef.IsModelAnimationValid(model, anim);
} }