hexToHsl function

HSL hexToHsl(
  1. String hex
)

Implementation

HSL hexToHsl(String hex) {
  final rgb = hexToRgb(hex);

  final r = rgb.r / 255;
  final g = rgb.g / 255;
  final b = rgb.b / 255;

  final maxN = max(r, max(g, b));
  final minN = min(r, min(g, b));

  final l = (maxN + minN) / 2;
  double h = 0, s = 0;

  if (maxN == minN) {
    h = s = 0;
  } else {
    final d = maxN - minN;
    s = l > 0.5 ? d / (2 - maxN - minN) : d / (maxN + minN);

    if (maxN == r) {
      h = (g - b) / d + (g < b ? 6 : 0);
    } else if (maxN == g) {
      h = (b - r) / d + 2;
    } else if (maxN == b) {
      h = (r - g) / d + 4;
    }

    h = h * 6;
  }

  return HSL(
    h: (h * 100).roundToDouble() / 10,
    s: (s * 1000).roundToDouble() / 10,
    l: (l * 1000).roundToDouble() / 10,
  );
}