kahlo 0.0.3

Optimized software rendering library.
Documentation
use kahlo::{prelude::*, Bitmap};

pub fn load_test_resource(name: &'static str) -> Bitmap<kahlo::formats::Rgba32> {
    let mut path = std::path::PathBuf::new();
    path.push(env!("CARGO_MANIFEST_DIR"));
    path.push("test_resources");
    path.push(name);
    let file_reader =
        std::io::BufReader::new(std::fs::File::open(path).expect("couldn't open test resource"));
    let img = image::load(file_reader, image::ImageFormat::from_path(name).unwrap())
        .expect("couldn't parse test resource")
        .into_rgba8();

    let (w, h) = (img.width(), img.height());
    Bitmap::new_from_vec(img.into_vec(), w as usize, h as usize, w as usize * 4)
}

pub fn save_test_result_rgba32(
    name: &'static str,
    bitmap: &impl BitmapAccess<kahlo::formats::Rgba32>,
) {
    let mut path = std::path::PathBuf::new();
    path.push(env!("CARGO_TARGET_TMPDIR"));
    path.push(name);

    assert_eq!(bitmap.stride(), bitmap.width() * 4);

    image::save_buffer(
        path,
        bitmap.data(),
        bitmap.width() as u32,
        bitmap.height() as u32,
        image::ExtendedColorType::Rgba8,
    )
    .expect("couldn't save test result");
}