pub const WHITE: Color = color(1.0, 1.0, 1.0, 1.0);
pub const BLACK: Color = color(0.0, 0.0, 0.0, 1.0);
pub const TRANSPARENT: Color = color(0.0, 0.0, 0.0, 0.0);
pub const fn color(r: f32, g: f32, b: f32, a: f32) -> Color {
Color { r, g, b, a }
}
#[derive(Clone, Copy, Debug)]
pub struct Color {
pub r: f32,
pub g: f32,
pub b: f32,
pub a: f32,
}
impl From<(f32, f32, f32, f32)> for Color {
fn from(value: (f32, f32, f32, f32)) -> Self {
Self {
r: value.0,
g: value.1,
b: value.2,
a: value.3,
}
}
}
impl From<(f32, f32, f32)> for Color {
fn from(value: (f32, f32, f32)) -> Self {
Self {
r: value.0,
g: value.1,
b: value.2,
a: 1.0,
}
}
}
impl Into<wgpu::Color> for Color {
fn into(self) -> wgpu::Color {
wgpu::Color {
r: self.r as f64,
g: self.g as f64,
b: self.b as f64,
a: self.a as f64,
}
}
}
impl Into<[f32; 4]> for Color {
fn into(self) -> [f32; 4] {
[self.r, self.g, self.b, self.a]
}
}