1use color::{gradient, ColorSpaceTag, DynamicColor, GradientIter, HueDirection, Srgb};
15
16fn main() {
17 let mut args = std::env::args().skip(1);
18 let c1_s = args.next().expect("give color as arg");
19 let c1 = color::parse_color(&c1_s).expect("error parsing color 1");
20 let c2_s = args.next().expect("give 2 colors as arg");
21 let c2 = color::parse_color(&c2_s).expect("error parsing color 2");
22 let cs_s_raw = args.next();
23 let cs_s = cs_s_raw.as_deref().unwrap_or("srgb");
24 let cs: ColorSpaceTag = cs_s.parse().expect("error parsing color space");
25 let gradient: GradientIter<Srgb> = gradient(c1, c2, cs, HueDirection::default(), 0.02);
26 println!("<!DOCTYPE html>");
27 println!("<html>");
28 println!("<head>");
29 println!("<style>");
30 println!("div.g {{ height: 100px }}");
31 println!("#basic {{ background: linear-gradient(to right in {cs_s}, {c1_s}, {c2_s}) }}");
32 print!("#ours {{ background: linear-gradient(to right");
33 for (t, stop) in gradient {
34 print!(
35 ", {} {}%",
36 DynamicColor::from_alpha_color(stop.un_premultiply()),
37 t * 100.0
38 );
39 }
40 println!(") }}");
41 println!("</style>");
42 println!("</head>");
43 println!("<body>");
44 println!("<div>{c1_s} {c2_s} {cs_s}</div>");
45 println!("<div class='g' id='basic'></div>");
46 println!("<div class='g' id='ours'></div>");
47 println!("</body>");
48 println!("</html>");
49}