use image::{Luma, LumaA, Primitive};
use std::borrow::Borrow;
pub fn luma_a_to_luma<In, P, const A: u8, const L: u8>(luma: In) -> Luma<P>
where
In: Borrow<LumaA<P>>,
P: Primitive,
{
let luma = luma.borrow();
let luminance = luma[0]; let alpha = luma[1];
if alpha >= P::from(A).unwrap() && luminance >= P::from(L).unwrap() {
Luma([P::DEFAULT_MIN_VALUE])
} else {
Luma([P::DEFAULT_MAX_VALUE])
}
}
pub fn luma_a_to_luma_convertor<P, In>(alpha_t: P, luma_t: P) -> impl Fn(In) -> Luma<P>
where
P: Primitive,
In: Borrow<LumaA<P>>,
{
move |luma| {
let luma = luma.borrow();
let luminance = luma[0]; let alpha = luma[1]; if alpha >= alpha_t && luminance >= luma_t {
Luma([P::DEFAULT_MIN_VALUE])
} else {
Luma([P::DEFAULT_MAX_VALUE])
}
}
}