hexToHsb function

HSB hexToHsb(
  1. String hex
)

Implementation

HSB hexToHsb(String hex) {
  final rgb = hexToRgb(hex);

  final r = rgb.r;
  final g = rgb.g.toDouble();
  final b = rgb.b;

  final maximum = max(max(r, g), b);
  final minimum = min(r, min(g, b));

  final d = maximum - minimum;
  final s = maximum == 0 ? 0 : d / maximum;

  final v = maximum / 255;

  late double h;

  if (maximum == minimum) {
    h = 0;
  } else if (maximum == r) {
    h = (g - b) + d * (g < b ? 6 : 0);
    h /= 6 * d;
  } else if (maximum == g) {
    h = (b - r) + d * 2;
    h /= 6 * d;
  } else if (maximum == b) {
    h = (r - g) + d * 4;
    h /= 6 * d;
  }

  return HSB(
    h: (h * 3600).roundToDouble() / 10,
    s: (s * 1000).roundToDouble() / 10,
    b: (v * 1000).roundToDouble() / 10,
  );
}