use crate::{
context::StreamContext,
error::Result,
image::view::{ImageView, ImageViewMut},
types::RoundMode,
};
pub trait ScaledSubtractImage<T, L> {
fn subtract_scaled_image(
stream_context: &StreamContext,
left: &ImageView<'_, T, L>,
right: &ImageView<'_, T, L>,
destination: &mut ImageViewMut<'_, T, L>,
scale_factor: i32,
) -> Result<()>;
fn subtract_scaled_image_in_place(
stream_context: &StreamContext,
source: &ImageView<'_, T, L>,
source_destination: &mut ImageViewMut<'_, T, L>,
scale_factor: i32,
) -> Result<()>;
}
pub trait MultiplyScaleImage<T, L> {
fn multiply_scale_image(
stream_context: &StreamContext,
left: &ImageView<'_, T, L>,
right: &ImageView<'_, T, L>,
destination: &mut ImageViewMut<'_, T, L>,
) -> Result<()>;
fn multiply_scale_image_in_place(
stream_context: &StreamContext,
source: &ImageView<'_, T, L>,
source_destination: &mut ImageViewMut<'_, T, L>,
) -> Result<()>;
}
pub trait DivideRoundImage<T, L> {
fn divide_round_image(
stream_context: &StreamContext,
left: &ImageView<'_, T, L>,
right: &ImageView<'_, T, L>,
destination: &mut ImageViewMut<'_, T, L>,
scale_factor: i32,
round_mode: RoundMode,
) -> Result<()>;
fn divide_round_image_in_place(
stream_context: &StreamContext,
source: &ImageView<'_, T, L>,
source_destination: &mut ImageViewMut<'_, T, L>,
scale_factor: i32,
round_mode: RoundMode,
) -> Result<()>;
}