use crate::{
RasterAlpha as Alpha, RasterChannels as Channels, RasterFormat, RasterPackedChannels as Packed,
RasterSampleFormat as Sample, RasterTransfer as Transfer,
};
impl RasterFormat {
pub(super) const fn _new(
channels: Channels,
sample: Sample,
transfer: Transfer,
alpha: Alpha,
) -> Self {
Self { channels, sample, transfer, alpha }
}
pub(super) const fn _new_packed(
channels: Packed,
sample: Sample,
transfer: Transfer,
alpha: Alpha,
) -> Self {
Self::_new(Channels::Packed(channels), sample, transfer, alpha)
}
pub const UNKNOWN: Self =
Self::_new(Channels::Unknown, Sample::Unknown, Transfer::Unknown, Alpha::None);
pub const GRAY8: Self = Self::_new(Channels::Gray, Sample::U8, Transfer::Srgb, Alpha::None);
pub const GRAYA8: Self =
Self::_new(Channels::GrayAlpha, Sample::U8, Transfer::Srgb, Alpha::Straight);
pub const RGB8: Self = Self::_new(Channels::Rgb, Sample::U8, Transfer::Srgb, Alpha::None);
pub const RGBA8: Self = Self::_new(Channels::Rgba, Sample::U8, Transfer::Srgb, Alpha::Straight);
pub const RGBA_PRE8: Self =
Self::_new(Channels::Rgba, Sample::U8, Transfer::Srgb, Alpha::Premultiplied);
pub const RGBX8: Self = Self::_new(Channels::Rgbx, Sample::U8, Transfer::Srgb, Alpha::Opaque);
pub const ARGB8: Self = Self::_new(Channels::Argb, Sample::U8, Transfer::Srgb, Alpha::Straight);
pub const BGR8: Self = Self::_new(Channels::Bgr, Sample::U8, Transfer::Srgb, Alpha::None);
pub const BGRA8: Self = Self::_new(Channels::Bgra, Sample::U8, Transfer::Srgb, Alpha::Straight);
pub const BGRA_PRE8: Self =
Self::_new(Channels::Bgra, Sample::U8, Transfer::Srgb, Alpha::Premultiplied);
pub const BGRX8: Self = Self::_new(Channels::Bgrx, Sample::U8, Transfer::Srgb, Alpha::Opaque);
pub const ABGR8: Self = Self::_new(Channels::Abgr, Sample::U8, Transfer::Srgb, Alpha::Straight);
pub const RGB332: Self =
Self::_new_packed(Packed::Rgb332, Sample::U8, Transfer::Srgb, Alpha::None);
pub const RGB565: Self =
Self::_new_packed(Packed::Rgb565, Sample::U16, Transfer::Srgb, Alpha::None);
pub const RGBX8888: Self =
Self::_new_packed(Packed::Rgbx8888, Sample::U32, Transfer::Srgb, Alpha::Opaque);
pub const RGBA8888: Self =
Self::_new_packed(Packed::Rgba8888, Sample::U32, Transfer::Srgb, Alpha::Straight);
pub const XRGB8888: Self =
Self::_new_packed(Packed::Xrgb8888, Sample::U32, Transfer::Srgb, Alpha::Opaque);
pub const ARGB8888: Self =
Self::_new_packed(Packed::Argb8888, Sample::U32, Transfer::Srgb, Alpha::Straight);
pub const BGR332: Self =
Self::_new_packed(Packed::Bgr332, Sample::U8, Transfer::Srgb, Alpha::None);
pub const BGR565: Self =
Self::_new_packed(Packed::Bgr565, Sample::U16, Transfer::Srgb, Alpha::None);
pub const BGRX8888: Self =
Self::_new_packed(Packed::Bgrx8888, Sample::U32, Transfer::Srgb, Alpha::Opaque);
pub const BGRA8888: Self =
Self::_new_packed(Packed::Bgra8888, Sample::U32, Transfer::Srgb, Alpha::Straight);
pub const XBGR8888: Self =
Self::_new_packed(Packed::Xbgr8888, Sample::U32, Transfer::Srgb, Alpha::Opaque);
pub const ABGR8888: Self =
Self::_new_packed(Packed::Abgr8888, Sample::U32, Transfer::Srgb, Alpha::Straight);
pub const INDEXED8: Self =
Self::_new(Channels::Indexed, Sample::U8, Transfer::Srgb, Alpha::None);
pub const RGB_LIN_F32: Self =
Self::_new(Channels::Rgb, Sample::F32, Transfer::Linear, Alpha::None);
pub const RGBA_LIN_F32: Self =
Self::_new(Channels::Rgba, Sample::F32, Transfer::Linear, Alpha::Straight);
pub const RGBA_LIN_PRE_F32: Self =
Self::_new(Channels::Rgba, Sample::F32, Transfer::Linear, Alpha::Premultiplied);
}