ux-primitives 0.1.3

Graphics Primitives for Angular Rust
Documentation
#![cfg(feature = "experimental")]

use super::*;

pub trait WithAlpha<C: From<Color>> {
    fn get_color(self) -> C;
    fn get_alpha(self) -> f64;
}

#[derive(Clone, Copy, Debug)]
pub struct Alpha<C: From<Color>> {
    color: C,
    alpha: f64,
}

impl<C: From<Color>> Alpha<C> {
    fn new(color: C, alpha: f64) -> Self {
        Self { color, alpha }
    }
}

impl<C: From<Color>> WithAlpha<C> for Alpha<C> {
    fn get_color(self) -> C {
        self.color
    }
    fn get_alpha(self) -> f64 {
        self.alpha
    }
}

impl<C: From<Color>> From<C> for Alpha<C> {
    fn from(color: C) -> Self {
        Self::new(color, 0.0)
    }
}

impl WithAlpha<RgbColor> for RgbaColor {
    fn get_color(self) -> RgbColor {
        self.into()
    }
    fn get_alpha(self) -> f64 {
        (self.alpha as f64) / 255.0
    }
}