maxChroma function
Largest in-gamut chroma at lightness l and hue hDeg: 24 bisection
steps on 0, 0.4 (error < 3e-8). 0 at L ≤ 0 or L ≥ 1.
Implementation
double maxChroma(double l, double hDeg) {
if (l <= 0 || l >= 1) return 0;
final (s, co) = detSinCosDeg(hDeg);
var lo = 0.0;
var hi = chromaSearchMax;
for (var i = 0; i < 24; i++) {
final mid = (lo + hi) * 0.5;
if (inGamut(oklabToLin((l, mid * co, mid * s)))) {
lo = mid;
} else {
hi = mid;
}
}
return lo;
}