Wrap to_hsb hue of 360 back to 0 for near-red colours

Found while testing crates/color/src/lib.rs:142

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
NetterSilver
2026-10-23 01:06:55 +07:00
committed by bflatastic
co-authored by Claude Haiku 5.5
parent e20c330bd3
commit 4a29fd4112
+8
View File
@@ -146,6 +146,8 @@ impl Color {
} else {
60.0 * ((r - g) / d + 4.0)
};
// f32 rounding in rem_euclid can yield exactly 360; wrap back to 0.
let h = if h >= 360.0 { 0.0 } else { h };
let s = if max <= 0.0 { 0.0 } else { d / max };
[h, s, max]
}
@@ -438,6 +440,12 @@ impl Paint {
mod tests {
use super::*;
#[test]
fn hue_below_360() {
let h = Color::Rgb { r: 1.0, g: 0.0, b: 1e-7 }.to_hsb()[0];
assert!((0.0..360.0).contains(&h), "hue {h}");
}
#[test]
fn hex_roundtrip() {
let c = Color::from_hex("#ff8000").unwrap();