feat(Renderer): update interface functions to start supporting buffered rendering
Some checks failed
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 30s

This commit is contained in:
2024-11-11 17:01:59 +01:00
parent d2d655c829
commit ed5873de63
5 changed files with 124 additions and 19 deletions

View File

@@ -26,10 +26,30 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .{};
var renderer: App.Renderer = .{};
var renderer = App.Renderer.init(allocator);
defer renderer.deinit();
// FIX: when not running fullscreen, the application needs to screen down accordingly to display the contents
// -> size hint how much should it use?
// var layout = Layout.createFrom(layout: {
// var stack = Layout.HStack.init(allocator, .{
// Widget.createFrom(blk: {
// var spacer = Widget.Spacer.init();
// break :blk &spacer;
// }),
// Widget.createFrom(blk: {
// const file = try std.fs.cwd().openFile("./src/app.zig", .{});
// defer file.close();
// var widget = Widget.RawText.init(allocator, file);
// break :blk &widget;
// }),
// Widget.createFrom(blk: {
// var spacer = Widget.Spacer.init();
// break :blk &spacer;
// }),
// });
// break :layout &stack;
// });
var layout = Layout.createFrom(layout: {
var hstack = Layout.HStack.init(allocator, .{
Widget.createFrom(blk: {
@@ -113,6 +133,9 @@ pub fn main() !void {
switch (event) {
.quit => break,
.resize => |size| {
renderer.resize(size);
},
.key => |key| {
// ctrl+c to quit
if (Key.matches(key, .{ .cp = 'c', .mod = .{ .ctrl = true } })) {
@@ -135,7 +158,6 @@ pub fn main() !void {
.err => |err| {
log.err("Received {any} with message: {s}", .{ err.err, err.msg });
},
else => {},
}
// NOTE: this currently re-renders the screen for every key-press -> which might be a bit of an overkill
const events = try layout.handle(event);
@@ -143,5 +165,6 @@ pub fn main() !void {
app.postEvent(e);
}
try layout.render(&renderer);
try renderer.flush();
}
}