Newer
Older
#[derive(Copy, Clone, Serialize, Deserialize, ArgEnum, Debug)]
pub enum FlipDirection {
#[serde(rename = "vertical")]
Vertical,
#[serde(rename = "horizontal")]
Horizontal,
#[serde(rename = "both")]
Both,
}
pub fn flip<T: GenericImage>(image: &T, dir: FlipDirection) -> anyhow::Result<TypedOutputFormat<T>>
where
T::Pixel: 'static,
<T::Pixel as Pixel>::Subpixel: 'static,
{
use FlipDirection::*;
match dir {
Vertical => Ok(imageops::flip_vertical(image)),
Horizontal => Ok(imageops::flip_horizontal(image)),
Both => {
let mut image = imageops::flip_horizontal(image);
imageops::flip_vertical_in_place(&mut image);
Ok(image)
}
}
}