solveToDisplayRgb static method

(double, double, double) solveToDisplayRgb(
  1. double hueDegrees,
  2. double chroma,
  3. double lstar, {
  4. Gamut? gamut,
})

Solves for the display-encoded RGB color in 0..1 for the given gamut.

This is the primary method for wide gamut use. Returns (r, g, b) where each component is in 0..1, display-encoded using the gamut's transfer function.

Example:

final (r, g, b) = HctSolver.solveToDisplayRgb(
  120.0, 50.0, 60.0,
  gamut: Gamut.displayP3,
);
// r, g, b are in [0..1], suitable for color(display-p3 r g b)

Implementation

static (double, double, double) solveToDisplayRgb(
  double hueDegrees,
  double chroma,
  double lstar, {
  Gamut? gamut,
}) {
  gamut ??= Gamut.srgb;
  final (linR, linG, linB) = solveToLinrgb(
    hueDegrees,
    chroma,
    lstar,
    gamut: gamut,
  );
  return (
    (gamut.trueDelinearize(linR) / 255.0).clamp(0.0, 1.0),
    (gamut.trueDelinearize(linG) / 255.0).clamp(0.0, 1.0),
    (gamut.trueDelinearize(linB) / 255.0).clamp(0.0, 1.0),
  );
}