From 9ed7fef6e08cddb2f4a84dbff05f6ca4917266d3 Mon Sep 17 00:00:00 2001 From: Erik Hedvall Date: Sun, 31 Mar 2024 14:34:19 +0200 Subject: [PATCH] Fix angle conversion from f32 to u8 --- palette/src/angle.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/palette/src/angle.rs b/palette/src/angle.rs index fe363841c..ece955df6 100644 --- a/palette/src/angle.rs +++ b/palette/src/angle.rs @@ -163,7 +163,7 @@ macro_rules! impl_from_angle_u8 { #[inline] fn from_angle(angle: $float_ty) -> Self { let normalized = angle.normalize_unsigned_angle() / $float_ty::full_rotation(); - let rounded = normalized.round(); + let rounded = (normalized * 256.0).round(); if rounded > 255.5 { 0 @@ -201,3 +201,22 @@ impl UnsignedAngle for u8 { self } } + +#[cfg(test)] +mod test { + use crate::RgbHue; + + #[test] + fn f32_to_u8() { + let hue_f32 = RgbHue::new(180.0f32); + let hue_u8 = hue_f32.into_format::(); + assert_eq!(hue_u8, RgbHue::new(128u8)); + } + + #[test] + fn u8_to_f32() { + let hue_f32 = RgbHue::new(128u8); + let hue_u8 = hue_f32.into_format::(); + assert_eq!(hue_u8, RgbHue::new(180.0f32)); + } +}