Implemented setResizeCallback and setViewport

This commit is contained in:
Brandon Dyck 2022-01-09 15:31:52 -07:00
parent 95daf52b70
commit ac2f09d9cf
2 changed files with 22 additions and 0 deletions

View File

@ -85,6 +85,15 @@ pub fn Window(comptime TUserData: type) type {
pub fn setActiveCallback(self: Window(TUserData), callback: ActiveFunc) void { pub fn setActiveCallback(self: Window(TUserData), callback: ActiveFunc) void {
c.mfb_set_active_callback(self.cwin, @ptrCast(c.mfb_active_func, callback)); c.mfb_set_active_callback(self.cwin, @ptrCast(c.mfb_active_func, callback));
} }
pub const ResizeFunc = fn (win: Window(TUserData), width: i32, height: i32) callconv(.C) void;
pub fn setResizeCallback(self: Window(TUserData), callback: ResizeFunc) void {
c.mfb_set_resize_callback(self.cwin, @ptrCast(c.mfb_resize_func, callback));
}
pub fn setViewport(self: Window(TUserData), offset_x: u32, offset_y: u32, width: u32, height: u32) bool {
return c.mfb_set_viewport(self.cwin, offset_x, offset_y, width, height);
}
}; };
} }

View File

@ -106,6 +106,18 @@ fn handleActive(win: mfb.Window(State), isActive: bool) callconv(.C) void {
} }
} }
fn handleResize(win: mfb.Window(State), width: i32, height: i32) callconv(.C) void {
const did_set = win.setViewport(
@intCast(u32, width) / 4,
@intCast(u32, height) / 4,
@intCast(u32, width) / 2,
@intCast(u32, height) / 2,
);
if (!did_set) {
std.log.warn("did not set viewport!", .{});
}
}
pub fn main() !void { pub fn main() !void {
var gp_allocator = std.heap.GeneralPurposeAllocator(.{}){}; var gp_allocator = std.heap.GeneralPurposeAllocator(.{}){};
const alloc = gp_allocator.allocator(); const alloc = gp_allocator.allocator();
@ -118,6 +130,7 @@ pub fn main() !void {
win.setUserData(&state); win.setUserData(&state);
win.setActiveCallback(handleActive); win.setActiveCallback(handleActive);
win.setResizeCallback(handleResize);
var buf = try Buffer.init(alloc, Width, Height); var buf = try Buffer.init(alloc, Width, Height);
defer buf.deinit(); defer buf.deinit();