40 lines
783 B
JavaScript
40 lines
783 B
JavaScript
import { interpolatorLinear } from '../interpolate/linear.js';
|
|
import { fixupAlpha } from '../fixup/alpha.js';
|
|
import convertRgbToXyb from './convertRgbToXyb.js';
|
|
import convertXybToRgb from './convertXybToRgb.js';
|
|
|
|
/*
|
|
The XYB color space, used in JPEG XL.
|
|
Reference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf
|
|
*/
|
|
|
|
const definition = {
|
|
mode: 'xyb',
|
|
channels: ['x', 'y', 'b', 'alpha'],
|
|
parse: ['--xyb'],
|
|
serialize: '--xyb',
|
|
|
|
toMode: {
|
|
rgb: convertXybToRgb
|
|
},
|
|
|
|
fromMode: {
|
|
rgb: convertRgbToXyb
|
|
},
|
|
|
|
ranges: {
|
|
x: [-0.0154, 0.0281],
|
|
y: [0, 0.8453],
|
|
b: [-0.2778, 0.388]
|
|
},
|
|
|
|
interpolate: {
|
|
x: interpolatorLinear,
|
|
y: interpolatorLinear,
|
|
b: interpolatorLinear,
|
|
alpha: { use: interpolatorLinear, fixup: fixupAlpha }
|
|
}
|
|
};
|
|
|
|
export default definition;
|