1.2 KiB · text History d76cd01
//! Render one PNG per decoration (in its era palette) plus one per palette
//! (on Breeze) into the directory given as the first argument, for eyeballing
//! chrome changes: `cargo run --release --example contact_sheet -- /tmp/sheet`
use bismuth::render::{chrome, palette, render_png, render_svg, CardSpec, Output};

fn main() -> anyhow::Result<()> {
    let dir = std::path::PathBuf::from(std::env::args().nth(1).unwrap_or_else(|| "sheet".into()));
    std::fs::create_dir_all(&dir)?;
    let write = |name: String, spec: CardSpec| -> anyhow::Result<()> {
        let svg = render_svg(&spec, Output::Standalone);
        std::fs::write(dir.join(format!("{name}.svg")), &svg)?;
        std::fs::write(dir.join(format!("{name}.png")), render_png(&svg, 1.0)?)?;
        Ok(())
    };
    for c in chrome::CHROMES {
        write(format!("chrome-{}", c.id), CardSpec { chrome: c.id.into(), ..CardSpec::default() })?;
    }
    for p in palette::PALETTES.iter() {
        write(
            format!("palette-{}", p.id),
            CardSpec { palette: p.id.into(), line_numbers: true, ..CardSpec::default() },
        )?;
    }
    println!("wrote {}", dir.display());
    Ok(())
}