rgbToHsl static method
Converts a RGB color to a HSL color.
Implementation
static HslColor rgbToHsl(RgbColor rgbColor) {
if (rgbColor.isBlack) return HslColor(0, 0, 0, rgbColor.alpha);
if (rgbColor.isWhite) return HslColor(0, 0, 100, rgbColor.alpha);
if (rgbColor.isMonochromatic) {
return HslColor(0, 0, rgbColor.red / 255 * 100, rgbColor.alpha);
}
final rgb = rgbColor.toFactoredList();
final max = rgb.reduce(math.max);
final min = rgb.reduce(math.min);
final difference = max - min;
final lightness = (max + min) / 2;
final saturation = (lightness > 0.5)
? difference / (2 - max - min)
: difference / (max + min);
final alpha = rgbColor.alpha / 255;
return HslColor.extrapolate(
<double>[getHue(rgbColor), saturation, lightness, alpha]);
}