Colour.fromHSL constructor

Colour.fromHSL({
  1. required double h,
  2. required double s,
  3. required double l,
})

Implementation

factory Colour.fromHSL({
  required double h,
  required double s,
  required double l,
}) {
  double red, green, blue;

  double normalizedH = h / 360.0;

  if (s == 0) {
    red = green = blue = l;
  } else {
    double q = l < 0.5 ? l * (1 + s) : l + s - l * s;
    double p = 2 * l - q;

    red = _hueToRgb(p, q, normalizedH + 1 / 3);
    green = _hueToRgb(p, q, normalizedH);
    blue = _hueToRgb(p, q, normalizedH - 1 / 3);
    return Colour(
      alpha: 255,
      red: red.round(),
      green: green.round(),
      blue: blue.round(),
    );
  }

  return Colour.fromARGB(
    opacity: 100.0,
    red: (red * 255).round(),
    green: (green * 255).round(),
    blue: (blue * 255).round(),
  );
}