summaryrefslogtreecommitdiff
path: root/packer/src/bin/benchmark.rs
blob: bb83992f126d4e027e98cb3ac488be5e3ac39599 (plain)
use std::{fs::File, sync::Arc, time::Instant};

use image::{io::Reader as ImageReader, ImageOutputFormat};
use packer::RectanglePacker;

fn main() -> Result<(), exun::RawUnexpected> {
	let img1 = ImageReader::open("src/bin/res/gator.bmp")?.decode()?;
	let img2 = ImageReader::open("src/bin/res/bunny.ff")?.decode()?;
	let img3 = ImageReader::open("src/bin/res/ghost.ico")?.decode()?;

	let start = Instant::now();
	let mut packer = RectanglePacker::new();
	packer.add_texture("gator".into(), Arc::new(img1.to_rgb8()));
	packer.add_texture("bunny".into(), Arc::new(img2.to_rgb8()));
	packer.add_texture("ghost".into(), Arc::new(img3.to_rgb8()));
	println!("{} milliseconds", start.elapsed().as_secs_f32() * 1000.0);

	let start = Instant::now();
	let packed = packer.output();
	println!("{} milliseconds", start.elapsed().as_secs_f32() * 1000.0);

	let mut file = File::create("packed.png")?;
	packed?.0.write_to(&mut file, ImageOutputFormat::Bmp)?;

	Ok(())
}