toHslColor method

  1. @override
HslColor toHslColor()
override

Implementation

@override
HslColor toHslColor() {
  var rf = r / 255;
  var gf = g / 255;
  var bf = b / 255;
  var cMax = [rf, gf, bf].reduce(max);
  var cMin = [rf, gf, bf].reduce(min);
  var delta = cMax - cMin;
  num hue;
  num saturation;
  num luminance;

  if (cMax == rf) {
    hue = 60 * ((gf - bf) / delta % 6);
  } else if (cMax == gf) {
    hue = 60 * ((bf - rf) / delta + 2);
  } else {
    hue = 60 * ((rf - gf) / delta + 4);
  }

  if (hue.isNaN || hue.isInfinite) {
    hue = 0;
  }

  luminance = (cMax + cMin) / 2;

  if (delta == 0) {
    saturation = 0;
  } else {
    saturation = delta / (1 - (luminance * 2 - 1).abs());
  }

  return HslColor(hue, saturation * 100, luminance * 100);
}