blazediff-interpret 6.4.1

Structured region analysis for image diffs: classify what changed, not just where
Documentation
use blazediff_shared::Image;

pub fn make_solid_image(width: u32, height: u32, r: u8, g: u8, b: u8) -> Image {
    let mut img = Image::new(width, height);
    for i in 0..(width * height) as usize {
        let pos = i * 4;
        img.data[pos] = r;
        img.data[pos + 1] = g;
        img.data[pos + 2] = b;
        img.data[pos + 3] = 255;
    }
    img
}

pub fn set_pixel(img: &mut Image, x: u32, y: u32, r: u8, g: u8, b: u8) {
    let pos = ((y * img.width + x) * 4) as usize;
    img.data[pos] = r;
    img.data[pos + 1] = g;
    img.data[pos + 2] = b;
    img.data[pos + 3] = 255;
}

pub fn fill_block(img: &mut Image, x: u32, y: u32, w: u32, h: u32, r: u8, g: u8, b: u8) {
    for dy in 0..h {
        for dx in 0..w {
            set_pixel(img, x + dx, y + dy, r, g, b);
        }
    }
}