hsvToColor function

int hsvToColor({
  1. required int hue,
  2. required int saturation,
  3. required int value,
  4. required int opacity,
})

Implementation

int hsvToColor({
  required int hue,
  required int saturation,
  required int value,
  required int opacity,
}) {
  double h = hue / 360;
  double s = saturation / 100;
  double v = value / 100;

  int i = (h * 6).floor();
  double f = h * 6 - i;
  double p = v * (1 - s);
  double q = v * (1 - f * s);
  double t = v * (1 - (1 - f) * s);

  double r, g, b;
  switch (i % 6) {
    case 0:
      r = v;
      g = t;
      b = p;
      break;
    case 1:
      r = q;
      g = v;
      b = p;
      break;
    case 2:
      r = p;
      g = v;
      b = t;
      break;
    case 3:
      r = p;
      g = q;
      b = v;
      break;
    case 4:
      r = t;
      g = p;
      b = v;
      break;
    case 5:
      r = v;
      g = p;
      b = q;
      break;
    default:
      r = 0;
      g = 0;
      b = 0;
      break;
  }

  int red = (r * 255).round();
  int green = (g * 255).round();
  int blue = (b * 255).round();

  return (opacity & 0xff) << 24 | (red & 0xff) << 16 | (green & 0xff) << 8 | (blue & 0xff);
}