From 61f1cc10fe4f857e2365d0ca5fb8e773045d0b78 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Wed, 8 Apr 2026 11:12:33 +0200 Subject: [PATCH] feat: add statically compiled ansi_palette --- src/compile.zig | 28 ++++++++++++++++++++++++++++ src/theme.zig | 2 ++ 2 files changed, 30 insertions(+) diff --git a/src/compile.zig b/src/compile.zig index e08c33b..8c78877 100644 --- a/src/compile.zig +++ b/src/compile.zig @@ -107,6 +107,8 @@ fn load_json(theme_: *theme_file) theme { .ansi_bright_magenta = derive_style.ansi_bright_magenta(type_idx, cb), .ansi_bright_cyan = derive_style.ansi_bright_cyan(type_idx, cb), .ansi_bright_white = derive_style.ansi_bright_white(type_idx, cb), + + .ansi_palette = derive_style.ansi_palette(type_idx, cb), }; } @@ -726,6 +728,32 @@ const derive_style = struct { fn ansi_bright_white(type_idx: usize, cb: []const u8) Color { return if (find_color("terminal.ansiBrightWhite", cb)) |col| col else defaults.@"terminal.ansiBrightWhite"(type_idx, cb).?; } + + fn ansi_palette(type_idx: usize, cb: []const u8) [16][3]u8 { + const c = struct { + fn f(v: u24) [3]u8 { + return .{ @truncate(v >> 16), @truncate(v >> 8), @truncate(v) }; + } + }.f; + return .{ + c(ansi_black(type_idx, cb).color), + c(ansi_red(type_idx, cb).color), + c(ansi_green(type_idx, cb).color), + c(ansi_yellow(type_idx, cb).color), + c(ansi_blue(type_idx, cb).color), + c(ansi_magenta(type_idx, cb).color), + c(ansi_cyan(type_idx, cb).color), + c(ansi_white(type_idx, cb).color), + c(ansi_bright_black(type_idx, cb).color), + c(ansi_bright_red(type_idx, cb).color), + c(ansi_bright_green(type_idx, cb).color), + c(ansi_bright_yellow(type_idx, cb).color), + c(ansi_bright_blue(type_idx, cb).color), + c(ansi_bright_magenta(type_idx, cb).color), + c(ansi_bright_cyan(type_idx, cb).color), + c(ansi_bright_white(type_idx, cb).color), + }; + } }; const defaults = struct { diff --git a/src/theme.zig b/src/theme.zig index fb39675..a803ff9 100644 --- a/src/theme.zig +++ b/src/theme.zig @@ -56,6 +56,8 @@ ansi_bright_magenta: Color, ansi_bright_cyan: Color, ansi_bright_white: Color, +ansi_palette: [16][3]u8, + tokens: Tokens, pub const FontStyle = enum { normal, bold, italic, underline, undercurl, strikethrough };