toRgbColor method

  1. @override
RgbColor toRgbColor()
override

Implementation

@override
RgbColor toRgbColor() {
  var rgb = <num>[0, 0, 0];

  num hue = h / 360 % 1;
  num saturation = s / 100;
  num luminance = l / 100;

  if (hue < 1 / 6) {
    rgb[0] = 1;
    rgb[1] = hue * 6;
  } else if (hue < 2 / 6) {
    rgb[0] = 2 - hue * 6;
    rgb[1] = 1;
  } else if (hue < 3 / 6) {
    rgb[1] = 1;
    rgb[2] = hue * 6 - 2;
  } else if (hue < 4 / 6) {
    rgb[1] = 4 - hue * 6;
    rgb[2] = 1;
  } else if (hue < 5 / 6) {
    rgb[0] = hue * 6 - 4;
    rgb[2] = 1;
  } else {
    rgb[0] = 1;
    rgb[2] = 6 - hue * 6;
  }

  rgb = rgb.map((val) => val + (1 - saturation) * (0.5 - val)).toList();

  if (luminance < 0.5) {
    rgb = rgb.map((val) => luminance * 2 * val).toList();
  } else {
    rgb = rgb.map((val) => luminance * 2 * (1 - val) + 2 * val - 1).toList();
  }

  rgb = rgb.map((val) => (val * 255).round()).toList();

  return RgbColor(rgb[0], rgb[1], rgb[2]);
}