Files
Schnappix/node_modules/react-native-reanimated/lib/module/culori/lrgb.js
T

65 lines
1.4 KiB
JavaScript

'use strict';
/*
* The vast majority of the code exported by this module is a direct copy of the code from the culori package (see
* https://culorijs.org/), which deserves full credit for it. In particular, code from the following path has been used:
* - https://github.com/Evercoder/culori/tree/v4.0.1/src/lrgb
*/
// TODO Remove once we have the option to get a workletized version of the culori package
// https://github.com/software-mansion/react-native-reanimated/pull/6782#pullrequestreview-2488830278
const channelFromLrgb = (c = 0) => {
'worklet';
const abs = Math.abs(c);
if (abs > 0.0031308) {
return (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);
}
return c * 12.92;
};
const convertLrgbToRgb = ({
r,
g,
b,
alpha
}) => {
'worklet';
return {
r: channelFromLrgb(r),
g: channelFromLrgb(g),
b: channelFromLrgb(b),
alpha
};
};
const channelToLrgb = (c = 0) => {
'worklet';
const abs = Math.abs(c);
if (abs <= 0.04045) {
return c / 12.92;
}
return (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);
};
const convertRgbToLrgb = ({
r,
g,
b,
alpha
}) => {
'worklet';
return {
r: channelToLrgb(r),
g: channelToLrgb(g),
b: channelToLrgb(b),
alpha
};
};
export default {
convert: {
fromRgb: convertRgbToLrgb,
toRgb: convertLrgbToRgb
}
};
//# sourceMappingURL=lrgb.js.map