From fa25d250c66466a0f0d5bb1f71b650fb232dd10d Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 12 Dec 2024 19:11:54 +0100 Subject: [PATCH] fix: improve alpha rendering on gutter --- src/renderer/vaxis/Plane.zig | 6 ++++++ src/tui/editor_gutter.zig | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/renderer/vaxis/Plane.zig b/src/renderer/vaxis/Plane.zig index 09671a2..b778f2e 100644 --- a/src/renderer/vaxis/Plane.zig +++ b/src/renderer/vaxis/Plane.zig @@ -114,6 +114,12 @@ pub fn home(self: *Plane) void { self.col = 0; } +pub fn fill(self: *Plane, egc: []const u8) void { + for (0..self.dim_y()) |y| + for (0..self.dim_x()) |x| + self.write_cell(x, y, egc); +} + pub fn fill_width(self: *Plane, comptime fmt: anytype, args: anytype) !usize { var buf: [fmt.len + 4096]u8 = undefined; var pos: usize = 0; diff --git a/src/tui/editor_gutter.zig b/src/tui/editor_gutter.zig index a7a0e86..2f9b6ae 100644 --- a/src/tui/editor_gutter.zig +++ b/src/tui/editor_gutter.zig @@ -121,8 +121,11 @@ inline fn get_width(self: *Self) usize { pub fn render(self: *Self, theme: *const Widget.Theme) bool { const frame = tracy.initZone(@src(), .{ .name = "gutter render" }); defer frame.deinit(); - self.plane.set_base_style(theme.editor_gutter); + self.plane.set_base_style(theme.editor); self.plane.erase(); + self.plane.home(); + self.plane.set_style(theme.editor_gutter); + _ = self.plane.fill(" "); if (self.linenum) { const relative = self.relative or if (tui.current().input_mode) |mode| mode.line_numbers == .relative else false; if (relative) @@ -160,10 +163,10 @@ pub fn render_linear(self: *Self, theme: *const Widget.Theme) void { while (rows > 0) : (rows -= 1) { if (linenum > self.lines) return; if (linenum == self.line + 1) { - self.plane.set_style(theme.editor_gutter_active); + self.plane.set_style(.{ .fg = theme.editor_gutter_active.fg }); self.plane.on_styles(style.bold); } else { - self.plane.set_style(theme.editor_gutter); + self.plane.set_style(.{ .fg = theme.editor_gutter.fg }); self.plane.off_styles(style.bold); } _ = self.plane.print_aligned_right(@intCast(pos), "{s}", .{std.fmt.bufPrintZ(&buf, "{d} ", .{linenum}) catch return}) catch {};