#![deny(clippy::all)]
pub use {ab_glyph, image, imageproc};
use image::DynamicImage;
use std::convert::TryFrom;
mod animated;
mod errors;
pub use animated::AnimatedImage;
pub use errors::SicCoreError;
#[derive(Clone, Debug)]
pub enum SicImage {
Animated(AnimatedImage),
Static(DynamicImage),
}
#[doc(hidden)]
impl AsRef<DynamicImage> for SicImage {
fn as_ref(&self) -> &DynamicImage {
match self {
Self::Animated(_) => unimplemented!(),
Self::Static(image) => image,
}
}
}
impl From<DynamicImage> for SicImage {
fn from(item: DynamicImage) -> Self {
Self::Static(item)
}
}
impl TryFrom<SicImage> for DynamicImage {
type Error = SicCoreError;
fn try_from(value: SicImage) -> Result<Self, Self::Error> {
match value {
SicImage::Static(image) => Ok(image),
_ => Err(SicCoreError::RequiresStaticImage),
}
}
}