fast image operations
Diffstat (limited to 'src/scale/traits.rs')
-rw-r--r--src/scale/traits.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/scale/traits.rs b/src/scale/traits.rs
index 66d1ddb..68c2b16 100644
--- a/src/scale/traits.rs
+++ b/src/scale/traits.rs
@@ -49,6 +49,8 @@ pub trait AlphaDiv<const N: usize>: Sealed + ToImageView<N> {
type P: fr::PixelExt + fr::Convolution + fr::AlphaMulDiv;
#[doc(hidden)]
fn handle(i: Image<&mut [u8], N>) -> fr::Image<'_, <Self as AlphaDiv<N>>::P>;
+ #[doc(hidden)]
+ fn unhandle(i: &mut fr::Image<<Self as AlphaDiv<N>>::P>);
}
/// Generic helper for [`Image`] and [`fr::Image`] transfers.
@@ -83,6 +85,11 @@ macro_rules! adiv {
i
}
+
+ fn unhandle(i: &mut fr::Image<<Self as AlphaDiv<$n>>::P>) {
+ // SAFETY: mhm
+ unsafe { fr::MulDiv::default().divide_alpha_inplace(&mut i.view_mut()) }
+ }
}
};
}