hexToHct function

AstryxHct hexToHct(
  1. String hex
)

Converts a hex colour to AstryxHct.

Unparseable input is treated as black, matching upstream.

Implementation

AstryxHct hexToHct(String hex) {
  final (r, g, b) = _hexToRgb(hex);
  final lr = _srgbToLinear(r);
  final lg = _srgbToLinear(g);
  final lb = _srgbToLinear(b);
  final (x, y, z) = _linearRgbToXyz(lr, lg, lb);
  final (l, a, bLab) = _xyzToLab(x, y, z);

  final hueRad = math.atan2(bLab, a);
  var hue = hueRad * 180 / math.pi;
  if (hue < 0) hue += 360;

  final chroma = math.sqrt(a * a + bLab * bLab);

  return AstryxHct(
    hue: hue,
    chroma: chroma,
    tone: math.max(0, math.min(100, l)),
  );
}