cubism 0.2.0

A basic pixel canvas for Rust
Documentation
use std::ops::Mul;

#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub struct Color {
    r: f32,
    g: f32,
    b: f32,
    a: f32,
}

impl Color {
    pub const WHITE: Color = Color {
        r: 1.0,
        g: 1.0,
        b: 1.0,
        a: 1.0,
    };

    pub fn rgba(r: f32, g: f32, b: f32, a: f32) -> Color {
        Color { r, g, b, a }
    }

    pub fn rgba_u8(r: u8, g: u8, b: u8, a: u8) -> Color {
        Color {
            r: r as f32 / 255.0,
            g: g as f32 / 255.0,
            b: b as f32 / 255.0,
            a: a as f32 / 255.0,
        }
    }

    pub fn as_rgba_f32(&self) -> [f32; 4] {
        [self.r, self.g, self.b, self.a]
    }

    pub fn set_a(&mut self, a: f32) {
        self.a = a;
    }

    pub fn a(&self) -> f32 {
        self.a
    }
}

impl Mul<[f32; 4]> for Color {
    type Output = Color;

    fn mul(self, rhs: [f32; 4]) -> Self::Output {
        Color {
            r: self.r * rhs[0],
            g: self.g * rhs[1],
            b: self.b * rhs[2],
            a: self.a * rhs[3],
        }
    }
}