#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct Rgb
{
pub r: u8,
pub g: u8,
pub b: u8,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct Rgba
{
pub r: u8,
pub g: u8,
pub b: u8,
pub a: u8,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Channel
{
Rgb,
Rgba,
}
#[allow(clippy::doc_markdown)]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Colorspace
{
Srgb,
Linear,
}
impl Rgb
{
#[must_use]
pub const fn new(r: u8, g: u8, b: u8) -> Self
{
Self { r, g, b }
}
}
impl Rgba
{
#[must_use]
pub const fn new(r: u8, g: u8, b: u8, a: u8) -> Self
{
Self { r, g, b, a }
}
}
#[must_use]
pub const fn hash(color: Rgba) -> usize
{
let r = color.r as usize;
let g = color.g as usize;
let b = color.b as usize;
let a = color.a as usize;
(r * 3 + g * 5 + b * 7 + a * 11) % 64
}