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
This commit is contained in:
parent
3235c8527d
commit
12a07dae33
2 changed files with 24 additions and 33 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue