Add new test code

png-branch
an 2018-09-09 18:21:31 -04:00
parent 445eb15729
commit 55195368e2
1 changed files with 38 additions and 34 deletions

View File

@ -1,47 +1,51 @@
extern crate memmap;
extern crate generic_array;
pub mod durandal;
pub mod marathon;
use std::{io, fs};
use std::{io, fs, env};
use std::io::Write;
use memmap::Mmap;
use marathon::wad;
use durandal::pict::load_pict;
fn main() -> io::Result<()>
{
let fp = fs::File::open("data/Rubicon Map.sceA")?;
let mm = unsafe{Mmap::map(&fp)?};
println!("{:?}", marathon::wad::Wad::new(&mm));
let arg = env::args().nth(1).expect("need at least 1 argument");
let fp = fs::File::open(arg)?;
let mm = unsafe{Mmap::map(&fp)?};
let wad = wad::Wad::new(&mm);
println!("{:?}", wad);
for (id, ent) in wad.ent
{
if let Some(c) = ent.map.get(b"PICT")
{
let im = load_pict(c);
match im {
Ok(im) => {
let out = fs::File::create(format!("out_{}.ppm", id))?;
let mut out = io::BufWriter::new(out);
println!("entry {} has PICT {}x{}", id, im.w(), im.h());
write!(&mut out, "P3\n{} {}\n255\n", im.w(), im.h())?;
for y in 0..im.h() {
for x in 0..im.w()
{
let cr = &im[(x, y)];
write!(&mut out, "{} {} {} ", cr.r, cr.g, cr.b)?;
}
}
},
Err(e) => println!("entry {} has PICT (invalid: {:?})", id, e),
}
}
}
Ok(())
}
/*
extern crate gtk;
use gtk::prelude::*;
use gtk::{Button, Window, WindowType};
fn main()
{
if gtk::init().is_err() {
println!("failed to initialize GTK");
return
}
let win = Window::new(WindowType::Toplevel);
win.set_title("GTK test");
win.set_default_size(350, 70);
let btn = Button::new_with_label("butts");
win.add(&btn);
win.show_all();
win.connect_delete_event(|_, _| {
gtk::main_quit();
Inhibit(false)
});
btn.connect_clicked(|_| {println!("clicc");});
gtk::main();
}
*/
// EOF