From 16d4648cf6c9f6baa864cbad11bbde6ceba43e14 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 19 May 2022 21:32:00 -0700 Subject: [PATCH] implement bright fg/bg --- src/terminal/Terminal.zig | 4 ++++ src/terminal/sgr.zig | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 4a38c27a2..28df19ee3 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -189,6 +189,10 @@ pub fn setAttribute(self: *Terminal, attr: sgr.Attribute) !void { .@"8_bg" => |n| self.cursor.pen.bg = color.default[@enumToInt(n)], + .@"8_bright_fg" => |n| self.cursor.pen.fg = color.default[@enumToInt(n)], + + .@"8_bright_bg" => |n| self.cursor.pen.bg = color.default[@enumToInt(n)], + .@"256_fg" => |idx| self.cursor.pen.fg = color.default[idx], .@"256_bg" => |idx| self.cursor.pen.bg = color.default[idx], diff --git a/src/terminal/sgr.zig b/src/terminal/sgr.zig index 374eba796..cdd152656 100644 --- a/src/terminal/sgr.zig +++ b/src/terminal/sgr.zig @@ -25,6 +25,10 @@ pub const Attribute = union(enum) { @"8_bg": color.Name, @"8_fg": color.Name, + /// Set the background/foreground as a named bright color attribute. + @"8_bright_bg": color.Name, + @"8_bright_fg": color.Name, + /// Set background color as 256-color palette. @"256_bg": u8, @@ -116,6 +120,14 @@ pub const Parser = struct { }; }, + 90...97 => return Attribute{ + .@"8_bright_fg" = @intToEnum(color.Name, slice[0] - 90), + }, + + 100...107 => return Attribute{ + .@"8_bright_bg" = @intToEnum(color.Name, slice[0] - 92), + }, + else => {}, } @@ -167,7 +179,7 @@ test "sgr: bold" { } test "sgr: 8 color" { - var p: Parser = .{ .params = &[_]u16{ 31, 43 } }; + var p: Parser = .{ .params = &[_]u16{ 31, 43, 103 } }; { const v = p.next().?; @@ -180,6 +192,12 @@ test "sgr: 8 color" { try testing.expect(v == .@"8_bg"); try testing.expect(v.@"8_bg" == .yellow); } + + { + const v = p.next().?; + try testing.expect(v == .@"8_bright_bg"); + try testing.expect(v.@"8_bright_bg" == .bright_yellow); + } } test "sgr: 256 color" {