UNPKG

colorjs.io

Version:

Let’s get serious about color

40 lines (36 loc) 905 B
import ColorSpace from "../space.js"; import XYZ_D65 from "./xyz-d65.js"; const Yw = 203; // absolute luminance of media white export default new ColorSpace({ // Absolute CIE XYZ, with a D65 whitepoint, // as used in most HDR colorspaces as a starting point. // SDR spaces are converted per BT.2048 // so that diffuse, media white is 203 cd/m² id: "xyz-abs-d65", name: "Absolute XYZ D65", coords: { x: { refRange: [0, 9504.7], name: "Xa", }, y: { refRange: [0, 10000], name: "Ya", }, z: { refRange: [0, 10888.3], name: "Za", } }, base: XYZ_D65, fromBase (XYZ) { // Make XYZ absolute, not relative to media white // Maximum luminance in PQ is 10,000 cd/m² // Relative XYZ has Y=1 for media white return XYZ.map (v => Math.max(v * Yw, 0)); }, toBase (AbsXYZ) { // Convert to media-white relative XYZ return AbsXYZ.map(v => Math.max(v / Yw, 0)); } });