darker static method
Returns T in HCT, L* in Lab* <= tone parameter that ensures ratio with input T/L*. Returns null if ratio cannot be achieved.
Implementation
static double? darker(double tone, double ratio) {
if (tone < 0.0 || tone > 100.0) return null;
// Invert the contrast ratio equation to determine darker Y given a ratio and lighter Y.
final lightY = ColorUtils.yFromLstar(tone);
final darkY = ((lightY + 5.0) / ratio) - 5.0;
if (darkY < 0.0 || darkY > 100.0) return null;
final realContrast = ratioOfYs(lightY, darkY);
final delta = (realContrast - ratio).abs();
if (realContrast < ratio && delta > _contrastRatioEpsilon) return null;
// For information on 0.4 constant, see comment in lighter(tone, ratio).
final returnValue =
ColorUtils.lstarFromY(darkY) - _luminanceGamutMapTolerance;
// NOMUTANTS--important validation step; functions it is calling may change implementation.
return returnValue < 0.0 || returnValue > 100.0 ? null : returnValue;
}