lighter static method

double? lighter(
  1. double tone,
  2. double ratio
)

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? lighter(double tone, double ratio) {
  if (tone < 0.0 || tone > 100.0) return null;
  // Invert the contrast ratio equation to determine lighter Y given a ratio and darker Y.
  final darkY = ColorUtils.yFromLstar(tone);
  final lightY = ratio * (darkY + 5.0) - 5.0;
  if (lightY < 0.0 || lightY > 100.0) return null;
  final realContrast = ratioOfYs(lightY, darkY);
  final delta = (realContrast - ratio).abs();
  if (realContrast < ratio && delta > _contrastRatioEpsilon) return null;
  final returnValue =
      ColorUtils.lstarFromY(lightY) + _luminanceGamutMapTolerance;
  // NOMUTANTS--important validation step; functions it is calling may change implementation.
  return returnValue < 0.0 || returnValue > 100.0 ? null : returnValue;
}