toHsl method

HslColor toHsl()

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