UNPKG

chroma-js

Version:

JavaScript library for color conversions

121 lines (107 loc) 2.87 kB
const labConstants = { // Corresponds roughly to RGB brighter/darker Kn: 18, // D65 standard referent labWhitePoint: 'd65', Xn: 0.95047, Yn: 1, Zn: 1.08883, t0: 0.137931034, // 4 / 29 t1: 0.206896552, // 6 / 29 t2: 0.12841855, // 3 * t1 * t1 t3: 0.008856452, // t1 * t1 * t1, kE: 216.0 / 24389.0, kKE: 8.0, kK: 24389.0 / 27.0, RefWhiteRGB: { // sRGB X: 0.95047, Y: 1, Z: 1.08883 }, MtxRGB2XYZ: { m00: 0.4124564390896922, m01: 0.21267285140562253, m02: 0.0193338955823293, m10: 0.357576077643909, m11: 0.715152155287818, m12: 0.11919202588130297, m20: 0.18043748326639894, m21: 0.07217499330655958, m22: 0.9503040785363679 }, MtxXYZ2RGB: { m00: 3.2404541621141045, m01: -0.9692660305051868, m02: 0.055643430959114726, m10: -1.5371385127977166, m11: 1.8760108454466942, m12: -0.2040259135167538, m20: -0.498531409556016, m21: 0.041556017530349834, m22: 1.0572251882231791 }, // used in rgb2xyz As: 0.9414285350000001, Bs: 1.040417467, Cs: 1.089532651, MtxAdaptMa: { m00: 0.8951, m01: -0.7502, m02: 0.0389, m10: 0.2664, m11: 1.7135, m12: -0.0685, m20: -0.1614, m21: 0.0367, m22: 1.0296 }, MtxAdaptMaI: { m00: 0.9869929054667123, m01: 0.43230526972339456, m02: -0.008528664575177328, m10: -0.14705425642099013, m11: 0.5183602715367776, m12: 0.04004282165408487, m20: 0.15996265166373125, m21: 0.0492912282128556, m22: 0.9684866957875502 } }; export default labConstants; // taken from https://de.mathworks.com/help/images/ref/whitepoint.html const ILLUMINANTS = new Map([ // ASTM E308-01 ['a', [1.0985, 0.35585]], // Wyszecki & Stiles, p. 769 ['b', [1.0985, 0.35585]], // C ASTM E308-01 ['c', [0.98074, 1.18232]], // D50 (ASTM E308-01) ['d50', [0.96422, 0.82521]], // D55 (ASTM E308-01) ['d55', [0.95682, 0.92149]], // D65 (ASTM E308-01) ['d65', [0.95047, 1.08883]], // E (ASTM E308-01) ['e', [1, 1, 1]], // F2 (ASTM E308-01) ['f2', [0.99186, 0.67393]], // F7 (ASTM E308-01) ['f7', [0.95041, 1.08747]], // F11 (ASTM E308-01) ['f11', [1.00962, 0.6435]], ['icc', [0.96422, 0.82521]] ]); export function setLabWhitePoint(name) { const ill = ILLUMINANTS.get(String(name).toLowerCase()); if (!ill) { throw new Error('unknown Lab illuminant ' + name); } labConstants.labWhitePoint = name; labConstants.Xn = ill[0]; labConstants.Zn = ill[1]; } export function getLabWhitePoint() { return labConstants.labWhitePoint; }