xyzToRgb function

List<int> xyzToRgb (
  1. num x,
  2. num y,
  3. num z
)

Convert an XYZ color to RGB.

Implementation

List<int> xyzToRgb(num x, num y, num z) {
  x /= 100;
  y /= 100;
  z /= 100;
  num r = (3.2406 * x) + (-1.5372 * y) + (-0.4986 * z);
  num g = (-0.9689 * x) + (1.8758 * y) + (0.0415 * z);
  num b = (0.0557 * x) + (-0.2040 * y) + (1.0570 * z);
  if (r > 0.0031308) {
    r = (1.055 * pow(r, 0.4166666667)) - 0.055;
  } else {
    r *= 12.92;
  }
  if (g > 0.0031308) {
    g = (1.055 * pow(g, 0.4166666667)) - 0.055;
  } else {
    g *= 12.92;
  }
  if (b > 0.0031308) {
    b = (1.055 * pow(b, 0.4166666667)) - 0.055;
  } else {
    b *= 12.92;
  }

  return [
    (r * 255).clamp(0, 255).toInt(),
    (g * 255).clamp(0, 255).toInt(),
    (b * 255).clamp(0, 255).toInt()
  ];
}