set custom callback for raylib logging
This commit is contained in:
parent
e6877ef2e4
commit
4fbe67746f
43
src/main.zig
43
src/main.zig
@ -8,6 +8,11 @@ const windows = @cImport({
|
|||||||
@cInclude("windows.h");
|
@cInclude("windows.h");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const raylib_h = @cImport({
|
||||||
|
@cInclude("stdio.h");
|
||||||
|
@cInclude("raylib.h");
|
||||||
|
});
|
||||||
|
|
||||||
const log = std.log;
|
const log = std.log;
|
||||||
|
|
||||||
const Allocator = std.mem.Allocator;
|
const Allocator = std.mem.Allocator;
|
||||||
@ -15,15 +20,45 @@ const FontFace = @import("font-face.zig");
|
|||||||
const assert = std.debug.assert;
|
const assert = std.debug.assert;
|
||||||
const Vec2 = rl.Vector2;
|
const Vec2 = rl.Vector2;
|
||||||
|
|
||||||
fn toTraceLogLevel(log_level: std.log.Level) rl.TraceLogLevel {
|
fn toRaylibTraceLogLevel(log_level: std.log.Level) rl.TraceLogLevel {
|
||||||
return switch (log_level) {
|
return switch (log_level) {
|
||||||
.err => rl.TraceLogLevel.log_error,
|
.err => rl.TraceLogLevel.log_error,
|
||||||
.warn => rl.TraceLogLevel.log_warning,
|
.warn => rl.TraceLogLevel.log_warning,
|
||||||
.info => rl.TraceLogLevel.log_info,
|
.info => rl.TraceLogLevel.log_info,
|
||||||
.debug => rl.TraceLogLevel.log_all,
|
.debug => rl.TraceLogLevel.log_trace,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn toZigLogLevel(log_type: c_int) ?std.log.Level {
|
||||||
|
return switch (log_type) {
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_trace) => std.log.Level.debug,
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_debug) => std.log.Level.debug,
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_info) => std.log.Level.info,
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_warning) => std.log.Level.warn,
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_error) => std.log.Level.err,
|
||||||
|
@intFromEnum(rl.TraceLogLevel.log_fatal) => std.log.Level.err,
|
||||||
|
else => null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn raylibTraceLogCallback(logType: c_int, text: [*c]const u8, args: raylib_h.va_list) callconv(.C) void {
|
||||||
|
const log_level = toZigLogLevel(logType) orelse return;
|
||||||
|
|
||||||
|
// TODO: Skip formatting buffer, if logging is not enabled for that level.
|
||||||
|
const max_tracelog_msg_length = 256; // from utils.c in raylib
|
||||||
|
var buffer: [max_tracelog_msg_length:0]u8 = undefined;
|
||||||
|
@memset(&buffer, 0);
|
||||||
|
_ = raylib_h.vsnprintf(&buffer, buffer.len, text, args);
|
||||||
|
|
||||||
|
const raylib_log = std.log.scoped(.raylib);
|
||||||
|
switch (log_level) {
|
||||||
|
.debug => raylib_log.debug("{s}", .{ buffer }),
|
||||||
|
.info => raylib_log.info("{s}", .{ buffer }),
|
||||||
|
.warn => raylib_log.warn("{s}", .{ buffer }),
|
||||||
|
.err => raylib_log.err("{s}", .{ buffer })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn remap(from_min: f32, from_max: f32, to_min: f32, to_max: f32, value: f32) f32 {
|
fn remap(from_min: f32, from_max: f32, to_min: f32, to_max: f32, value: f32) f32 {
|
||||||
const t = (value - from_min) / (from_max - from_min);
|
const t = (value - from_min) / (from_max - from_min);
|
||||||
return std.math.lerp(to_min, to_max, t);
|
return std.math.lerp(to_min, to_max, t);
|
||||||
@ -83,8 +118,8 @@ pub fn main() !void {
|
|||||||
// _ = windows.ShowWindow(hWnd, windows.SW_SHOW);
|
// _ = windows.ShowWindow(hWnd, windows.SW_SHOW);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// TODO: SetTraceLogCallback
|
raylib_h.SetTraceLogCallback(raylibTraceLogCallback);
|
||||||
rl.setTraceLogLevel(toTraceLogLevel(std.log.default_level));
|
rl.setTraceLogLevel(toRaylibTraceLogLevel(std.log.default_level));
|
||||||
|
|
||||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
const allocator = gpa.allocator();
|
const allocator = gpa.allocator();
|
||||||
|
Loading…
Reference in New Issue
Block a user