fn main() {
let mut n = 0;
let (mut c16, mut c256, mut ctrue) = (0, 0, 0);
let (mut b16, mut b256) = (0, 0);
let (mut e16, mut e256) = (0, 0);
for (id, src) in makeover::embedded_themes() {
let Ok(table) = src.parse::<toml::Table>() else {
continue;
};
let theme = makeover::ThemeColors {
meta: makeover::parse_meta(id, &table, false),
colors: makeover::extract_colors(&table),
};
let t = makeover::resolve(&theme);
let rgb = |k: &str| t.rgb(k).map(|(r, g, b)| makeover::Rgb { r, g, b });
let (Some(well), Some(raised)) = (rgb("surface-well"), rgb("surface-raised")) else {
continue;
};
let (Some(light), Some(dark)) = (rgb("bevel-light"), rgb("bevel-dark")) else {
continue;
};
n += 1;
if makeover::quantize(well, &makeover::ANSI_16)
== makeover::quantize(raised, &makeover::ANSI_16)
{
c16 += 1;
}
if makeover::quantize(well, &makeover::ANSI_256)
== makeover::quantize(raised, &makeover::ANSI_256)
{
c256 += 1;
}
if well.r == raised.r && well.g == raised.g && well.b == raised.b {
ctrue += 1;
}
for (pal, counter) in [
(&makeover::ANSI_16[..], 0usize),
(makeover::ANSI_240, 1usize),
] {
let face = makeover::quantize(raised, pal);
let lit = makeover::quantize(light, pal);
let shadow = makeover::quantize(dark, pal);
if lit == face || shadow == face {
if counter == 0 { e16 += 1 } else { e256 += 1 }
}
}
if makeover::quantize(light, &makeover::ANSI_16)
== makeover::quantize(dark, &makeover::ANSI_16)
{
b16 += 1;
}
if makeover::quantize(light, &makeover::ANSI_256)
== makeover::quantize(dark, &makeover::ANSI_256)
{
b256 += 1;
}
}
println!("themes measured: {n}\n");
println!("well collapses onto its face:");
println!(" ANSI-16 {c16:>3} / {n}");
println!(" ANSI-256 {c256:>3} / {n}");
println!(" truecolor {ctrue:>3} / {n}");
println!("\nbevel loses its second tone:");
println!(" ANSI-16 {b16:>3} / {n}");
println!(" ANSI-256 {b256:>3} / {n}");
println!("\nat least one bevel edge vanishes into its own face:");
println!(" ANSI-16 {e16:>3} / {n}");
println!(" ANSI-256 {e256:>3} / {n}");
}