toHsl method
Implementation
HslColor toHsl() {
final r = bound01(red.toDouble(), 255.0);
final g = bound01(green.toDouble(), 255.0);
final b = bound01(blue.toDouble(), 255.0);
final max = [r, g, b].reduce(math.max);
final min = [r, g, b].reduce(math.min);
double h = 0.0;
double s = 0.0;
final double l = (max + min) / 2;
if (max == min) {
h = s = 0.0;
} else {
final double d = max - min;
s = l > 0.5 ? d / (2.0 - max - min) : d / (max + min);
if (max == r) {
h = (g - b) / d + (g < b ? 6 : 0);
} else if (max == g) {
h = (b - r) / d + 2;
} else if (max == b) {
h = (r - g) / d + 4;
}
}
h /= 6.0;
return HslColor(h: h * 360, s: s, l: l, a: alpha.toDouble());
}