use prismatica::Color;
use prismatica::matplotlib::VIRIDIS;
use syntect::highlighting::Color as SyntectColor;
fn main() {
let cm = &VIRIDIS;
let n = 8;
println!("Colormap: {} ({})\n", cm.meta.name, cm.meta.collection);
println!(
" {:<4} {:>3} {:>3} {:>3} syntect RGBA",
"i", "R", "G", "B"
);
println!(" {}", "-".repeat(48));
for i in 0..n {
let color = cm.eval_rational(i, n);
let syn: SyntectColor = color.into();
assert_eq!(syn.a, 255, "forward conversion should set alpha to 255");
let back: Color = syn.into();
let swatch = format!("\x1b[48;2;{};{};{}m \x1b[0m", color.r, color.g, color.b);
println!(
" {:<4} {:>3} {:>3} {:>3} rgba({:>3}, {:>3}, {:>3}, {:>3}) {}",
i, color.r, color.g, color.b, syn.r, syn.g, syn.b, syn.a, swatch
);
assert_eq!(color, back, "round-trip failed at index {i}");
}
let semi = SyntectColor {
r: 68,
g: 1,
b: 84,
a: 128,
};
let from_semi: Color = semi.into();
println!(
"\n Semi-transparent syntect rgba({}, {}, {}, {}) -> prismatica ({}, {}, {})",
semi.r, semi.g, semi.b, semi.a, from_semi.r, from_semi.g, from_semi.b,
);
println!(" (alpha channel is discarded on reverse conversion)");
}