rgbToHsv function
Convert an RGB color to HSV.
Implementation
void rgbToHsv(num r, num g, num b, List<num> hsv) {
final minCh = min(r, min(g, b));
final maxCh = max(r, max(g, b));
final delta = maxCh - minCh;
if (maxCh == 0 || delta == 0) {
hsv[0] = 0;
hsv[1] = 0;
hsv[2] = 0;
return;
}
num h, s, v;
v = maxCh;
s = delta / maxCh; // s
if (r == maxCh) {
h = (g - b) / delta; // between yellow & magenta
} else if (g == maxCh) {
h = 2 + (b - r) / delta; // between cyan & yellow
} else {
h = 4 + (r - g) / delta; // between magenta & cyan
}
h *= 60; // degrees
if (h < 0) {
h += 360;
}
hsv[0] = h;
hsv[1] = s;
hsv[2] = v;
}