HSV to RGB implementation in raw C, platform independent.
54 {
55
56
57
58
59
61 fl::u8 saturation = hsv.sat;
62
63
64
66 fl::u8 brightness_floor = (value * invsat) / 256;
67
68
69
70
71 fl::u8 color_amplitude = value - brightness_floor;
72
73
74
77
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
111 fl::u8 rampup_amp_adj = (rampup * color_amplitude) / (256 / 4);
112 fl::u8 rampdown_amp_adj = (rampdown * color_amplitude) / (256 / 4);
113
114
115 fl::u8 rampup_adj_with_floor = rampup_amp_adj + brightness_floor;
116 fl::u8 rampdown_adj_with_floor = rampdown_amp_adj + brightness_floor;
117
118
119 if( section ) {
120 if( section == 1) {
121
122 rgb.r = brightness_floor;
123 rgb.g = rampdown_adj_with_floor;
124 rgb.b = rampup_adj_with_floor;
125 } else {
126
127 rgb.r = rampup_adj_with_floor;
128 rgb.g = brightness_floor;
129 rgb.b = rampdown_adj_with_floor;
130 }
131 } else {
132
133 rgb.r = rampdown_adj_with_floor;
134 rgb.g = rampup_adj_with_floor;
135 rgb.b = brightness_floor;
136 }
137}
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.