HSV to RGB implementation in raw C, platform independent.
53{
54
55
56
57
58
60 fl::u8 saturation = hsv.sat;
61
62
63
65 fl::u8 brightness_floor = (value * invsat) / 256;
66
67
68
69
70 fl::u8 color_amplitude = value - brightness_floor;
71
72
73
76
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 fl::u8 rampup_amp_adj = (rampup * color_amplitude) / (256 / 4);
111 fl::u8 rampdown_amp_adj = (rampdown * color_amplitude) / (256 / 4);
112
113
114 fl::u8 rampup_adj_with_floor = rampup_amp_adj + brightness_floor;
115 fl::u8 rampdown_adj_with_floor = rampdown_amp_adj + brightness_floor;
116
117
118 if( section ) {
119 if( section == 1) {
120
121 rgb.r = brightness_floor;
122 rgb.g = rampdown_adj_with_floor;
123 rgb.b = rampup_adj_with_floor;
124 } else {
125
126 rgb.r = rampup_adj_with_floor;
127 rgb.g = brightness_floor;
128 rgb.b = rampdown_adj_with_floor;
129 }
130 } else {
131
132 rgb.r = rampdown_adj_with_floor;
133 rgb.g = rampup_adj_with_floor;
134 rgb.b = brightness_floor;
135 }
136}
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
#define APPLY_DIMMING(X)
Apply dimming compensation to values.
#define HSV_SECTION_3
Divide the color wheel into four sections, 64 elements each.