From 9554c78f3adc9846b76e9d3b96af06e98fb69aa0 Mon Sep 17 00:00:00 2001 From: Bingus Date: Tue, 6 Jun 2023 17:06:40 -0700 Subject: Updated color packing into u32 to consider incorrect web-colors. --- core/src/color.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'core/src') diff --git a/core/src/color.rs b/core/src/color.rs index 9ea6ccbf..9ef66b28 100644 --- a/core/src/color.rs +++ b/core/src/color.rs @@ -132,6 +132,25 @@ impl Color { r | g | b | a } + /// Converts the [`Color`] into a `u32` value containing its linear RGBA8 components. + pub fn into_linear_u32(self) -> u32 { + let [r, g, b, a] = self.into_linear(); + + let [r, g, b, a] = [ + (r * 255.0).round() as u8, + (g * 255.0).round() as u8, + (b * 255.0).round() as u8, + (a * 255.0).round() as u8, + ]; + + let r = (r as u32) << 24; + let g = (g as u32) << 16; + let b = (b as u32) << 8; + let a = a as u32; + + r | g | b | a + } + /// Inverts the [`Color`] in-place. pub fn invert(&mut self) { self.r = 1.0f32 - self.r; -- cgit