use embedded_graphics::iterator::raw::RawDataSlice;
use embedded_graphics::pixelcolor::PixelColor;
use embedded_graphics::pixelcolor::raw::BigEndian;
use crate::image::{Image, ImageRaw};
#[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum ImageSet<'a, C, const N: usize>
where
C: PixelColor + From<C::Raw>,
RawDataSlice<'a, C::Raw, BigEndian>: IntoIterator<Item = C::Raw>,
{
Repeated(Image<ImageRaw<'a, C>>),
Array([Image<ImageRaw<'a, C>>; N]),
}
impl<'a, C, const N: usize> ImageSet<'a, C, N>
where
C: PixelColor + From<C::Raw>,
RawDataSlice<'a, C::Raw, BigEndian>: IntoIterator<Item = C::Raw>,
{
pub const fn get(&self, index: usize) -> &Image<ImageRaw<'a, C>> {
match self {
Self::Repeated(image) => image,
Self::Array(array) => &array[index % N],
}
}
}