Initial commit
This commit is contained in:
commit
63c36ebe1c
2 changed files with 1651 additions and 0 deletions
8
examples/packing/Cargo.toml
Normal file
8
examples/packing/Cargo.toml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "packing"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
png = "0.18"
|
||||
skrivan = { path = "../../skrivan" }
|
||||
49
examples/packing/src/main.rs
Normal file
49
examples/packing/src/main.rs
Normal 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);
|
||||
}*/
|
||||
Loading…
Reference in a new issue