use image::{Rgba, RgbaImage};
use std::path::Path;
fn main() {
let assets_dir = Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("assets");
generate_checker_pattern(
&assets_dir.join("demo_checker_64x64.png"),
64,
8,
Rgba([255, 255, 255, 200]), Rgba([0, 0, 0, 0]), );
println!("Generated: demo_checker_64x64.png (white=semi-transparent, other=fully transparent)");
generate_region_colormap(&assets_dir.join("demo_region_colormap_64x64.png"), 64);
println!("Generated: demo_region_colormap_64x64.png (color-coded region map)");
}
fn generate_region_colormap(path: &Path, size: u32) {
let mut img = RgbaImage::new(size, size);
let half = size / 2;
for y in 0..size {
for x in 0..size {
let color = if x < half && y < half {
Rgba([255, 0, 0, 255])
} else if x >= half && y < half {
Rgba([0, 255, 0, 255])
} else if x < half && y >= half {
Rgba([0, 0, 255, 255])
} else {
Rgba([255, 255, 0, 255])
};
img.put_pixel(x, y, color);
}
}
img.save(path)
.expect("Failed to save region colormap image");
}
fn generate_checker_pattern(
path: &Path,
size: u32,
block_size: u32,
color1: Rgba<u8>,
color2: Rgba<u8>,
) {
let mut img = RgbaImage::new(size, size);
for y in 0..size {
for x in 0..size {
let block_x = x / block_size;
let block_y = y / block_size;
let color = if (block_x + block_y) % 2 == 0 {
color1
} else {
color2
};
img.put_pixel(x, y, color);
}
}
img.save(path).expect("Failed to save image");
}