kahlo 0.0.2

Optimized software rendering library.
Documentation
use crate::{
    bitmap::{BitmapAccessMut, BitmapRawDataMut},
    colour::Colour,
    formats::PixelFormatSpec,
    math::PixelBox,
    BitmapMut,
};

use super::{
    dispatch::{GenericUnary, UnaryDispatch},
    KahloOps, UnaryOpSpec,
};

pub struct FillRegionOp;

#[cfg(test)]
const _: () = {
    use super::generate;
    impl generate::UnaryInputSpec for FillRegionOp {
        fn gen<'l>() -> impl generate::ValueGeneratorList<'l, OutputTuple = Self::Params<'l>> {
            (generate::dst_area, generate::random_colour)
        }
    }
};

impl GenericUnary<(PixelBox, Colour)> for FillRegionOp {
    fn perform<Format: PixelFormatSpec>(
        write_data: &mut dyn BitmapRawDataMut,
        params: &(PixelBox, Colour),
    ) {
        // make a view and forward to FillOp
        let mut write_data = BitmapMut::new_from_raw(write_data);
        let mut subregion = write_data.make_view_mut(params.0);
        // let mut subregion = BitmapAccessMut::<Format>::make_view_mut(write_data, params.0);
        KahloOps::<Format>::fill(&mut subregion, params.1);
    }
}

impl UnaryOpSpec for FillRegionOp {
    type Params<'l> = (PixelBox, Colour);
    fn build<'l>() -> UnaryDispatch<Self::Params<'l>> {
        UnaryDispatch::from_generic::<Self>()
    }
}