Implemented setResizeCallback and setViewport
This commit is contained in:
parent
95daf52b70
commit
ac2f09d9cf
@ -85,6 +85,15 @@ pub fn Window(comptime TUserData: type) type {
|
||||
pub fn setActiveCallback(self: Window(TUserData), callback: ActiveFunc) void {
|
||||
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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
13
src/main.zig
13
src/main.zig
@ -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 {
|
||||
var gp_allocator = std.heap.GeneralPurposeAllocator(.{}){};
|
||||
const alloc = gp_allocator.allocator();
|
||||
@ -118,6 +130,7 @@ pub fn main() !void {
|
||||
win.setUserData(&state);
|
||||
|
||||
win.setActiveCallback(handleActive);
|
||||
win.setResizeCallback(handleResize);
|
||||
|
||||
var buf = try Buffer.init(alloc, Width, Height);
|
||||
defer buf.deinit();
|
||||
|
Loading…
Reference in New Issue
Block a user