Gamut.fromPrimaries constructor
Gamut.fromPrimaries({})
Creates a Gamut from an RGB-to-XYZ matrix and transfer functions.
The composite matrices are computed automatically. The critical planes
table is generated from the linearize function.
Implementation
factory Gamut.fromPrimaries({
required String name,
required List<List<double>> rgbToXyz,
required double Function(double) trueDelinearize,
required double Function(double) linearize,
}) {
final scaledDiscount = computeScaledDiscountFromLinrgb(rgbToXyz);
final linrgbFromSD = computeLinrgbFromScaledDiscount(rgbToXyz);
final xyzToRgb = invert3x3(rgbToXyz);
final yRow = [rgbToXyz[1][0], rgbToXyz[1][1], rgbToXyz[1][2]];
// Generate critical planes from the linearize function
final planes = List<double>.generate(255, (i) => linearize(i + 0.5));
return Gamut(
name: name,
yFromLinrgb: yRow,
scaledDiscountFromLinrgb: scaledDiscount,
linrgbFromScaledDiscount: linrgbFromSD,
rgbToXyz: rgbToXyz,
xyzToRgb: xyzToRgb,
trueDelinearize: trueDelinearize,
linearize: linearize,
criticalPlanes: planes,
);
}