From 44e92735cf8ffc798d59910385816eed79d6a4b4 Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Fri, 21 Feb 2025 15:15:15 +0100 Subject: [PATCH] ref(examples): avoid unnecessary casts --- README.md | 5 ++--- examples/elements/button.zig | 4 ++-- examples/elements/input.zig | 4 ++-- examples/elements/scrollable.zig | 33 +++++--------------------------- examples/layouts/grid.zig | 5 ++--- examples/layouts/horizontal.zig | 5 ++--- examples/layouts/mixed.zig | 5 ++--- examples/layouts/vertical.zig | 5 ++--- 8 files changed, 19 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 479f541..caefcf5 100644 --- a/README.md +++ b/README.md @@ -130,9 +130,8 @@ the primary use-case for myself to create this library in the first place. - [x] grid - [x] mixed (some sort of form) - [ ] Elements - - [ ] Button - - [ ] Text Input field - - [ ] User input handling + - [x] Button + - [x] Text Input field - [ ] Popup-menu - [ ] Scrollable Content (i.e. show long text of an except of something and other smaller `Container`) - [ ] min size diff --git a/examples/elements/button.zig b/examples/elements/button.zig index 3ebecde..5ed28dd 100644 --- a/examples/elements/button.zig +++ b/examples/elements/button.zig @@ -34,8 +34,8 @@ pub const Clickable = struct { _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); - const row: u16 = size.rows / 2 -| @as(u16, @truncate(text.len / 2)); - const col: u16 = size.cols / 2 -| @as(u16, @truncate(text.len / 2)); + const row = size.rows / 2 -| (text.len / 2); + const col = size.cols / 2 -| (text.len / 2); const anchor = (row * size.cols) + col; for (text, 0..) |cp, idx| { diff --git a/examples/elements/input.zig b/examples/elements/input.zig index 1e1ad89..2c1b0d7 100644 --- a/examples/elements/input.zig +++ b/examples/elements/input.zig @@ -54,8 +54,8 @@ pub const InputField = struct { if (this.input.items.len == 0) return; - const row: u16 = 1; - const col: u16 = 1; + const row = 1; + const col = 1; const anchor = (row * size.cols) + col; for (this.input.items, 0..) |cp, idx| { diff --git a/examples/elements/scrollable.zig b/examples/elements/scrollable.zig index bc93d58..cc5276f 100644 --- a/examples/elements/scrollable.zig +++ b/examples/elements/scrollable.zig @@ -9,48 +9,25 @@ const log = std.log.scoped(.default); pub const HelloWorldText = packed struct { const text = "Hello World"; - text_color: zterm.Color = .black, - - // example function to create the interface instance for this `Element` implementation pub fn element(this: *@This()) App.Element { return .{ .ptr = this, - .vtable = &.{ - .handle = handle, - .content = content, - }, + .vtable = &.{ .content = content }, }; } - // example function to render contents for a `Container` fn content(ctx: *anyopaque, cells: []zterm.Cell, size: zterm.Size) !void { - const this: *@This() = @ptrCast(@alignCast(ctx)); + _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); // NOTE: error should only be returned here in case an in-recoverable exception has occurred const row = size.rows / 2; const col = size.cols / 2 -| (text.len / 2); + const anchor = (row * size.rows) + col; for (0.., text) |idx, char| { - cells[(row * size.cols) + col + idx].style.fg = this.text_color; - cells[(row * size.cols) + col + idx].cp = char; - } - } - - // example function to handle events for a `Container` - fn handle(ctx: *anyopaque, event: App.Event) !void { - const this: *@This() = @ptrCast(@alignCast(ctx)); - switch (event) { - .init => log.debug(".init event", .{}), - .key => |key| if (key.eql(.{ .cp = input.Space })) { - var next_color_idx = @intFromEnum(this.text_color); - next_color_idx += 1; - next_color_idx %= 17; - if (next_color_idx == @intFromEnum(zterm.Color.default)) next_color_idx += 1; - this.text_color = @enumFromInt(next_color_idx); - log.debug("Next color: {s}", .{@tagName(this.text_color)}); - }, - else => {}, + cells[anchor + idx].style.fg = .black; + cells[anchor + idx].cp = char; } } }; diff --git a/examples/layouts/grid.zig b/examples/layouts/grid.zig index 743faeb..2c1d6e3 100644 --- a/examples/layouts/grid.zig +++ b/examples/layouts/grid.zig @@ -11,7 +11,6 @@ const QuitText = struct { pub fn element(this: *@This()) App.Element { return .{ .ptr = this, - // no handle function required .vtable = &.{ .content = content }, }; } @@ -20,8 +19,8 @@ const QuitText = struct { _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); - const row: u16 = 2; - const col: u16 = size.cols / 2 -| (@as(u16, @truncate(text.len)) / 2); + const row = 2; + const col = size.cols / 2 -| (text.len / 2); const anchor = (row * size.cols) + col; for (text, 0..) |cp, idx| { diff --git a/examples/layouts/horizontal.zig b/examples/layouts/horizontal.zig index 0eefc23..bf13626 100644 --- a/examples/layouts/horizontal.zig +++ b/examples/layouts/horizontal.zig @@ -11,7 +11,6 @@ const QuitText = struct { pub fn element(this: *@This()) App.Element { return .{ .ptr = this, - // no handle function required .vtable = &.{ .content = content }, }; } @@ -20,8 +19,8 @@ const QuitText = struct { _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); - const row: u16 = 2; - const col: u16 = size.cols / 2 -| (@as(u16, @truncate(text.len)) / 2); + const row = 2; + const col = size.cols / 2 -| (text.len / 2); const anchor = (row * size.cols) + col; for (text, 0..) |cp, idx| { diff --git a/examples/layouts/mixed.zig b/examples/layouts/mixed.zig index efb7949..3f19100 100644 --- a/examples/layouts/mixed.zig +++ b/examples/layouts/mixed.zig @@ -11,7 +11,6 @@ const QuitText = struct { pub fn element(this: *@This()) App.Element { return .{ .ptr = this, - // no handle function required .vtable = &.{ .content = content }, }; } @@ -20,8 +19,8 @@ const QuitText = struct { _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); - const row: u16 = 2; - const col: u16 = size.cols / 2 -| (@as(u16, @truncate(text.len)) / 2); + const row = 2; + const col = size.cols / 2 -| (text.len / 2); const anchor = (row * size.cols) + col; for (text, 0..) |cp, idx| { diff --git a/examples/layouts/vertical.zig b/examples/layouts/vertical.zig index 5f42377..bdc84a0 100644 --- a/examples/layouts/vertical.zig +++ b/examples/layouts/vertical.zig @@ -11,7 +11,6 @@ const QuitText = struct { pub fn element(this: *@This()) App.Element { return .{ .ptr = this, - // no handle function required .vtable = &.{ .content = content }, }; } @@ -20,8 +19,8 @@ const QuitText = struct { _ = ctx; std.debug.assert(cells.len == @as(usize, size.cols) * @as(usize, size.rows)); - const row: u16 = 2; - const col: u16 = size.cols / 2 -| (@as(u16, @truncate(text.len)) / 2); + const row = 2; + const col = size.cols / 2 -| (text.len / 2); const anchor = (row * size.cols) + col; for (text, 0..) |cp, idx| {