getHSL method
Implementation
HslData getHSL(HslData target, [String colorSpace = LinearSRGBColorSpace]) {
// h,s,l ranges are in 0.0 - 1.0
ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);
double r = _rgb.r, g = _rgb.g, b = _rgb.b;
double max = Math.max3(r, g, b).toDouble();
double min = Math.min3(r, g, b).toDouble();
double hue, saturation;
double lightness = (min + max) / 2.0;
if (min == max) {
hue = 0;
saturation = 0;
} else {
double delta = max - min;
saturation = lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);
if (max == r) {
hue = (g - b) / delta + (g < b ? 6 : 0);
} else if (max == g) {
hue = (b - r) / delta + 2;
//} else if (max == b) {
} else {
hue = (r - g) / delta + 4;
}
hue /= 6;
}
target.h = hue;
target.s = saturation;
target.l = lightness;
return target;
}