#[allow(clippy::upper_case_acronyms)]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[non_exhaustive]
pub enum ColorSpace
{
RGB,
RGBA,
YCbCr,
Luma,
LumaA,
YCCK,
CMYK,
Unknown
}
impl ColorSpace
{
pub const fn num_components(&self) -> usize
{
match self
{
Self::RGB | Self::YCbCr => 3,
Self::RGBA | Self::YCCK | Self::CMYK => 4,
Self::Luma => 1,
Self::LumaA => 2,
Self::Unknown => 0
}
}
pub const fn has_alpha(&self) -> bool
{
matches!(self, Self::RGBA | Self::LumaA)
}
pub const fn is_grayscale(&self) -> bool
{
matches!(self, Self::LumaA | Self::Luma)
}
}
pub static ALL_COLORSPACES: [ColorSpace; 6] = [
ColorSpace::RGB,
ColorSpace::RGBA,
ColorSpace::LumaA,
ColorSpace::Luma,
ColorSpace::CMYK,
ColorSpace::YCbCr
];
#[allow(non_camel_case_types)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum ColorCharacteristics
{
sRGB,
Linear
}