feat: allow hex color
This commit is contained in:
10
config
10
config
@@ -13,18 +13,16 @@ fps=30
|
|||||||
[styling]
|
[styling]
|
||||||
|
|
||||||
# Which color mode to use
|
# Which color mode to use
|
||||||
# Value: "term", "rgb" or "ansi"
|
# Value: "term", "hex" or "ansi"
|
||||||
color_mode=term
|
color_mode=hex
|
||||||
|
|
||||||
# Loaded if color_mode is set to "term"
|
# Loaded if color_mode is set to "term"
|
||||||
# Value: 0-15
|
# Value: 0-15
|
||||||
color_term=7
|
color_term=7
|
||||||
|
|
||||||
# Loaded if color_mode is set to "rgb"
|
# Loaded if color_mode is set to "hex"
|
||||||
# Value: 0-255
|
# Value: 0-255
|
||||||
color_r=255
|
color_hex=e6ecfe
|
||||||
color_g=0
|
|
||||||
color_b=0
|
|
||||||
|
|
||||||
# Loaded if color_mode is set to "ansi"
|
# Loaded if color_mode is set to "ansi"
|
||||||
# Value: 0-255
|
# Value: 0-255
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ fn load_color(ini: &Ini) -> Color {
|
|||||||
let color = ini.getint("styling", "color_term").unwrap().unwrap();
|
let color = ini.getint("styling", "color_term").unwrap().unwrap();
|
||||||
return load_term_color(color);
|
return load_term_color(color);
|
||||||
}
|
}
|
||||||
"rgb" => todo!(),
|
"hex" => {
|
||||||
|
let color = ini.get("styling", "color_hex").unwrap();
|
||||||
|
return load_hex_color(&color);
|
||||||
|
}
|
||||||
"ansi" => todo!(),
|
"ansi" => todo!(),
|
||||||
_ => panic!("ERROR: Invalid color mode: {}", color_mode),
|
_ => panic!("ERROR: Invalid color mode: {}", color_mode),
|
||||||
}
|
}
|
||||||
@@ -57,3 +60,30 @@ fn load_term_color(value: i64) -> Color {
|
|||||||
_ => panic!("ERROR: Invalid terminal color: {}", value),
|
_ => panic!("ERROR: Invalid terminal color: {}", value),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn load_hex_color(value: &str) -> Color {
|
||||||
|
// Expand #XXX colors
|
||||||
|
let value = if value.len() == 3 {
|
||||||
|
format!(
|
||||||
|
"{}{}{}{}{}{}",
|
||||||
|
&value[0..1],
|
||||||
|
&value[0..1],
|
||||||
|
&value[1..2],
|
||||||
|
&value[1..2],
|
||||||
|
&value[2..3],
|
||||||
|
&value[2..3]
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
value.to_owned()
|
||||||
|
};
|
||||||
|
|
||||||
|
if value.len() != 6 {
|
||||||
|
panic!("ERROR: Invalid hex color: {}", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
let r = u8::from_str_radix(&value[0..2], 16).unwrap();
|
||||||
|
let g = u8::from_str_radix(&value[2..4], 16).unwrap();
|
||||||
|
let b = u8::from_str_radix(&value[4..6], 16).unwrap();
|
||||||
|
|
||||||
|
return Color::Rgb { r, g, b };
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user