rgb2hsv static method

List<double> rgb2hsv(
  1. int r,
  2. int g,
  3. int b
)

Converts RGB values to HSV values.

Returns a list of doubles representing the HSV values. h, s, v

Implementation

static List<double> rgb2hsv(int r, int g, int b) {
  final double R = r / 255;
  final double G = g / 255;
  final double B = b / 255;

  final double maximum = max(R, max(G, B));
  final double minimum = min(R, min(G, B));
  final double delta = maximum - minimum;

  double h = 0;
  double s = 0;
  double v = maximum;

  if (delta != 0) {
    s = delta / maximum;

    if (R == maximum) {
      h = (G - B) / delta;
    } else if (G == maximum) {
      h = 2 + (B - R) / delta;
    } else if (B == maximum) {
      h = 4 + (R - G) / delta;
    }

    h *= 60;

    if (h < 0) {
      h += 360;
    }
  }

  return [h.roundToDouble(), s, v];
}