From 12a07dae33aaa59b8172f13f25af74e0cf3b82cc Mon Sep 17 00:00:00 2001 From: XScorpion2 Date: Wed, 1 May 2019 20:59:01 -0500 Subject: Adjusted the linear led table and hsv_to_rgb to better handle 255 hue (#5739) * Adjusted the linear led table and hsv_to_rgb to better handle 255 hue * small math adjustments to better handle specific uint8_t rounding and overflows --- quantum/color.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'quantum/color.c') diff --git a/quantum/color.c b/quantum/color.c index c49877592..466e6edac 100644 --- a/quantum/color.c +++ b/quantum/color.c @@ -22,8 +22,8 @@ RGB hsv_to_rgb( HSV hsv ) { RGB rgb; - uint8_t region, p, q, t; - uint16_t h, s, v, remainder; + uint8_t region, remainder, p, q, t; + uint16_t h, s, v; if ( hsv.s == 0 ) { @@ -37,8 +37,8 @@ RGB hsv_to_rgb( HSV hsv ) s = hsv.s; v = hsv.v; - region = h / 43; - remainder = (h - (region * 43)) * 6; + region = h * 6 / 255; + remainder = (h * 2 - region * 85) * 3; p = (v * (255 - s)) >> 8; q = (v * (255 - ((s * remainder) >> 8))) >> 8; @@ -46,6 +46,7 @@ RGB hsv_to_rgb( HSV hsv ) switch ( region ) { + case 6: case 0: rgb.r = v; rgb.g = t; -- cgit v1.2.3-24-g4f1b