1146e2f0
Add text comparison layout helpers
a73x 2026-04-09 08:17
diff --git a/src/main.zig b/src/main.zig index 4820276..f1e0c36 100644 --- a/src/main.zig +++ b/src/main.zig @@ -457,6 +457,45 @@ fn shouldRenderFrame(terminal_dirty: bool, window_dirty: bool, forced: bool) boo return terminal_dirty or window_dirty or forced; } const ComparisonVariant = struct { label: []const u8, coverage: [2]f32, }; fn comparisonVariants() [4]ComparisonVariant { return .{ .{ .label = "baseline", .coverage = renderer.coverageVariantParams(.baseline) }, .{ .label = "mild", .coverage = renderer.coverageVariantParams(.mild) }, .{ .label = "medium", .coverage = renderer.coverageVariantParams(.medium) }, .{ .label = "crisp", .coverage = renderer.coverageVariantParams(.crisp) }, }; } fn comparisonSpecimenLines() []const []const u8 { return &.{ "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "0123456789", "{}[]()/\\|,.;:_-=+", "~/code/rad/waystty $ zig build test", }; } fn comparisonPanelOrigins(panel_count: usize, panel_cols: u32, top_margin_rows: u32) [4][2]f32 { var origins = [_][2]f32{.{ 0.0, @floatFromInt(top_margin_rows) }} ** 4; const count = @min(panel_count, origins.len); var idx: usize = 0; while (idx < count) : (idx += 1) { origins[idx] = .{ @floatFromInt(idx * @as(usize, panel_cols)), @floatFromInt(top_margin_rows), }; } return origins; } const RowRefreshState = enum { full, partial, @@ -1711,6 +1750,27 @@ test "glyphTopOffset uses baseline rather than cell height" { try std.testing.expectEqual(@as(f32, -3.0), glyphTopOffset(9, 12)); } test "comparisonPanelOrigins splits four panels left to right" { const origins = comparisonPanelOrigins(4, 80, 24); try std.testing.expectEqual(@as(f32, 0), origins[0][0]); try std.testing.expect(origins[1][0] > origins[0][0]); try std.testing.expect(origins[2][0] > origins[1][0]); try std.testing.expect(origins[3][0] > origins[2][0]); } test "comparisonSpecimenLines remains fixed and non-empty" { const lines = comparisonSpecimenLines(); try std.testing.expectEqual(@as(usize, 5), lines.len); try std.testing.expectEqualStrings("abcdefghijklmnopqrstuvwxyz", lines[0]); try std.testing.expectEqualStrings("ABCDEFGHIJKLMNOPQRSTUVWXYZ", lines[1]); try std.testing.expectEqualStrings("0123456789", lines[2]); try std.testing.expectEqualStrings("{}[]()/\\|,.;:_-=+", lines[3]); try std.testing.expectEqualStrings("~/code/rad/waystty $ zig build test", lines[4]); for (lines) |line| { try std.testing.expect(line.len > 0); } } fn runRenderSmokeTest(alloc: std.mem.Allocator) !void { var conn = try wayland_client.Connection.init(); defer conn.deinit();