seru 0.1.0

simple image renderer
Documentation
use std::{collections::HashMap, env, fs};

use seru::{
    Seru, SeruOption,
    render::{RenderOptions, RenderOutputType, styles::Color},
};

fn main() -> anyhow::Result<()> {
    let args: Vec<String> = env::args().collect();

    let asset_root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("examples");
    println!("asset_root: {}", asset_root.display());

    let mut width = 500.0;
    let mut height = 500.0;

    let seru_name = if args.len() > 1 {
        args[1].clone()
    } else {
        "simple0.seru".to_string()
    };

    if args.len() > 2 {
        width = args[2].parse()?;
    }

    if args.len() > 3 {
        height = args[3].parse()?;
    }

    let source = fs::read_to_string(asset_root.join(seru_name.clone()))?;

    let mut seru = Seru::new_with_options(&SeruOption {
        allow_network_asset: true,
        asset_root: Some(asset_root),
        load_system_fonts: true,
        fonts: vec![],
    })?;
    seru.load_str(&source)?;

    let img = seru.render(
        "Main",
        HashMap::new(),
        RenderOptions {
            output_type: RenderOutputType::PNG,
            background: Some(Color {
                r: 0xFF,
                g: 0xFF,
                b: 0xFF,
                a: 0xFF,
            }),
            render_scale: Some(2.0),
            width: width,
            height: height,
        },
    )?;

    fs::write(seru_name + ".png", img)?;
    Ok(())
}