#import <qthing.h> #include <cmath> namespace qthing { // TODO: should return RGB once that can be casted to RGBW RGB hue(const float hue, const float value) { if (value <= 0) { return RGB(); } auto h = fmod(hue, 1); if (h < 0) { h += 1; } h = h * 3; auto v = value > 1 ? 1 : value; if (h < 1) { return RGB((1 - h) * v, h * v, 0); } else if (h < 2) { h -= 1; return RGB(0, (1 - h) * v, h * v); } else { h -= 2; return RGB(h * v, 0, (1 - h) * v); } } }