From f2c9f00bda1e69306bb2b73843ed7a95cd703bb5 Mon Sep 17 00:00:00 2001 From: sigoden Date: Mon, 30 Oct 2023 11:45:07 +0800 Subject: fix: detect light theme only by env var (#177) --- src/utils/mod.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/utils/mod.rs') diff --git a/src/utils/mod.rs b/src/utils/mod.rs index fa26dcf..699f8a0 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,5 +1,3 @@ -#[cfg(not(target_os = "windows"))] -pub(crate) mod termbg; mod tiktoken; use self::tiktoken::cl100k_base; @@ -45,3 +43,21 @@ pub fn split_text(text: &str) -> Result, anyhow::Error> { let data: Result, _> = tokens.into_iter().map(|v| bpe.decode(&[v])).collect(); data } + +pub fn light_theme_from_colorfgbg(colorfgbg: &str) -> Option { + let parts: Vec<_> = colorfgbg.split(';').collect(); + let bg = match parts.len() { + 2 => &parts[1], + 3 => &parts[2], + _ => { + return None; + } + }; + let bg = bg.parse::().ok()?; + let (r, g, b) = ansi_colours::rgb_from_ansi256(bg); + + let v = 0.2126 * r as f32 + 0.7152 * g as f32 + 0.0722 * b as f32; + + let light = v > 128.0; + Some(light) +} -- cgit v1.2.3