1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
pub enum Color {
    Unmanaged(i32),
    Managed(i64),
}

impl Color {
    /// Returns an unmanaged RGB color.
    pub fn device_rgb(red: f32, green: f32, blue: f32, alpha: f32) -> Color {
        let (red, green, blue, alpha) = (
            (red * 255.0) as u64,
            (green * 255.0) as u64,
            (blue * 255.0) as u64,
            (alpha * 255.0) as u64,
        );

        Color::Unmanaged((0u64 | (alpha << 24) | (red << 16) | (green << 8) | (blue << 0)) as i32)
    }
}