rgbToOklab static method
Converts an sRGB color to an Oklab color.
Implementation
static OklabColor rgbToOklab(RgbColor rgbColor) {
if (rgbColor.isBlack) return OklabColor(0.0, 0.0, 0.0, rgbColor.alpha);
if (rgbColor.isWhite) return OklabColor(1.0, 0.0, 0.0, rgbColor.alpha);
final lrgb = rgbColor.linearize();
final l = ((0.4122214708 * lrgb.red) +
(0.5363325363 * lrgb.green) +
(0.0514459929 * lrgb.blue))
.cbrt();
final m = ((0.2119034982 * lrgb.red) +
(0.6806995451 * lrgb.green) +
(0.1073969566 * lrgb.blue))
.cbrt();
final s = ((0.0883024619 * lrgb.red) +
(0.2817188376 * lrgb.green) +
(0.6299787005 * lrgb.blue))
.cbrt();
return OklabColor(
(0.2104542553 * l) + (0.7936177850 * m) - (0.0040720468 * s),
(1.9779984951 * l) - (2.4285922050 * m) + (0.4505937099 * s),
(0.0259040371 * l) + (0.7827717662 * m) - (0.8086757660 * s),
rgbColor.alpha,
);
}