Initial commit

This commit is contained in:
Pascal Engélibert 2026-09-26 23:37:19 +02:00
commit 63c36ebe1c
2 changed files with 1651 additions and 0 deletions

View file

@ -0,0 +1,8 @@
[package]
name = "packing"
version = "0.1.0"
edition = "2024"
[dependencies]
png = "0.18"
skrivan = { path = "../../skrivan" }

View file

@ -0,0 +1,49 @@
fn main() {
//let mut rects = Vec::new();
//for i in 0..10 {
// rects.push((16+i*11%8, 16+i*9%8));
// rects.push((50+i*13%20, 14+i*7%10));
// rects.push((10+i*11%9, 63+i*17%10));
//}
//bench("test", (512, 512), &rects);
}
/*fn bench(name: &str, size: (u32, u32), rects: &[(u32, u32)]) {
let mut packer = skrivan::packer::Packer::new(512, 512);
let start = std::time::Instant::now();
for (i, rect) in rects.iter().enumerate() {
assert!(packer.insert(i, rect.0, rect.1));
packer.display();
}
let dur = start.elapsed();
let mut bitmap = vec![0; (size.0*size.1*4) as usize];
let mut full = 0;
let mut max_x = 0;
let mut max_y = 0;
for i in 0..rects.len() {
let rect = packer.get(i).unwrap();
for y in rect.y..rect.y+rect.h {
for x in rect.x..rect.x+rect.w {
bitmap[((y*size.0+x)*4) as usize] = (rect.x * 101) as u8;
bitmap[((y*size.0+x)*4+1) as usize] = (rect.y * 101) as u8;
bitmap[((y*size.0+x)*4+2) as usize] = ((rect.x+rect.y+64) * 101) as u8;
bitmap[((y*size.0+x)*4+3) as usize] = 255;
}
}
full += rect.w*rect.h;
max_x = max_x.max(rect.x+rect.w);
max_y = max_y.max(rect.y+rect.h);
}
let output = std::fs::File::create(format!("/dev/shm/bench-{name}.png")).unwrap();
let writer = &mut std::io::BufWriter::new(output);
let mut encoder = png::Encoder::new(
writer,
size.0,
size.1,
);
encoder.set_color(png::ColorType::Rgba);
let mut writer = encoder.write_header().unwrap();
writer.write_image_data(&bitmap).unwrap();
writer.finish().unwrap();
println!("{name}:\tfill={} time={}ms", full as f32/(max_x*max_y) as f32, dur.as_secs_f32()*1000.0);
}*/