summary refs log tree commit diff
path: root/quantum/color.c
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2019-05-01 20:59:01 -0500
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-05-01 18:59:01 -0700
commit12a07dae33aaa59b8172f13f25af74e0cf3b82cc (patch)
treeb95cafafd6f03466c2b5d02396e52db264460cbf /quantum/color.c
parent3235c8527dd292d4a5e5e28302e118f3ef1a043e (diff)
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
Diffstat (limited to 'quantum/color.c')
-rw-r--r--quantum/color.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/quantum/color.c b/quantum/color.c
index c49877592e..466e6edacb 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;