rgbToHsl static method

HslColor rgbToHsl(
  1. RgbColor rgbColor
)

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]);
}