linToOklab function

Lab linToOklab(
  1. LinRgb c
)

Linear sRGB → OKLab (sign-matched cube root).

Implementation

Lab linToOklab(LinRgb c) {
  final (r, g, b) = c;
  final l = detCbrt(_rgb2lms[0] * r + _rgb2lms[1] * g + _rgb2lms[2] * b);
  final m = detCbrt(_rgb2lms[3] * r + _rgb2lms[4] * g + _rgb2lms[5] * b);
  final s = detCbrt(_rgb2lms[6] * r + _rgb2lms[7] * g + _rgb2lms[8] * b);
  return (
    _lms2lab[0] * l + _lms2lab[1] * m + _lms2lab[2] * s,
    _lms2lab[3] * l + _lms2lab[4] * m + _lms2lab[5] * s,
    _lms2lab[6] * l + _lms2lab[7] * m + _lms2lab[8] * s,
  );
}