2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
21 #include "colorconversion.h"
24 * Source below found here: http://www.kasperkamperman.com/blog/arduino/arduino-programming-hsb-to-rgb/
27 rgbColor24bpp_t
* hsvToRgb24(const hsvColor_t
* c
)
29 static rgbColor24bpp_t r
;
32 uint16_t sat
= 255 - c
->s
;
36 if (sat
== 0) { // Acromatic color (gray). Hue doesn't mind.
42 base
= ((255 - sat
) * val
) >> 8;
47 r
.rgb
.g
= (((val
- base
) * hue
) / 60) + base
;
51 r
.rgb
.r
= (((val
- base
) * (60 - (hue
% 60))) / 60) + base
;
59 r
.rgb
.b
= (((val
- base
) * (hue
% 60)) / 60) + base
;
64 r
.rgb
.g
= (((val
- base
) * (60 - (hue
% 60))) / 60) + base
;
69 r
.rgb
.r
= (((val
- base
) * (hue
% 60)) / 60) + base
;
77 r
.rgb
.b
= (((val
- base
) * (60 - (hue
% 60))) / 60) + base
;