HslColor.fromRGB constructor

HslColor.fromRGB(
  1. int r,
  2. int g,
  3. int b
)

Returns an HslColor from RGB

Implementation

factory HslColor.fromRGB(int r, int g, int b) {
  final maxValue = [r, g, b].max / 255;
  final minValue = [r, g, b].min / 255;
  final delta = maxValue - minValue;

  final l = (maxValue + minValue) / 2;
  final s = delta / (1 - (2 * l - 1).abs());

  if (delta == 0) {
    return HslColor(h: 0, s: 0, l: l);
  }

  double h;
  if (maxValue == r / 255) {
    h = 60 * (((g / 255 - b / 255) / delta) % 6);
  } else if (maxValue == g / 255) {
    h = 60 * ((b / 255 - r / 255) / delta + 2);
  } else {
    h = 60 * ((r / 255 - g / 255) / delta + 4);
  }

  return HslColor(h: h, s: s * 100, l: l * 100);
}