extern crate vrtue; use vrtue::ega; use vrtue::ega::{Compression, Tiling}; extern crate image; use std::env; use std::io::Read; use std::path::Path; fn main() { let args: Vec = env::args().collect(); let filename; if args.len() > 1 { filename = &args[1] as &str; } else { filename = "data/SHAPES.EGA"; } let mut file = std::fs::File::open(Path::new(filename)) .expect(&format!("failed opening EGA file: {}", filename)); let mut ega_vec = Vec::::new(); file.read_to_end(&mut ega_vec).expect("Read EGA file"); let ega_page = ega::decode(&ega_vec, Compression::UNCOMPRESSED, Tiling::TILED(16)); for (i, tilepixels) in ega_page.iter().enumerate() { let out_name = format!("out/{}.png", i); let out_file = std::fs::File::create(Path::new(&out_name)).expect("open out file"); let enc = image::png::PNGEncoder::new(out_file); enc.encode(&tilepixels, 16, 16, image::ColorType::RGBA(8)).expect("write png"); } }