use std::ops::Mul;
#[derive(Clone, Copy, Debug)]
pub struct Color {
pub r: f32,
pub g: f32,
pub b: f32,
pub a: f32,
}
impl Color {
pub fn new(r: f32, g: f32, b: f32, a: f32) -> Self {
Self { r, g, b, a }
}
pub fn with_alpha(&self, alpha: f32) -> Self {
Self {
r: self.r,
g: self.g,
b: self.b,
a: alpha,
}
}
pub fn to_array(&self) -> [f32; 4] {
[self.r, self.g, self.b, self.a]
}
pub fn with_opacity(&self, opacity: f32) -> Color {
Color {
r: self.r,
g: self.g,
b: self.b,
a: self.a * opacity,
}
}
}
impl Mul<f32> for Color {
type Output = Color;
fn mul(self, rhs: f32) -> Color {
Color {
r: self.r,
g: self.g,
b: self.b,
a: self.a * rhs,
}
}
}