X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=quantum%2Fcolor.c;h=a309da379a41cbefbb1e077a71fa8b1347e69bbd;hb=6af77551c67c846b06c596cbd367d66c755f8051;hp=8ede053e71193f3d8744877f615828ddf031fcd3;hpb=14b7602a65dedaf51db1c9288144765d43a83a15;p=qmk_firmware.git diff --git a/quantum/color.c b/quantum/color.c index 8ede053e7..a309da379 100644 --- a/quantum/color.c +++ b/quantum/color.c @@ -22,14 +22,18 @@ 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 ) { +#ifdef USE_CIE1931_CURVE + rgb.r = rgb.g = rgb.b = pgm_read_byte( &CIE1931_CURVE[hsv.v] ); +#else rgb.r = hsv.v; rgb.g = hsv.v; rgb.b = hsv.v; +#endif return rgb; } @@ -37,8 +41,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 +50,7 @@ RGB hsv_to_rgb( HSV hsv ) switch ( region ) { + case 6: case 0: rgb.r = v; rgb.g = t; @@ -78,9 +83,11 @@ RGB hsv_to_rgb( HSV hsv ) break; } +#ifdef USE_CIE1931_CURVE rgb.r = pgm_read_byte( &CIE1931_CURVE[rgb.r] ); rgb.g = pgm_read_byte( &CIE1931_CURVE[rgb.g] ); rgb.b = pgm_read_byte( &CIE1931_CURVE[rgb.b] ); +#endif return rgb; }