xvmcmm/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js
2024-06-04 13:41:33 +02:00

44 lines
994 B
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Convert Rec. 2020 values to CIE XYZ D65
References:
* https://drafts.csswg.org/css-color/#color-conversion-code
* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html
* https://www.itu.int/rec/R-REC-BT.2020/en
*/
const α = 1.09929682680944;
const β = 0.018053968510807;
const linearize = v => {
let abs = Math.abs(v);
if (abs < β * 4.5) {
return v / 4.5;
}
return (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);
};
const convertRec2020ToXyz65 = rec2020 => {
let r = linearize(rec2020.r);
let g = linearize(rec2020.g);
let b = linearize(rec2020.b);
let res = {
mode: 'xyz65',
x:
0.6369580483012911 * r +
0.1446169035862083 * g +
0.1688809751641721 * b,
y:
0.262700212011267 * r +
0.6779980715188708 * g +
0.059301716469862 * b,
z: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b
};
if (rec2020.alpha !== undefined) {
res.alpha = rec2020.alpha;
}
return res;
};
export default convertRec2020ToXyz65;