color-elements 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/_build/copy-config.js +90 -0
- package/_build/copy-config.json +18 -0
- package/_build/eleventy.js +16 -0
- package/_data/eleventyComputed.11tydata.js +29 -0
- package/_headers +2 -0
- package/_redirects +2 -0
- package/assets/css/style.css +1 -0
- package/assets/js/index.js +15 -0
- package/color-gamut/README.md +75 -0
- package/color-gamut/color-gamut.js +172 -0
- package/color-gamut/style.css +32 -0
- package/color-slider/README.md +84 -0
- package/color-slider/color-slider.js +79 -0
- package/color-slider/style.css +65 -0
- package/color-swatch/color-swatch.css +41 -0
- package/color-swatch/color-swatch.js +79 -0
- package/color-swatch/index.njk +40 -0
- package/common/attributes.js +68 -0
- package/common/color.js +10 -0
- package/css-color/css-color.js +256 -0
- package/css-color/index.njk +43 -0
- package/css-color/style.css +67 -0
- package/elements.11tydata.json +5 -0
- package/index.js +4 -0
- package/lib/README.md +4 -0
- package/lib/colorjs.io/LICENSE +21 -0
- package/lib/colorjs.io/README.json +3 -0
- package/lib/colorjs.io/README.md +257 -0
- package/lib/colorjs.io/colorjs.io/LICENSE +21 -0
- package/lib/colorjs.io/colorjs.io/README.json +3 -0
- package/lib/colorjs.io/colorjs.io/README.md +257 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +5437 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.cjs +5759 -0
- package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.js +5760 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +7400 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.js +5755 -0
- package/lib/colorjs.io/colorjs.io/dist/color.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +7399 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +7395 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +1 -0
- package/lib/colorjs.io/colorjs.io/dist/color.min.js +2 -0
- package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +1 -0
- package/lib/colorjs.io/colorjs.io/package.json +113 -0
- package/lib/colorjs.io/colorjs.io/src/CATs.js +131 -0
- package/lib/colorjs.io/colorjs.io/src/adapt.js +62 -0
- package/lib/colorjs.io/colorjs.io/src/angles.js +44 -0
- package/lib/colorjs.io/colorjs.io/src/chromaticity.js +33 -0
- package/lib/colorjs.io/colorjs.io/src/clone.js +7 -0
- package/lib/colorjs.io/colorjs.io/src/color.js +201 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +102 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +17 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +22 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +20 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +27 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +25 -0
- package/lib/colorjs.io/colorjs.io/src/contrast/index.js +6 -0
- package/lib/colorjs.io/colorjs.io/src/contrast.js +28 -0
- package/lib/colorjs.io/colorjs.io/src/defaults.js +12 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +179 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +7 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +114 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +24 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +43 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +19 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +27 -0
- package/lib/colorjs.io/colorjs.io/src/deltaE.js +19 -0
- package/lib/colorjs.io/colorjs.io/src/display.js +83 -0
- package/lib/colorjs.io/colorjs.io/src/distance.js +21 -0
- package/lib/colorjs.io/colorjs.io/src/equals.js +10 -0
- package/lib/colorjs.io/colorjs.io/src/get.js +11 -0
- package/lib/colorjs.io/colorjs.io/src/getAll.js +20 -0
- package/lib/colorjs.io/colorjs.io/src/getColor.js +36 -0
- package/lib/colorjs.io/colorjs.io/src/hooks.js +37 -0
- package/lib/colorjs.io/colorjs.io/src/inGamut.js +25 -0
- package/lib/colorjs.io/colorjs.io/src/index-fn.js +28 -0
- package/lib/colorjs.io/colorjs.io/src/index.js +38 -0
- package/lib/colorjs.io/colorjs.io/src/interpolation.js +222 -0
- package/lib/colorjs.io/colorjs.io/src/keywords.js +158 -0
- package/lib/colorjs.io/colorjs.io/src/luminance.js +27 -0
- package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +44 -0
- package/lib/colorjs.io/colorjs.io/src/parse.js +198 -0
- package/lib/colorjs.io/colorjs.io/src/rgbspace.js +64 -0
- package/lib/colorjs.io/colorjs.io/src/serialize.js +86 -0
- package/lib/colorjs.io/colorjs.io/src/set.js +33 -0
- package/lib/colorjs.io/colorjs.io/src/setAll.js +12 -0
- package/lib/colorjs.io/colorjs.io/src/space-accessors.js +86 -0
- package/lib/colorjs.io/colorjs.io/src/space.js +440 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +11 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +76 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +54 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +362 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +157 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +130 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +91 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +162 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +65 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +58 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +133 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +29 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/index.js +8 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +118 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +53 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +74 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +74 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +67 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +68 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +85 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +74 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +68 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +22 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +13 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +28 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +19 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +27 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +31 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +37 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +30 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +127 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +12 -0
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +18 -0
- package/lib/colorjs.io/colorjs.io/src/to.js +26 -0
- package/lib/colorjs.io/colorjs.io/src/toGamut.js +310 -0
- package/lib/colorjs.io/colorjs.io/src/util.js +254 -0
- package/lib/colorjs.io/colorjs.io/src/variations.js +14 -0
- package/lib/colorjs.io/colorjs.io/types/index.d.cts +4 -0
- package/lib/colorjs.io/colorjs.io/types/index.d.ts +42 -0
- package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +13 -0
- package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +12 -0
- package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +7 -0
- package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +7 -0
- package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +160 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +11 -0
- package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +12 -0
- package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +2 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +14 -0
- package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +12 -0
- package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +17 -0
- package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +8 -0
- package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +4 -0
- package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +7 -0
- package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +4 -0
- package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +52 -0
- package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +8 -0
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +1 -0
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +63 -0
- package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +125 -0
- package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +77 -0
- package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +2 -0
- package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +10 -0
- package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
- package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +16 -0
- package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +10 -0
- package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +13 -0
- package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +18 -0
- package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +14 -0
- package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +1 -0
- package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
- package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +143 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +4 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
- package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +14 -0
- package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +45 -0
- package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +58 -0
- package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +5 -0
- package/lib/colorjs.io/dist/color-fn.cjs +5437 -0
- package/lib/colorjs.io/dist/color-fn.cjs.map +1 -0
- package/lib/colorjs.io/dist/color-fn.legacy.cjs +7048 -0
- package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +1 -0
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +2 -0
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +1 -0
- package/lib/colorjs.io/dist/color-fn.min.cjs +2 -0
- package/lib/colorjs.io/dist/color-fn.min.cjs.map +1 -0
- package/lib/colorjs.io/dist/color.cjs +5759 -0
- package/lib/colorjs.io/dist/color.cjs.map +1 -0
- package/lib/colorjs.io/dist/color.global.js +5760 -0
- package/lib/colorjs.io/dist/color.global.js.map +1 -0
- package/lib/colorjs.io/dist/color.global.legacy.js +7400 -0
- package/lib/colorjs.io/dist/color.global.legacy.js.map +1 -0
- package/lib/colorjs.io/dist/color.global.legacy.min.js +2 -0
- package/lib/colorjs.io/dist/color.global.legacy.min.js.map +1 -0
- package/lib/colorjs.io/dist/color.global.min.js +2 -0
- package/lib/colorjs.io/dist/color.global.min.js.map +1 -0
- package/lib/colorjs.io/dist/color.js +5755 -0
- package/lib/colorjs.io/dist/color.js.map +1 -0
- package/lib/colorjs.io/dist/color.legacy.cjs +7399 -0
- package/lib/colorjs.io/dist/color.legacy.cjs.map +1 -0
- package/lib/colorjs.io/dist/color.legacy.js +7395 -0
- package/lib/colorjs.io/dist/color.legacy.js.map +1 -0
- package/lib/colorjs.io/dist/color.legacy.min.cjs +2 -0
- package/lib/colorjs.io/dist/color.legacy.min.cjs.map +1 -0
- package/lib/colorjs.io/dist/color.legacy.min.js +2 -0
- package/lib/colorjs.io/dist/color.legacy.min.js.map +1 -0
- package/lib/colorjs.io/dist/color.min.cjs +2 -0
- package/lib/colorjs.io/dist/color.min.cjs.map +1 -0
- package/lib/colorjs.io/dist/color.min.js +2 -0
- package/lib/colorjs.io/dist/color.min.js.map +1 -0
- package/lib/colorjs.io/package.json +113 -0
- package/lib/colorjs.io/src/CATs.js +131 -0
- package/lib/colorjs.io/src/adapt.js +62 -0
- package/lib/colorjs.io/src/angles.js +44 -0
- package/lib/colorjs.io/src/chromaticity.js +33 -0
- package/lib/colorjs.io/src/clone.js +7 -0
- package/lib/colorjs.io/src/color.js +201 -0
- package/lib/colorjs.io/src/contrast/APCA.js +102 -0
- package/lib/colorjs.io/src/contrast/Lstar.js +17 -0
- package/lib/colorjs.io/src/contrast/Michelson.js +22 -0
- package/lib/colorjs.io/src/contrast/WCAG21.js +20 -0
- package/lib/colorjs.io/src/contrast/Weber.js +27 -0
- package/lib/colorjs.io/src/contrast/deltaPhi.js +25 -0
- package/lib/colorjs.io/src/contrast/index.js +6 -0
- package/lib/colorjs.io/src/contrast.js +28 -0
- package/lib/colorjs.io/src/defaults.js +12 -0
- package/lib/colorjs.io/src/deltaE/deltaE2000.js +179 -0
- package/lib/colorjs.io/src/deltaE/deltaE76.js +7 -0
- package/lib/colorjs.io/src/deltaE/deltaECMC.js +114 -0
- package/lib/colorjs.io/src/deltaE/deltaEHCT.js +51 -0
- package/lib/colorjs.io/src/deltaE/deltaEITP.js +24 -0
- package/lib/colorjs.io/src/deltaE/deltaEJz.js +43 -0
- package/lib/colorjs.io/src/deltaE/deltaEOK.js +19 -0
- package/lib/colorjs.io/src/deltaE/index.js +27 -0
- package/lib/colorjs.io/src/deltaE.js +19 -0
- package/lib/colorjs.io/src/display.js +83 -0
- package/lib/colorjs.io/src/distance.js +21 -0
- package/lib/colorjs.io/src/equals.js +10 -0
- package/lib/colorjs.io/src/get.js +11 -0
- package/lib/colorjs.io/src/getAll.js +20 -0
- package/lib/colorjs.io/src/getColor.js +36 -0
- package/lib/colorjs.io/src/hooks.js +37 -0
- package/lib/colorjs.io/src/inGamut.js +25 -0
- package/lib/colorjs.io/src/index-fn.js +28 -0
- package/lib/colorjs.io/src/index.js +38 -0
- package/lib/colorjs.io/src/interpolation.js +222 -0
- package/lib/colorjs.io/src/keywords.js +158 -0
- package/lib/colorjs.io/src/luminance.js +27 -0
- package/lib/colorjs.io/src/multiply-matrices.js +44 -0
- package/lib/colorjs.io/src/parse.js +198 -0
- package/lib/colorjs.io/src/rgbspace.js +64 -0
- package/lib/colorjs.io/src/serialize.js +86 -0
- package/lib/colorjs.io/src/set.js +33 -0
- package/lib/colorjs.io/src/setAll.js +12 -0
- package/lib/colorjs.io/src/space-accessors.js +86 -0
- package/lib/colorjs.io/src/space.js +440 -0
- package/lib/colorjs.io/src/spaces/a98rgb-linear.js +28 -0
- package/lib/colorjs.io/src/spaces/a98rgb.js +11 -0
- package/lib/colorjs.io/src/spaces/acescc.js +76 -0
- package/lib/colorjs.io/src/spaces/acescg.js +54 -0
- package/lib/colorjs.io/src/spaces/cam16.js +362 -0
- package/lib/colorjs.io/src/spaces/hct.js +157 -0
- package/lib/colorjs.io/src/spaces/hpluv.js +130 -0
- package/lib/colorjs.io/src/spaces/hsl.js +91 -0
- package/lib/colorjs.io/src/spaces/hsluv.js +162 -0
- package/lib/colorjs.io/src/spaces/hsv.js +65 -0
- package/lib/colorjs.io/src/spaces/hwb.js +58 -0
- package/lib/colorjs.io/src/spaces/ictcp.js +133 -0
- package/lib/colorjs.io/src/spaces/index-fn-hdr.js +7 -0
- package/lib/colorjs.io/src/spaces/index-fn.js +29 -0
- package/lib/colorjs.io/src/spaces/index.js +8 -0
- package/lib/colorjs.io/src/spaces/jzazbz.js +118 -0
- package/lib/colorjs.io/src/spaces/jzczhz.js +53 -0
- package/lib/colorjs.io/src/spaces/lab-d65.js +74 -0
- package/lib/colorjs.io/src/spaces/lab.js +74 -0
- package/lib/colorjs.io/src/spaces/lch.js +67 -0
- package/lib/colorjs.io/src/spaces/lchuv.js +68 -0
- package/lib/colorjs.io/src/spaces/luv.js +85 -0
- package/lib/colorjs.io/src/spaces/oklab.js +74 -0
- package/lib/colorjs.io/src/spaces/oklch.js +68 -0
- package/lib/colorjs.io/src/spaces/p3-linear.js +22 -0
- package/lib/colorjs.io/src/spaces/p3.js +13 -0
- package/lib/colorjs.io/src/spaces/prophoto-linear.js +28 -0
- package/lib/colorjs.io/src/spaces/prophoto.js +19 -0
- package/lib/colorjs.io/src/spaces/rec2020-linear.js +27 -0
- package/lib/colorjs.io/src/spaces/rec2020.js +31 -0
- package/lib/colorjs.io/src/spaces/rec2100-hlg.js +49 -0
- package/lib/colorjs.io/src/spaces/rec2100-pq.js +37 -0
- package/lib/colorjs.io/src/spaces/srgb-linear.js +30 -0
- package/lib/colorjs.io/src/spaces/srgb.js +127 -0
- package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +40 -0
- package/lib/colorjs.io/src/spaces/xyz-d50.js +12 -0
- package/lib/colorjs.io/src/spaces/xyz-d65.js +18 -0
- package/lib/colorjs.io/src/to.js +26 -0
- package/lib/colorjs.io/src/toGamut.js +310 -0
- package/lib/colorjs.io/src/util.js +254 -0
- package/lib/colorjs.io/src/variations.js +14 -0
- package/lib/colorjs.io/types/index.d.cts +4 -0
- package/lib/colorjs.io/types/index.d.ts +42 -0
- package/lib/colorjs.io/types/src/CATs.d.ts +13 -0
- package/lib/colorjs.io/types/src/adapt.d.ts +12 -0
- package/lib/colorjs.io/types/src/angles.d.ts +7 -0
- package/lib/colorjs.io/types/src/chromaticity.d.ts +7 -0
- package/lib/colorjs.io/types/src/clone.d.ts +3 -0
- package/lib/colorjs.io/types/src/color.d.ts +160 -0
- package/lib/colorjs.io/types/src/contrast/APCA.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/Weber.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +5 -0
- package/lib/colorjs.io/types/src/contrast/index.d.ts +11 -0
- package/lib/colorjs.io/types/src/contrast.d.ts +12 -0
- package/lib/colorjs.io/types/src/defaults.d.ts +2 -0
- package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +11 -0
- package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +5 -0
- package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +9 -0
- package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +5 -0
- package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +5 -0
- package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +5 -0
- package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +5 -0
- package/lib/colorjs.io/types/src/deltaE/index.d.ts +14 -0
- package/lib/colorjs.io/types/src/deltaE.d.ts +12 -0
- package/lib/colorjs.io/types/src/display.d.ts +17 -0
- package/lib/colorjs.io/types/src/distance.d.ts +8 -0
- package/lib/colorjs.io/types/src/equals.d.ts +3 -0
- package/lib/colorjs.io/types/src/get.d.ts +4 -0
- package/lib/colorjs.io/types/src/getAll.d.ts +7 -0
- package/lib/colorjs.io/types/src/getColor.d.ts +4 -0
- package/lib/colorjs.io/types/src/hooks.d.ts +52 -0
- package/lib/colorjs.io/types/src/inGamut.d.ts +8 -0
- package/lib/colorjs.io/types/src/index-fn.d.cts +1 -0
- package/lib/colorjs.io/types/src/index-fn.d.ts +63 -0
- package/lib/colorjs.io/types/src/index.d.ts +125 -0
- package/lib/colorjs.io/types/src/interpolation.d.ts +77 -0
- package/lib/colorjs.io/types/src/keywords.d.ts +2 -0
- package/lib/colorjs.io/types/src/luminance.d.ts +10 -0
- package/lib/colorjs.io/types/src/multiply-matrices.d.ts +9 -0
- package/lib/colorjs.io/types/src/parse.d.ts +16 -0
- package/lib/colorjs.io/types/src/rgbspace.d.ts +10 -0
- package/lib/colorjs.io/types/src/serialize.d.ts +13 -0
- package/lib/colorjs.io/types/src/set.d.ts +18 -0
- package/lib/colorjs.io/types/src/setAll.d.ts +14 -0
- package/lib/colorjs.io/types/src/space-accessors.d.ts +1 -0
- package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +69 -0
- package/lib/colorjs.io/types/src/space.d.ts +143 -0
- package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/acescc.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/acescg.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/hsl.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/hsv.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/hwb.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +9 -0
- package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +29 -0
- package/lib/colorjs.io/types/src/spaces/index.d.ts +4 -0
- package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/lab.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/lch.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/luv.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/oklab.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/oklch.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/p3.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/srgb.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +3 -0
- package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +3 -0
- package/lib/colorjs.io/types/src/to.d.ts +14 -0
- package/lib/colorjs.io/types/src/toGamut.d.ts +45 -0
- package/lib/colorjs.io/types/src/util.d.ts +58 -0
- package/lib/colorjs.io/types/src/variations.d.ts +5 -0
- package/logo.svg +159 -0
- package/package.json +41 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import ColorSpace from "../space.js";
|
|
2
|
+
import sRGB from "./srgb.js";
|
|
3
|
+
|
|
4
|
+
export default new ColorSpace({
|
|
5
|
+
id: "hsl",
|
|
6
|
+
name: "HSL",
|
|
7
|
+
coords: {
|
|
8
|
+
h: {
|
|
9
|
+
refRange: [0, 360],
|
|
10
|
+
type: "angle",
|
|
11
|
+
name: "Hue",
|
|
12
|
+
},
|
|
13
|
+
s: {
|
|
14
|
+
range: [0, 100],
|
|
15
|
+
name: "Saturation",
|
|
16
|
+
},
|
|
17
|
+
l: {
|
|
18
|
+
range: [0, 100],
|
|
19
|
+
name: "Lightness",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
base: sRGB,
|
|
24
|
+
|
|
25
|
+
// Adapted from https://drafts.csswg.org/css-color-4/better-rgbToHsl.js
|
|
26
|
+
fromBase: rgb => {
|
|
27
|
+
let max = Math.max(...rgb);
|
|
28
|
+
let min = Math.min(...rgb);
|
|
29
|
+
let [r, g, b] = rgb;
|
|
30
|
+
let [h, s, l] = [NaN, 0, (min + max) / 2];
|
|
31
|
+
let d = max - min;
|
|
32
|
+
|
|
33
|
+
if (d !== 0) {
|
|
34
|
+
s = (l === 0 || l === 1) ? 0 : (max - l) / Math.min(l, 1 - l);
|
|
35
|
+
|
|
36
|
+
switch (max) {
|
|
37
|
+
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
|
|
38
|
+
case g: h = (b - r) / d + 2; break;
|
|
39
|
+
case b: h = (r - g) / d + 4;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
h = h * 60;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Very out of gamut colors can produce negative saturation
|
|
46
|
+
// If so, just rotate the hue by 180 and use a positive saturation
|
|
47
|
+
// see https://github.com/w3c/csswg-drafts/issues/9222
|
|
48
|
+
if (s < 0) {
|
|
49
|
+
h += 180;
|
|
50
|
+
s = Math.abs(s);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (h >= 360) {
|
|
54
|
+
h -= 360;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return [h, s * 100, l * 100];
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
// Adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative
|
|
61
|
+
toBase: hsl => {
|
|
62
|
+
let [h, s, l] = hsl;
|
|
63
|
+
h = h % 360;
|
|
64
|
+
|
|
65
|
+
if (h < 0) {
|
|
66
|
+
h += 360;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
s /= 100;
|
|
70
|
+
l /= 100;
|
|
71
|
+
|
|
72
|
+
function f (n) {
|
|
73
|
+
let k = (n + h / 30) % 12;
|
|
74
|
+
let a = s * Math.min(l, 1 - l);
|
|
75
|
+
return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return [f(0), f(8), f(4)];
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
formats: {
|
|
82
|
+
"hsl": {
|
|
83
|
+
coords: ["<number> | <angle>", "<percentage>", "<percentage>"],
|
|
84
|
+
},
|
|
85
|
+
"hsla": {
|
|
86
|
+
coords: ["<number> | <angle>", "<percentage>", "<percentage>"],
|
|
87
|
+
commas: true,
|
|
88
|
+
lastAlpha: true,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
});
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Adapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2012-2022 Alexei Boronine
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import ColorSpace from "../space.js";
|
|
26
|
+
import LCHuv from "./lchuv.js";
|
|
27
|
+
import sRGB from "./srgb.js";
|
|
28
|
+
import {fromXYZ_M} from "./srgb-linear.js";
|
|
29
|
+
import {skipNone} from "../util.js";
|
|
30
|
+
|
|
31
|
+
const ε = 216 / 24389; // 6^3/29^3 == (24/116)^3
|
|
32
|
+
const κ = 24389 / 27; // 29^3/3^3
|
|
33
|
+
|
|
34
|
+
const m_r0 = fromXYZ_M[0][0];
|
|
35
|
+
const m_r1 = fromXYZ_M[0][1];
|
|
36
|
+
const m_r2 = fromXYZ_M[0][2];
|
|
37
|
+
const m_g0 = fromXYZ_M[1][0];
|
|
38
|
+
const m_g1 = fromXYZ_M[1][1];
|
|
39
|
+
const m_g2 = fromXYZ_M[1][2];
|
|
40
|
+
const m_b0 = fromXYZ_M[2][0];
|
|
41
|
+
const m_b1 = fromXYZ_M[2][1];
|
|
42
|
+
const m_b2 = fromXYZ_M[2][2];
|
|
43
|
+
|
|
44
|
+
function distanceFromOriginAngle (slope, intercept, angle) {
|
|
45
|
+
const d = intercept / (Math.sin(angle) - slope * Math.cos(angle));
|
|
46
|
+
return d < 0 ? Infinity : d;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function calculateBoundingLines (l) {
|
|
50
|
+
const sub1 = Math.pow(l + 16, 3) / 1560896;
|
|
51
|
+
const sub2 = sub1 > ε ? sub1 : l / κ;
|
|
52
|
+
const s1r = sub2 * (284517 * m_r0 - 94839 * m_r2);
|
|
53
|
+
const s2r = sub2 * (838422 * m_r2 + 769860 * m_r1 + 731718 * m_r0);
|
|
54
|
+
const s3r = sub2 * (632260 * m_r2 - 126452 * m_r1);
|
|
55
|
+
const s1g = sub2 * (284517 * m_g0 - 94839 * m_g2);
|
|
56
|
+
const s2g = sub2 * (838422 * m_g2 + 769860 * m_g1 + 731718 * m_g0);
|
|
57
|
+
const s3g = sub2 * (632260 * m_g2 - 126452 * m_g1);
|
|
58
|
+
const s1b = sub2 * (284517 * m_b0 - 94839 * m_b2);
|
|
59
|
+
const s2b = sub2 * (838422 * m_b2 + 769860 * m_b1 + 731718 * m_b0);
|
|
60
|
+
const s3b = sub2 * (632260 * m_b2 - 126452 * m_b1);
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
r0s: s1r / s3r,
|
|
64
|
+
r0i: s2r * l / s3r,
|
|
65
|
+
r1s: s1r / (s3r + 126452),
|
|
66
|
+
r1i: (s2r - 769860) * l / (s3r + 126452),
|
|
67
|
+
g0s: s1g / s3g,
|
|
68
|
+
g0i: s2g * l / s3g,
|
|
69
|
+
g1s: s1g / (s3g + 126452),
|
|
70
|
+
g1i: (s2g - 769860) * l / (s3g + 126452),
|
|
71
|
+
b0s: s1b / s3b,
|
|
72
|
+
b0i: s2b * l / s3b,
|
|
73
|
+
b1s: s1b / (s3b + 126452),
|
|
74
|
+
b1i: (s2b - 769860) * l / (s3b + 126452),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function calcMaxChromaHsluv (lines, h) {
|
|
79
|
+
const hueRad = h / 360 * Math.PI * 2;
|
|
80
|
+
const r0 = distanceFromOriginAngle(lines.r0s, lines.r0i, hueRad);
|
|
81
|
+
const r1 = distanceFromOriginAngle(lines.r1s, lines.r1i, hueRad);
|
|
82
|
+
const g0 = distanceFromOriginAngle(lines.g0s, lines.g0i, hueRad);
|
|
83
|
+
const g1 = distanceFromOriginAngle(lines.g1s, lines.g1i, hueRad);
|
|
84
|
+
const b0 = distanceFromOriginAngle(lines.b0s, lines.b0i, hueRad);
|
|
85
|
+
const b1 = distanceFromOriginAngle(lines.b1s, lines.b1i, hueRad);
|
|
86
|
+
|
|
87
|
+
return Math.min(r0, r1, g0, g1, b0, b1);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export default new ColorSpace({
|
|
91
|
+
id: "hsluv",
|
|
92
|
+
name: "HSLuv",
|
|
93
|
+
coords: {
|
|
94
|
+
h: {
|
|
95
|
+
refRange: [0, 360],
|
|
96
|
+
type: "angle",
|
|
97
|
+
name: "Hue",
|
|
98
|
+
},
|
|
99
|
+
s: {
|
|
100
|
+
range: [0, 100],
|
|
101
|
+
name: "Saturation",
|
|
102
|
+
},
|
|
103
|
+
l: {
|
|
104
|
+
range: [0, 100],
|
|
105
|
+
name: "Lightness",
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
base: LCHuv,
|
|
110
|
+
gamutSpace: sRGB,
|
|
111
|
+
|
|
112
|
+
// Convert LCHuv to HSLuv
|
|
113
|
+
fromBase (lch) {
|
|
114
|
+
let [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];
|
|
115
|
+
let s;
|
|
116
|
+
|
|
117
|
+
if (l > 99.9999999) {
|
|
118
|
+
s = 0;
|
|
119
|
+
l = 100;
|
|
120
|
+
}
|
|
121
|
+
else if (l < 0.00000001) {
|
|
122
|
+
s = 0;
|
|
123
|
+
l = 0;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
let lines = calculateBoundingLines(l);
|
|
127
|
+
let max = calcMaxChromaHsluv(lines, h);
|
|
128
|
+
s = c / max * 100;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return [h, s, l];
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
// Convert HSLuv to LCHuv
|
|
135
|
+
toBase (hsl) {
|
|
136
|
+
let [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];
|
|
137
|
+
let c;
|
|
138
|
+
|
|
139
|
+
if (l > 99.9999999) {
|
|
140
|
+
l = 100;
|
|
141
|
+
c = 0;
|
|
142
|
+
}
|
|
143
|
+
else if (l < 0.00000001) {
|
|
144
|
+
l = 0;
|
|
145
|
+
c = 0;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
let lines = calculateBoundingLines(l);
|
|
149
|
+
let max = calcMaxChromaHsluv(lines, h);
|
|
150
|
+
c = max / 100 * s;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return [l, c, h];
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
formats: {
|
|
157
|
+
color: {
|
|
158
|
+
id: "--hsluv",
|
|
159
|
+
coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
});
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import ColorSpace from "../space.js";
|
|
2
|
+
import HSL from "./hsl.js";
|
|
3
|
+
|
|
4
|
+
// The Hue, Whiteness Blackness (HWB) colorspace
|
|
5
|
+
// See https://drafts.csswg.org/css-color-4/#the-hwb-notation
|
|
6
|
+
// Note that, like HSL, calculations are done directly on
|
|
7
|
+
// gamma-corrected sRGB values rather than linearising them first.
|
|
8
|
+
|
|
9
|
+
export default new ColorSpace({
|
|
10
|
+
id: "hsv",
|
|
11
|
+
name: "HSV",
|
|
12
|
+
coords: {
|
|
13
|
+
h: {
|
|
14
|
+
refRange: [0, 360],
|
|
15
|
+
type: "angle",
|
|
16
|
+
name: "Hue",
|
|
17
|
+
},
|
|
18
|
+
s: {
|
|
19
|
+
range: [0, 100],
|
|
20
|
+
name: "Saturation",
|
|
21
|
+
},
|
|
22
|
+
v: {
|
|
23
|
+
range: [0, 100],
|
|
24
|
+
name: "Value",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
base: HSL,
|
|
29
|
+
// https://en.wikipedia.org/wiki/HSL_and_HSV#Interconversion
|
|
30
|
+
fromBase (hsl) {
|
|
31
|
+
let [h, s, l] = hsl;
|
|
32
|
+
s /= 100;
|
|
33
|
+
l /= 100;
|
|
34
|
+
|
|
35
|
+
let v = l + s * Math.min(l, 1 - l);
|
|
36
|
+
|
|
37
|
+
return [
|
|
38
|
+
h, // h is the same
|
|
39
|
+
v === 0 ? 0 : 200 * (1 - l / v), // s
|
|
40
|
+
100 * v,
|
|
41
|
+
];
|
|
42
|
+
},
|
|
43
|
+
// https://en.wikipedia.org/wiki/HSL_and_HSV#Interconversion
|
|
44
|
+
toBase (hsv) {
|
|
45
|
+
let [h, s, v] = hsv;
|
|
46
|
+
|
|
47
|
+
s /= 100;
|
|
48
|
+
v /= 100;
|
|
49
|
+
|
|
50
|
+
let l = v * (1 - s / 2);
|
|
51
|
+
|
|
52
|
+
return [
|
|
53
|
+
h, // h is the same
|
|
54
|
+
(l === 0 || l === 1) ? 0 : ((v - l) / Math.min(l, 1 - l)) * 100,
|
|
55
|
+
l * 100,
|
|
56
|
+
];
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
formats: {
|
|
60
|
+
color: {
|
|
61
|
+
id: "--hsv",
|
|
62
|
+
coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import ColorSpace from "../space.js";
|
|
2
|
+
import HSV from "./hsv.js";
|
|
3
|
+
|
|
4
|
+
// The Hue, Whiteness Blackness (HWB) colorspace
|
|
5
|
+
// See https://drafts.csswg.org/css-color-4/#the-hwb-notation
|
|
6
|
+
// Note that, like HSL, calculations are done directly on
|
|
7
|
+
// gamma-corrected sRGB values rather than linearising them first.
|
|
8
|
+
|
|
9
|
+
export default new ColorSpace({
|
|
10
|
+
id: "hwb",
|
|
11
|
+
name: "HWB",
|
|
12
|
+
coords: {
|
|
13
|
+
h: {
|
|
14
|
+
refRange: [0, 360],
|
|
15
|
+
type: "angle",
|
|
16
|
+
name: "Hue",
|
|
17
|
+
},
|
|
18
|
+
w: {
|
|
19
|
+
range: [0, 100],
|
|
20
|
+
name: "Whiteness",
|
|
21
|
+
},
|
|
22
|
+
b: {
|
|
23
|
+
range: [0, 100],
|
|
24
|
+
name: "Blackness",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
base: HSV,
|
|
29
|
+
fromBase (hsv) {
|
|
30
|
+
let [h, s, v] = hsv;
|
|
31
|
+
|
|
32
|
+
return [h, v * (100 - s) / 100, 100 - v];
|
|
33
|
+
},
|
|
34
|
+
toBase (hwb) {
|
|
35
|
+
let [h, w, b] = hwb;
|
|
36
|
+
|
|
37
|
+
// Now convert percentages to [0..1]
|
|
38
|
+
w /= 100;
|
|
39
|
+
b /= 100;
|
|
40
|
+
|
|
41
|
+
// Achromatic check (white plus black >= 1)
|
|
42
|
+
let sum = w + b;
|
|
43
|
+
if (sum >= 1) {
|
|
44
|
+
let gray = w / sum;
|
|
45
|
+
return [h, 0, gray * 100];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
let v = (1 - b);
|
|
49
|
+
let s = (v === 0) ? 0 : 1 - w / v;
|
|
50
|
+
return [h, s * 100, v * 100];
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
formats: {
|
|
54
|
+
"hwb": {
|
|
55
|
+
coords: ["<number> | <angle>", "<percentage> | <number>", "<percentage> | <number>"],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import ColorSpace from "../space.js";
|
|
2
|
+
import {multiplyMatrices} from "../util.js";
|
|
3
|
+
import XYZ_Abs_D65 from "./xyz-abs-d65.js";
|
|
4
|
+
|
|
5
|
+
const c1 = 3424 / 4096;
|
|
6
|
+
const c2 = 2413 / 128;
|
|
7
|
+
const c3 = 2392 / 128;
|
|
8
|
+
const m1 = 2610 / 16384;
|
|
9
|
+
const m2 = 2523 / 32;
|
|
10
|
+
const im1 = 16384 / 2610;
|
|
11
|
+
const im2 = 32 / 2523;
|
|
12
|
+
|
|
13
|
+
// The matrix below includes the 4% crosstalk components
|
|
14
|
+
// and is from the Dolby "What is ICtCp" paper"
|
|
15
|
+
const XYZtoLMS_M = [
|
|
16
|
+
[ 0.3592832590121217, 0.6976051147779502, -0.0358915932320290 ],
|
|
17
|
+
[ -0.1920808463704993, 1.1004767970374321, 0.0753748658519118 ],
|
|
18
|
+
[ 0.0070797844607479, 0.0748396662186362, 0.8433265453898765 ],
|
|
19
|
+
];
|
|
20
|
+
// linear-light Rec.2020 to LMS, again with crosstalk
|
|
21
|
+
// rational terms from Jan Fröhlich,
|
|
22
|
+
// Encoding High Dynamic Range andWide Color Gamut Imagery, p.97
|
|
23
|
+
// and ITU-R BT.2124-0 p.2
|
|
24
|
+
/*
|
|
25
|
+
const Rec2020toLMS_M = [
|
|
26
|
+
[ 1688 / 4096, 2146 / 4096, 262 / 4096 ],
|
|
27
|
+
[ 683 / 4096, 2951 / 4096, 462 / 4096 ],
|
|
28
|
+
[ 99 / 4096, 309 / 4096, 3688 / 4096 ]
|
|
29
|
+
];
|
|
30
|
+
*/
|
|
31
|
+
// this includes the Ebner LMS coefficients,
|
|
32
|
+
// the rotation, and the scaling to [-0.5,0.5] range
|
|
33
|
+
// rational terms from Fröhlich p.97
|
|
34
|
+
// and ITU-R BT.2124-0 pp.2-3
|
|
35
|
+
const LMStoIPT_M = [
|
|
36
|
+
[ 2048 / 4096, 2048 / 4096, 0 ],
|
|
37
|
+
[ 6610 / 4096, -13613 / 4096, 7003 / 4096 ],
|
|
38
|
+
[ 17933 / 4096, -17390 / 4096, -543 / 4096 ],
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
// inverted matrices, calculated from the above
|
|
42
|
+
const IPTtoLMS_M = [
|
|
43
|
+
[ 0.9999999999999998, 0.0086090370379328, 0.1110296250030260 ],
|
|
44
|
+
[ 0.9999999999999998, -0.0086090370379328, -0.1110296250030259 ],
|
|
45
|
+
[ 0.9999999999999998, 0.5600313357106791, -0.3206271749873188 ],
|
|
46
|
+
];
|
|
47
|
+
/*
|
|
48
|
+
const LMStoRec2020_M = [
|
|
49
|
+
[ 3.4375568932814012112, -2.5072112125095058195, 0.069654319228104608382],
|
|
50
|
+
[-0.79142868665644156125, 1.9838372198740089874, -0.19240853321756742626 ],
|
|
51
|
+
[-0.025646662911506476363, -0.099240248643945566751, 1.1248869115554520431 ]
|
|
52
|
+
];
|
|
53
|
+
*/
|
|
54
|
+
const LMStoXYZ_M = [
|
|
55
|
+
[ 2.0701522183894223, -1.3263473389671563, 0.2066510476294053 ],
|
|
56
|
+
[ 0.3647385209748072, 0.6805660249472273, -0.0453045459220347 ],
|
|
57
|
+
[ -0.0497472075358123, -0.0492609666966131, 1.1880659249923042 ],
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
// Only the PQ form of ICtCp is implemented here. There is also an HLG form.
|
|
61
|
+
// from Dolby, "WHAT IS ICTCP?"
|
|
62
|
+
// https://professional.dolby.com/siteassets/pdfs/ictcp_dolbywhitepaper_v071.pdf
|
|
63
|
+
// and
|
|
64
|
+
// Dolby, "Perceptual Color Volume
|
|
65
|
+
// Measuring the Distinguishable Colors of HDR and WCG Displays"
|
|
66
|
+
// https://professional.dolby.com/siteassets/pdfs/dolby-vision-measuring-perceptual-color-volume-v7.1.pdf
|
|
67
|
+
export default new ColorSpace({
|
|
68
|
+
id: "ictcp",
|
|
69
|
+
name: "ICTCP",
|
|
70
|
+
// From BT.2100-2 page 7:
|
|
71
|
+
// During production, signal values are expected to exceed the
|
|
72
|
+
// range E′ = [0.0 : 1.0]. This provides processing headroom and avoids
|
|
73
|
+
// signal degradation during cascaded processing. Such values of E′,
|
|
74
|
+
// below 0.0 or exceeding 1.0, should not be clipped during production
|
|
75
|
+
// and exchange.
|
|
76
|
+
// Values below 0.0 should not be clipped in reference displays (even
|
|
77
|
+
// though they represent “negative” light) to allow the black level of
|
|
78
|
+
// the signal (LB) to be properly set using test signals known as “PLUGE”
|
|
79
|
+
coords: {
|
|
80
|
+
i: {
|
|
81
|
+
refRange: [0, 1], // Constant luminance,
|
|
82
|
+
name: "I",
|
|
83
|
+
},
|
|
84
|
+
ct: {
|
|
85
|
+
refRange: [-0.5, 0.5], // Full BT.2020 gamut in range [-0.5, 0.5]
|
|
86
|
+
name: "CT",
|
|
87
|
+
},
|
|
88
|
+
cp: {
|
|
89
|
+
refRange: [-0.5, 0.5],
|
|
90
|
+
name: "CP",
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
base: XYZ_Abs_D65,
|
|
95
|
+
fromBase (XYZ) {
|
|
96
|
+
// move to LMS cone domain
|
|
97
|
+
let LMS = multiplyMatrices(XYZtoLMS_M, XYZ);
|
|
98
|
+
|
|
99
|
+
return LMStoICtCp(LMS);
|
|
100
|
+
},
|
|
101
|
+
toBase (ICtCp) {
|
|
102
|
+
let LMS = ICtCptoLMS(ICtCp);
|
|
103
|
+
|
|
104
|
+
return multiplyMatrices(LMStoXYZ_M, LMS);
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
function LMStoICtCp (LMS) {
|
|
109
|
+
// apply the PQ EOTF
|
|
110
|
+
// we can't ever be dividing by zero because of the "1 +" in the denominator
|
|
111
|
+
let PQLMS = LMS.map (function (val) {
|
|
112
|
+
let num = c1 + (c2 * ((val / 10000) ** m1));
|
|
113
|
+
let denom = 1 + (c3 * ((val / 10000) ** m1));
|
|
114
|
+
|
|
115
|
+
return (num / denom) ** m2;
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// LMS to IPT, with rotation for Y'C'bC'r compatibility
|
|
119
|
+
return multiplyMatrices(LMStoIPT_M, PQLMS);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function ICtCptoLMS (ICtCp) {
|
|
123
|
+
let PQLMS = multiplyMatrices(IPTtoLMS_M, ICtCp);
|
|
124
|
+
|
|
125
|
+
// From BT.2124-0 Annex 2 Conversion 3
|
|
126
|
+
let LMS = PQLMS.map (function (val) {
|
|
127
|
+
let num = Math.max((val ** im2) - c1, 0);
|
|
128
|
+
let denom = (c2 - (c3 * (val ** im2)));
|
|
129
|
+
return 10000 * ((num / denom) ** im1);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return LMS;
|
|
133
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export {default as Jzazbz} from "./jzazbz.js";
|
|
2
|
+
export {default as JzCzHz} from "./jzczhz.js";
|
|
3
|
+
export {default as ICTCP} from "./ictcp.js";
|
|
4
|
+
export {default as REC_2100_PQ} from "./rec2100-pq.js";
|
|
5
|
+
export {default as REC_2100_HLG} from "./rec2100-hlg.js";
|
|
6
|
+
export {default as ACEScg} from "./acescg.js";
|
|
7
|
+
export {default as ACEScc} from "./acescc.js";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export {default as XYZ_D65} from "./xyz-d65.js";
|
|
2
|
+
export {default as XYZ_D50} from "./xyz-d50.js";
|
|
3
|
+
export {default as XYZ_ABS_D65} from "./xyz-abs-d65.js";
|
|
4
|
+
export {default as Lab_D65} from "./lab-d65.js";
|
|
5
|
+
export {default as Lab} from "./lab.js";
|
|
6
|
+
export {default as LCH} from "./lch.js";
|
|
7
|
+
export {default as sRGB_Linear} from "./srgb-linear.js";
|
|
8
|
+
export {default as sRGB} from "./srgb.js";
|
|
9
|
+
export {default as HSL} from "./hsl.js";
|
|
10
|
+
export {default as HWB} from "./hwb.js";
|
|
11
|
+
export {default as HSV} from "./hsv.js";
|
|
12
|
+
export {default as P3_Linear} from "./p3-linear.js";
|
|
13
|
+
export {default as P3} from "./p3.js";
|
|
14
|
+
export {default as A98RGB_Linear} from "./a98rgb-linear.js";
|
|
15
|
+
export {default as A98RGB} from "./a98rgb.js";
|
|
16
|
+
export {default as ProPhoto_Linear} from "./prophoto-linear.js";
|
|
17
|
+
export {default as ProPhoto} from "./prophoto.js";
|
|
18
|
+
export {default as REC_2020_Linear} from "./rec2020-linear.js";
|
|
19
|
+
export {default as REC_2020} from "./rec2020.js";
|
|
20
|
+
export {default as OKLab} from "./oklab.js";
|
|
21
|
+
export {default as OKLCH} from "./oklch.js";
|
|
22
|
+
export {default as CAM16_JMh} from "./cam16.js";
|
|
23
|
+
export {default as HCT} from "./hct.js";
|
|
24
|
+
export {default as Luv} from "./luv.js";
|
|
25
|
+
export {default as LCHuv} from "./lchuv.js";
|
|
26
|
+
export {default as HSLuv} from "./hsluv.js";
|
|
27
|
+
export {default as HPLuv} from "./hpluv.js";
|
|
28
|
+
|
|
29
|
+
export * from "./index-fn-hdr.js";
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import ColorSpace from "../space.js";
|
|
2
|
+
import {multiplyMatrices} from "../util.js";
|
|
3
|
+
import XYZ_Abs_D65 from "./xyz-abs-d65.js";
|
|
4
|
+
|
|
5
|
+
const b = 1.15;
|
|
6
|
+
const g = 0.66;
|
|
7
|
+
const n = 2610 / (2 ** 14);
|
|
8
|
+
const ninv = (2 ** 14) / 2610;
|
|
9
|
+
const c1 = 3424 / (2 ** 12);
|
|
10
|
+
const c2 = 2413 / (2 ** 7);
|
|
11
|
+
const c3 = 2392 / (2 ** 7);
|
|
12
|
+
const p = 1.7 * 2523 / (2 ** 5);
|
|
13
|
+
const pinv = (2 ** 5) / (1.7 * 2523);
|
|
14
|
+
const d = -0.56;
|
|
15
|
+
const d0 = 1.6295499532821566E-11;
|
|
16
|
+
|
|
17
|
+
const XYZtoCone_M = [
|
|
18
|
+
[ 0.41478972, 0.579999, 0.0146480 ],
|
|
19
|
+
[ -0.2015100, 1.120649, 0.0531008 ],
|
|
20
|
+
[ -0.0166008, 0.264800, 0.6684799 ],
|
|
21
|
+
];
|
|
22
|
+
// XYZtoCone_M inverted
|
|
23
|
+
const ConetoXYZ_M = [
|
|
24
|
+
[ 1.9242264357876067, -1.0047923125953657, 0.037651404030618 ],
|
|
25
|
+
[ 0.35031676209499907, 0.7264811939316552, -0.06538442294808501 ],
|
|
26
|
+
[ -0.09098281098284752, -0.3127282905230739, 1.5227665613052603 ],
|
|
27
|
+
];
|
|
28
|
+
const ConetoIab_M = [
|
|
29
|
+
[ 0.5, 0.5, 0 ],
|
|
30
|
+
[ 3.524000, -4.066708, 0.542708 ],
|
|
31
|
+
[ 0.199076, 1.096799, -1.295875 ],
|
|
32
|
+
];
|
|
33
|
+
// ConetoIab_M inverted
|
|
34
|
+
const IabtoCone_M = [
|
|
35
|
+
[ 1, 0.1386050432715393, 0.05804731615611886 ],
|
|
36
|
+
[ 0.9999999999999999, -0.1386050432715393, -0.05804731615611886 ],
|
|
37
|
+
[ 0.9999999999999998, -0.09601924202631895, -0.8118918960560388 ],
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export default new ColorSpace({
|
|
41
|
+
id: "jzazbz",
|
|
42
|
+
name: "Jzazbz",
|
|
43
|
+
coords: {
|
|
44
|
+
jz: {
|
|
45
|
+
refRange: [0, 1],
|
|
46
|
+
name: "Jz",
|
|
47
|
+
},
|
|
48
|
+
az: {
|
|
49
|
+
refRange: [-0.5, 0.5],
|
|
50
|
+
},
|
|
51
|
+
bz: {
|
|
52
|
+
refRange: [-0.5, 0.5],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
base: XYZ_Abs_D65,
|
|
57
|
+
fromBase (XYZ) {
|
|
58
|
+
// First make XYZ absolute, not relative to media white
|
|
59
|
+
// Maximum luminance in PQ is 10,000 cd/m²
|
|
60
|
+
// Relative XYZ has Y=1 for media white
|
|
61
|
+
// BT.2048 says media white Y=203 at PQ 58
|
|
62
|
+
|
|
63
|
+
let [ Xa, Ya, Za ] = XYZ;
|
|
64
|
+
|
|
65
|
+
// modify X and Y
|
|
66
|
+
let Xm = (b * Xa) - ((b - 1) * Za);
|
|
67
|
+
let Ym = (g * Ya) - ((g - 1) * Xa);
|
|
68
|
+
|
|
69
|
+
// move to LMS cone domain
|
|
70
|
+
let LMS = multiplyMatrices(XYZtoCone_M, [ Xm, Ym, Za ]);
|
|
71
|
+
|
|
72
|
+
// PQ-encode LMS
|
|
73
|
+
let PQLMS = LMS.map (function (val) {
|
|
74
|
+
let num = c1 + (c2 * ((val / 10000) ** n));
|
|
75
|
+
let denom = 1 + (c3 * ((val / 10000) ** n));
|
|
76
|
+
|
|
77
|
+
return (num / denom) ** p;
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// almost there, calculate Iz az bz
|
|
81
|
+
let [ Iz, az, bz] = multiplyMatrices(ConetoIab_M, PQLMS);
|
|
82
|
+
// console.log({Iz, az, bz});
|
|
83
|
+
|
|
84
|
+
let Jz = ((1 + d) * Iz) / (1 + (d * Iz)) - d0;
|
|
85
|
+
return [Jz, az, bz];
|
|
86
|
+
},
|
|
87
|
+
toBase (Jzazbz) {
|
|
88
|
+
let [Jz, az, bz] = Jzazbz;
|
|
89
|
+
let Iz = (Jz + d0) / (1 + d - d * (Jz + d0));
|
|
90
|
+
|
|
91
|
+
// bring into LMS cone domain
|
|
92
|
+
let PQLMS = multiplyMatrices(IabtoCone_M, [ Iz, az, bz ]);
|
|
93
|
+
|
|
94
|
+
// convert from PQ-coded to linear-light
|
|
95
|
+
let LMS = PQLMS.map(function (val) {
|
|
96
|
+
let num = (c1 - (val ** pinv));
|
|
97
|
+
let denom = (c3 * (val ** pinv)) - c2;
|
|
98
|
+
let x = 10000 * ((num / denom) ** ninv);
|
|
99
|
+
|
|
100
|
+
return (x); // luminance relative to diffuse white, [0, 70 or so].
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// modified abs XYZ
|
|
104
|
+
let [ Xm, Ym, Za ] = multiplyMatrices(ConetoXYZ_M, LMS);
|
|
105
|
+
|
|
106
|
+
// restore standard D50 relative XYZ, relative to media white
|
|
107
|
+
let Xa = (Xm + ((b - 1) * Za)) / b;
|
|
108
|
+
let Ya = (Ym + ((g - 1) * Xa)) / g;
|
|
109
|
+
return [ Xa, Ya, Za ];
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
formats: {
|
|
113
|
+
// https://drafts.csswg.org/css-color-hdr/#Jzazbz
|
|
114
|
+
"color": {
|
|
115
|
+
coords: ["<number> | <percentage>", "<number> | <percentage>[-1,1]", "<number> | <percentage>[-1,1]"],
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
});
|