color-elements 0.0.2 → 0.0.3
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 +30 -15
- package/_build/copy-config.json +1 -1
- package/_build/eleventy.js +7 -2
- package/_build/filters-extra.js +1 -1
- package/_includes/component.njk +9 -1
- package/_includes/partials/_nav-links.njk +11 -4
- package/_redirects +8 -1
- package/assets/css/style.css +78 -1
- package/assets/js/index.js +6 -6
- package/data/components.json +12 -0
- package/debug.html +447 -0
- package/index.js +5 -1
- package/package.json +2 -1
- package/src/channel-picker/README.md +103 -0
- package/src/channel-picker/channel-picker.css +31 -0
- package/src/channel-picker/channel-picker.js +168 -0
- package/src/channel-picker/channel-picker.webp +0 -0
- package/src/channel-slider/README.md +50 -8
- package/src/channel-slider/channel-slider.css +47 -5
- package/src/channel-slider/channel-slider.js +74 -39
- package/src/channel-slider/channel-slider.webp +0 -0
- package/src/color-chart/README.md +129 -0
- package/src/color-chart/color-chart-global.css +97 -0
- package/src/color-chart/color-chart.css +112 -0
- package/src/color-chart/color-chart.js +441 -0
- package/src/color-chart/color-chart.webp +0 -0
- package/src/color-inline/README.md +42 -1
- package/src/color-inline/color-inline.css +11 -4
- package/src/color-inline/color-inline.js +56 -50
- package/src/color-inline/color-inline.webp +0 -0
- package/src/color-picker/README.md +107 -5
- package/src/color-picker/color-picker.css +21 -6
- package/src/color-picker/color-picker.js +147 -60
- package/src/color-picker/color-picker.webp +0 -0
- package/src/color-scale/README.md +75 -0
- package/src/color-scale/color-scale.css +40 -0
- package/src/color-scale/color-scale.js +164 -0
- package/src/color-scale/color-scale.webp +0 -0
- package/src/color-slider/README.md +31 -4
- package/src/color-slider/color-slider.css +17 -7
- package/src/color-slider/color-slider.js +80 -38
- package/src/color-slider/color-slider.webp +0 -0
- package/src/color-swatch/README.md +265 -6
- package/src/color-swatch/color-swatch.css +162 -27
- package/src/color-swatch/color-swatch.js +191 -217
- package/src/color-swatch/color-swatch.webp +0 -0
- package/src/common/color-element.js +86 -0
- package/src/common/dom.js +1 -1
- package/src/common/util.js +12 -99
- package/src/gamut-badge/README.md +145 -0
- package/src/gamut-badge/gamut-badge.css +78 -0
- package/src/gamut-badge/gamut-badge.js +121 -0
- package/src/gamut-badge/gamut-badge.webp +0 -0
- package/src/index.js.njk +1 -1
- package/src/space-picker/README.md +121 -0
- package/src/space-picker/space-picker.css +23 -0
- package/src/space-picker/space-picker.js +213 -0
- package/src/space-picker/space-picker.webp +0 -0
- package/_data/components.json +0 -8
- package/lib/README.md +0 -4
- package/lib/colorjs.io/LICENSE +0 -21
- package/lib/colorjs.io/README.json +0 -3
- package/lib/colorjs.io/README.md +0 -257
- package/lib/colorjs.io/colorjs.io/LICENSE +0 -21
- package/lib/colorjs.io/colorjs.io/README.json +0 -3
- package/lib/colorjs.io/colorjs.io/README.md +0 -257
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs +0 -5437
- package/lib/colorjs.io/colorjs.io/dist/color-fn.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color-fn.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.cjs +0 -5759
- package/lib/colorjs.io/colorjs.io/dist/color.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.js +0 -5760
- package/lib/colorjs.io/colorjs.io/dist/color.global.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js +0 -7400
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.global.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.js +0 -5755
- package/lib/colorjs.io/colorjs.io/dist/color.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs +0 -7399
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js +0 -7395
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.legacy.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.min.cjs.map +0 -1
- package/lib/colorjs.io/colorjs.io/dist/color.min.js +0 -2
- package/lib/colorjs.io/colorjs.io/dist/color.min.js.map +0 -1
- package/lib/colorjs.io/colorjs.io/package.json +0 -113
- package/lib/colorjs.io/colorjs.io/src/CATs.js +0 -131
- package/lib/colorjs.io/colorjs.io/src/adapt.js +0 -62
- package/lib/colorjs.io/colorjs.io/src/angles.js +0 -44
- package/lib/colorjs.io/colorjs.io/src/chromaticity.js +0 -33
- package/lib/colorjs.io/colorjs.io/src/clone.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/color.js +0 -201
- package/lib/colorjs.io/colorjs.io/src/contrast/APCA.js +0 -102
- package/lib/colorjs.io/colorjs.io/src/contrast/Lstar.js +0 -17
- package/lib/colorjs.io/colorjs.io/src/contrast/Michelson.js +0 -22
- package/lib/colorjs.io/colorjs.io/src/contrast/WCAG21.js +0 -20
- package/lib/colorjs.io/colorjs.io/src/contrast/Weber.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/contrast/deltaPhi.js +0 -25
- package/lib/colorjs.io/colorjs.io/src/contrast/index.js +0 -6
- package/lib/colorjs.io/colorjs.io/src/contrast.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/defaults.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE2000.js +0 -179
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaE76.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaECMC.js +0 -114
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEITP.js +0 -24
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEJz.js +0 -43
- package/lib/colorjs.io/colorjs.io/src/deltaE/deltaEOK.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/deltaE/index.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/deltaE.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/display.js +0 -83
- package/lib/colorjs.io/colorjs.io/src/distance.js +0 -21
- package/lib/colorjs.io/colorjs.io/src/equals.js +0 -10
- package/lib/colorjs.io/colorjs.io/src/get.js +0 -11
- package/lib/colorjs.io/colorjs.io/src/getAll.js +0 -20
- package/lib/colorjs.io/colorjs.io/src/getColor.js +0 -36
- package/lib/colorjs.io/colorjs.io/src/hooks.js +0 -37
- package/lib/colorjs.io/colorjs.io/src/inGamut.js +0 -25
- package/lib/colorjs.io/colorjs.io/src/index-fn.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/index.js +0 -38
- package/lib/colorjs.io/colorjs.io/src/interpolation.js +0 -222
- package/lib/colorjs.io/colorjs.io/src/keywords.js +0 -158
- package/lib/colorjs.io/colorjs.io/src/luminance.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/multiply-matrices.js +0 -44
- package/lib/colorjs.io/colorjs.io/src/parse.js +0 -198
- package/lib/colorjs.io/colorjs.io/src/rgbspace.js +0 -64
- package/lib/colorjs.io/colorjs.io/src/serialize.js +0 -86
- package/lib/colorjs.io/colorjs.io/src/set.js +0 -33
- package/lib/colorjs.io/colorjs.io/src/setAll.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/space-accessors.js +0 -86
- package/lib/colorjs.io/colorjs.io/src/space.js +0 -440
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/spaces/a98rgb.js +0 -11
- package/lib/colorjs.io/colorjs.io/src/spaces/acescc.js +0 -76
- package/lib/colorjs.io/colorjs.io/src/spaces/acescg.js +0 -54
- package/lib/colorjs.io/colorjs.io/src/spaces/cam16.js +0 -362
- package/lib/colorjs.io/colorjs.io/src/spaces/hct.js +0 -157
- package/lib/colorjs.io/colorjs.io/src/spaces/hpluv.js +0 -130
- package/lib/colorjs.io/colorjs.io/src/spaces/hsl.js +0 -91
- package/lib/colorjs.io/colorjs.io/src/spaces/hsluv.js +0 -162
- package/lib/colorjs.io/colorjs.io/src/spaces/hsv.js +0 -65
- package/lib/colorjs.io/colorjs.io/src/spaces/hwb.js +0 -58
- package/lib/colorjs.io/colorjs.io/src/spaces/ictcp.js +0 -133
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
- package/lib/colorjs.io/colorjs.io/src/spaces/index-fn.js +0 -29
- package/lib/colorjs.io/colorjs.io/src/spaces/index.js +0 -8
- package/lib/colorjs.io/colorjs.io/src/spaces/jzazbz.js +0 -118
- package/lib/colorjs.io/colorjs.io/src/spaces/jzczhz.js +0 -53
- package/lib/colorjs.io/colorjs.io/src/spaces/lab-d65.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/lab.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/lch.js +0 -67
- package/lib/colorjs.io/colorjs.io/src/spaces/lchuv.js +0 -68
- package/lib/colorjs.io/colorjs.io/src/spaces/luv.js +0 -85
- package/lib/colorjs.io/colorjs.io/src/spaces/oklab.js +0 -74
- package/lib/colorjs.io/colorjs.io/src/spaces/oklch.js +0 -68
- package/lib/colorjs.io/colorjs.io/src/spaces/p3-linear.js +0 -22
- package/lib/colorjs.io/colorjs.io/src/spaces/p3.js +0 -13
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto-linear.js +0 -28
- package/lib/colorjs.io/colorjs.io/src/spaces/prophoto.js +0 -19
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020-linear.js +0 -27
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2020.js +0 -31
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
- package/lib/colorjs.io/colorjs.io/src/spaces/rec2100-pq.js +0 -37
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb-linear.js +0 -30
- package/lib/colorjs.io/colorjs.io/src/spaces/srgb.js +0 -127
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d50.js +0 -12
- package/lib/colorjs.io/colorjs.io/src/spaces/xyz-d65.js +0 -18
- package/lib/colorjs.io/colorjs.io/src/to.js +0 -26
- package/lib/colorjs.io/colorjs.io/src/toGamut.js +0 -310
- package/lib/colorjs.io/colorjs.io/src/util.js +0 -254
- package/lib/colorjs.io/colorjs.io/src/variations.js +0 -14
- package/lib/colorjs.io/colorjs.io/types/index.d.cts +0 -4
- package/lib/colorjs.io/colorjs.io/types/index.d.ts +0 -42
- package/lib/colorjs.io/colorjs.io/types/src/CATs.d.ts +0 -13
- package/lib/colorjs.io/colorjs.io/types/src/adapt.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/angles.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/chromaticity.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/clone.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/color.d.ts +0 -160
- package/lib/colorjs.io/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/contrast/index.d.ts +0 -11
- package/lib/colorjs.io/colorjs.io/types/src/contrast.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/defaults.d.ts +0 -2
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
- package/lib/colorjs.io/colorjs.io/types/src/deltaE/index.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/deltaE.d.ts +0 -12
- package/lib/colorjs.io/colorjs.io/types/src/display.d.ts +0 -17
- package/lib/colorjs.io/colorjs.io/types/src/distance.d.ts +0 -8
- package/lib/colorjs.io/colorjs.io/types/src/equals.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/get.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/getAll.d.ts +0 -7
- package/lib/colorjs.io/colorjs.io/types/src/getColor.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/hooks.d.ts +0 -52
- package/lib/colorjs.io/colorjs.io/types/src/inGamut.d.ts +0 -8
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.cts +0 -1
- package/lib/colorjs.io/colorjs.io/types/src/index-fn.d.ts +0 -63
- package/lib/colorjs.io/colorjs.io/types/src/index.d.ts +0 -125
- package/lib/colorjs.io/colorjs.io/types/src/interpolation.d.ts +0 -77
- package/lib/colorjs.io/colorjs.io/types/src/keywords.d.ts +0 -2
- package/lib/colorjs.io/colorjs.io/types/src/luminance.d.ts +0 -10
- package/lib/colorjs.io/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/parse.d.ts +0 -16
- package/lib/colorjs.io/colorjs.io/types/src/rgbspace.d.ts +0 -10
- package/lib/colorjs.io/colorjs.io/types/src/serialize.d.ts +0 -13
- package/lib/colorjs.io/colorjs.io/types/src/set.d.ts +0 -18
- package/lib/colorjs.io/colorjs.io/types/src/setAll.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/space-accessors.d.ts +0 -1
- package/lib/colorjs.io/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
- package/lib/colorjs.io/colorjs.io/types/src/space.d.ts +0 -143
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
- package/lib/colorjs.io/colorjs.io/types/src/spaces/index.d.ts +0 -4
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lab.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lch.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/luv.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/p3.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
- package/lib/colorjs.io/colorjs.io/types/src/to.d.ts +0 -14
- package/lib/colorjs.io/colorjs.io/types/src/toGamut.d.ts +0 -45
- package/lib/colorjs.io/colorjs.io/types/src/util.d.ts +0 -58
- package/lib/colorjs.io/colorjs.io/types/src/variations.d.ts +0 -5
- package/lib/colorjs.io/dist/color-fn.cjs +0 -5437
- package/lib/colorjs.io/dist/color-fn.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.legacy.cjs +0 -7048
- package/lib/colorjs.io/dist/color-fn.legacy.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs +0 -2
- package/lib/colorjs.io/dist/color-fn.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color-fn.min.cjs +0 -2
- package/lib/colorjs.io/dist/color-fn.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.cjs +0 -5759
- package/lib/colorjs.io/dist/color.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.global.js +0 -5760
- package/lib/colorjs.io/dist/color.global.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.legacy.js +0 -7400
- package/lib/colorjs.io/dist/color.global.legacy.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.legacy.min.js +0 -2
- package/lib/colorjs.io/dist/color.global.legacy.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.global.min.js +0 -2
- package/lib/colorjs.io/dist/color.global.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.js +0 -5755
- package/lib/colorjs.io/dist/color.js.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.cjs +0 -7399
- package/lib/colorjs.io/dist/color.legacy.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.js +0 -7395
- package/lib/colorjs.io/dist/color.legacy.js.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.min.cjs +0 -2
- package/lib/colorjs.io/dist/color.legacy.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.legacy.min.js +0 -2
- package/lib/colorjs.io/dist/color.legacy.min.js.map +0 -1
- package/lib/colorjs.io/dist/color.min.cjs +0 -2
- package/lib/colorjs.io/dist/color.min.cjs.map +0 -1
- package/lib/colorjs.io/dist/color.min.js +0 -2
- package/lib/colorjs.io/dist/color.min.js.map +0 -1
- package/lib/colorjs.io/package.json +0 -113
- package/lib/colorjs.io/src/CATs.js +0 -131
- package/lib/colorjs.io/src/adapt.js +0 -62
- package/lib/colorjs.io/src/angles.js +0 -44
- package/lib/colorjs.io/src/chromaticity.js +0 -33
- package/lib/colorjs.io/src/clone.js +0 -7
- package/lib/colorjs.io/src/color.js +0 -201
- package/lib/colorjs.io/src/contrast/APCA.js +0 -102
- package/lib/colorjs.io/src/contrast/Lstar.js +0 -17
- package/lib/colorjs.io/src/contrast/Michelson.js +0 -22
- package/lib/colorjs.io/src/contrast/WCAG21.js +0 -20
- package/lib/colorjs.io/src/contrast/Weber.js +0 -27
- package/lib/colorjs.io/src/contrast/deltaPhi.js +0 -25
- package/lib/colorjs.io/src/contrast/index.js +0 -6
- package/lib/colorjs.io/src/contrast.js +0 -28
- package/lib/colorjs.io/src/defaults.js +0 -12
- package/lib/colorjs.io/src/deltaE/deltaE2000.js +0 -179
- package/lib/colorjs.io/src/deltaE/deltaE76.js +0 -7
- package/lib/colorjs.io/src/deltaE/deltaECMC.js +0 -114
- package/lib/colorjs.io/src/deltaE/deltaEHCT.js +0 -51
- package/lib/colorjs.io/src/deltaE/deltaEITP.js +0 -24
- package/lib/colorjs.io/src/deltaE/deltaEJz.js +0 -43
- package/lib/colorjs.io/src/deltaE/deltaEOK.js +0 -19
- package/lib/colorjs.io/src/deltaE/index.js +0 -27
- package/lib/colorjs.io/src/deltaE.js +0 -19
- package/lib/colorjs.io/src/display.js +0 -83
- package/lib/colorjs.io/src/distance.js +0 -21
- package/lib/colorjs.io/src/equals.js +0 -10
- package/lib/colorjs.io/src/get.js +0 -11
- package/lib/colorjs.io/src/getAll.js +0 -20
- package/lib/colorjs.io/src/getColor.js +0 -36
- package/lib/colorjs.io/src/hooks.js +0 -37
- package/lib/colorjs.io/src/inGamut.js +0 -25
- package/lib/colorjs.io/src/index-fn.js +0 -28
- package/lib/colorjs.io/src/index.js +0 -38
- package/lib/colorjs.io/src/interpolation.js +0 -222
- package/lib/colorjs.io/src/keywords.js +0 -158
- package/lib/colorjs.io/src/luminance.js +0 -27
- package/lib/colorjs.io/src/multiply-matrices.js +0 -44
- package/lib/colorjs.io/src/parse.js +0 -198
- package/lib/colorjs.io/src/rgbspace.js +0 -64
- package/lib/colorjs.io/src/serialize.js +0 -86
- package/lib/colorjs.io/src/set.js +0 -33
- package/lib/colorjs.io/src/setAll.js +0 -12
- package/lib/colorjs.io/src/space-accessors.js +0 -86
- package/lib/colorjs.io/src/space.js +0 -440
- package/lib/colorjs.io/src/spaces/a98rgb-linear.js +0 -28
- package/lib/colorjs.io/src/spaces/a98rgb.js +0 -11
- package/lib/colorjs.io/src/spaces/acescc.js +0 -76
- package/lib/colorjs.io/src/spaces/acescg.js +0 -54
- package/lib/colorjs.io/src/spaces/cam16.js +0 -362
- package/lib/colorjs.io/src/spaces/hct.js +0 -157
- package/lib/colorjs.io/src/spaces/hpluv.js +0 -130
- package/lib/colorjs.io/src/spaces/hsl.js +0 -91
- package/lib/colorjs.io/src/spaces/hsluv.js +0 -162
- package/lib/colorjs.io/src/spaces/hsv.js +0 -65
- package/lib/colorjs.io/src/spaces/hwb.js +0 -58
- package/lib/colorjs.io/src/spaces/ictcp.js +0 -133
- package/lib/colorjs.io/src/spaces/index-fn-hdr.js +0 -7
- package/lib/colorjs.io/src/spaces/index-fn.js +0 -29
- package/lib/colorjs.io/src/spaces/index.js +0 -8
- package/lib/colorjs.io/src/spaces/jzazbz.js +0 -118
- package/lib/colorjs.io/src/spaces/jzczhz.js +0 -53
- package/lib/colorjs.io/src/spaces/lab-d65.js +0 -74
- package/lib/colorjs.io/src/spaces/lab.js +0 -74
- package/lib/colorjs.io/src/spaces/lch.js +0 -67
- package/lib/colorjs.io/src/spaces/lchuv.js +0 -68
- package/lib/colorjs.io/src/spaces/luv.js +0 -85
- package/lib/colorjs.io/src/spaces/oklab.js +0 -74
- package/lib/colorjs.io/src/spaces/oklch.js +0 -68
- package/lib/colorjs.io/src/spaces/p3-linear.js +0 -22
- package/lib/colorjs.io/src/spaces/p3.js +0 -13
- package/lib/colorjs.io/src/spaces/prophoto-linear.js +0 -28
- package/lib/colorjs.io/src/spaces/prophoto.js +0 -19
- package/lib/colorjs.io/src/spaces/rec2020-linear.js +0 -27
- package/lib/colorjs.io/src/spaces/rec2020.js +0 -31
- package/lib/colorjs.io/src/spaces/rec2100-hlg.js +0 -49
- package/lib/colorjs.io/src/spaces/rec2100-pq.js +0 -37
- package/lib/colorjs.io/src/spaces/srgb-linear.js +0 -30
- package/lib/colorjs.io/src/spaces/srgb.js +0 -127
- package/lib/colorjs.io/src/spaces/xyz-abs-d65.js +0 -40
- package/lib/colorjs.io/src/spaces/xyz-d50.js +0 -12
- package/lib/colorjs.io/src/spaces/xyz-d65.js +0 -18
- package/lib/colorjs.io/src/to.js +0 -26
- package/lib/colorjs.io/src/toGamut.js +0 -310
- package/lib/colorjs.io/src/util.js +0 -254
- package/lib/colorjs.io/src/variations.js +0 -14
- package/lib/colorjs.io/types/index.d.cts +0 -4
- package/lib/colorjs.io/types/index.d.ts +0 -42
- package/lib/colorjs.io/types/src/CATs.d.ts +0 -13
- package/lib/colorjs.io/types/src/adapt.d.ts +0 -12
- package/lib/colorjs.io/types/src/angles.d.ts +0 -7
- package/lib/colorjs.io/types/src/chromaticity.d.ts +0 -7
- package/lib/colorjs.io/types/src/clone.d.ts +0 -3
- package/lib/colorjs.io/types/src/color.d.ts +0 -160
- package/lib/colorjs.io/types/src/contrast/APCA.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Lstar.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Michelson.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/WCAG21.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/Weber.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/deltaPhi.d.ts +0 -5
- package/lib/colorjs.io/types/src/contrast/index.d.ts +0 -11
- package/lib/colorjs.io/types/src/contrast.d.ts +0 -12
- package/lib/colorjs.io/types/src/defaults.d.ts +0 -2
- package/lib/colorjs.io/types/src/deltaE/deltaE2000.d.ts +0 -11
- package/lib/colorjs.io/types/src/deltaE/deltaE76.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaECMC.d.ts +0 -9
- package/lib/colorjs.io/types/src/deltaE/deltaEHCT.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEITP.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEJz.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/deltaEOK.d.ts +0 -5
- package/lib/colorjs.io/types/src/deltaE/index.d.ts +0 -14
- package/lib/colorjs.io/types/src/deltaE.d.ts +0 -12
- package/lib/colorjs.io/types/src/display.d.ts +0 -17
- package/lib/colorjs.io/types/src/distance.d.ts +0 -8
- package/lib/colorjs.io/types/src/equals.d.ts +0 -3
- package/lib/colorjs.io/types/src/get.d.ts +0 -4
- package/lib/colorjs.io/types/src/getAll.d.ts +0 -7
- package/lib/colorjs.io/types/src/getColor.d.ts +0 -4
- package/lib/colorjs.io/types/src/hooks.d.ts +0 -52
- package/lib/colorjs.io/types/src/inGamut.d.ts +0 -8
- package/lib/colorjs.io/types/src/index-fn.d.cts +0 -1
- package/lib/colorjs.io/types/src/index-fn.d.ts +0 -63
- package/lib/colorjs.io/types/src/index.d.ts +0 -125
- package/lib/colorjs.io/types/src/interpolation.d.ts +0 -77
- package/lib/colorjs.io/types/src/keywords.d.ts +0 -2
- package/lib/colorjs.io/types/src/luminance.d.ts +0 -10
- package/lib/colorjs.io/types/src/multiply-matrices.d.ts +0 -9
- package/lib/colorjs.io/types/src/parse.d.ts +0 -16
- package/lib/colorjs.io/types/src/rgbspace.d.ts +0 -10
- package/lib/colorjs.io/types/src/serialize.d.ts +0 -13
- package/lib/colorjs.io/types/src/set.d.ts +0 -18
- package/lib/colorjs.io/types/src/setAll.d.ts +0 -14
- package/lib/colorjs.io/types/src/space-accessors.d.ts +0 -1
- package/lib/colorjs.io/types/src/space-coord-accessors.d.ts +0 -69
- package/lib/colorjs.io/types/src/space.d.ts +0 -143
- package/lib/colorjs.io/types/src/spaces/a98rgb-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/a98rgb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/acescc.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/acescg.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hpluv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsl.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsluv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hsv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/hwb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/ictcp.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/index-fn-hdr.d.ts +0 -9
- package/lib/colorjs.io/types/src/spaces/index-fn.d.ts +0 -29
- package/lib/colorjs.io/types/src/spaces/index.d.ts +0 -4
- package/lib/colorjs.io/types/src/spaces/jzazbz.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/jzczhz.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lab-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lab.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lch.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/lchuv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/luv.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/oklab.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/oklch.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/p3-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/p3.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/prophoto-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/prophoto.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2020-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2020.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2100-hlg.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/rec2100-pq.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/srgb-linear.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/srgb.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-abs-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-d50.d.ts +0 -3
- package/lib/colorjs.io/types/src/spaces/xyz-d65.d.ts +0 -3
- package/lib/colorjs.io/types/src/to.d.ts +0 -14
- package/lib/colorjs.io/types/src/toGamut.d.ts +0 -45
- package/lib/colorjs.io/types/src/util.d.ts +0 -58
- package/lib/colorjs.io/types/src/variations.d.ts +0 -5
- package/src/color-gamut/README.md +0 -75
- package/src/color-gamut/color-gamut.css +0 -32
- package/src/color-gamut/color-gamut.js +0 -172
- package/src/common/color.js +0 -12
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import RGBColorSpace from "../rgbspace.js";
|
|
2
|
-
import REC2020Linear from "./rec2020-linear.js";
|
|
3
|
-
// import sRGB from "./srgb.js";
|
|
4
|
-
|
|
5
|
-
const α = 1.09929682680944;
|
|
6
|
-
const β = 0.018053968510807;
|
|
7
|
-
|
|
8
|
-
export default new RGBColorSpace({
|
|
9
|
-
id: "rec2020",
|
|
10
|
-
name: "REC.2020",
|
|
11
|
-
base: REC2020Linear,
|
|
12
|
-
// Non-linear transfer function from Rec. ITU-R BT.2020-2 table 4
|
|
13
|
-
toBase (RGB) {
|
|
14
|
-
return RGB.map(function (val) {
|
|
15
|
-
if (val < β * 4.5) {
|
|
16
|
-
return val / 4.5;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return Math.pow((val + α - 1) / α, 1 / 0.45);
|
|
20
|
-
});
|
|
21
|
-
},
|
|
22
|
-
fromBase (RGB) {
|
|
23
|
-
return RGB.map(function (val) {
|
|
24
|
-
if (val >= β) {
|
|
25
|
-
return α * Math.pow(val, 0.45) - (α - 1);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return 4.5 * val;
|
|
29
|
-
});
|
|
30
|
-
},
|
|
31
|
-
});
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import RGBColorSpace from "../rgbspace.js";
|
|
2
|
-
import REC2020Linear from "./rec2020-linear.js";
|
|
3
|
-
|
|
4
|
-
// FIXME see https://github.com/LeaVerou/color.js/issues/190
|
|
5
|
-
|
|
6
|
-
const a = 0.17883277;
|
|
7
|
-
const b = 0.28466892; // 1 - (4 * a)
|
|
8
|
-
const c = 0.55991073; // 0.5 - a * Math.log(4 *a)
|
|
9
|
-
|
|
10
|
-
const scale = 3.7743; // Place 18% grey at HLG 0.38, so media white at 0.75
|
|
11
|
-
|
|
12
|
-
export default new RGBColorSpace({
|
|
13
|
-
id: "rec2100hlg",
|
|
14
|
-
cssId: "rec2100-hlg",
|
|
15
|
-
name: "REC.2100-HLG",
|
|
16
|
-
referred: "scene",
|
|
17
|
-
|
|
18
|
-
base: REC2020Linear,
|
|
19
|
-
toBase (RGB) {
|
|
20
|
-
// given HLG encoded component in range [0, 1]
|
|
21
|
-
// return media-white relative linear-light
|
|
22
|
-
return RGB.map(function (val) {
|
|
23
|
-
// first the HLG EOTF
|
|
24
|
-
// ITU-R BT.2390-10 p.30 section
|
|
25
|
-
// 6.3 The hybrid log-gamma electro-optical transfer function (EOTF)
|
|
26
|
-
// Then scale by 3 so media white is 1.0
|
|
27
|
-
if (val <= 0.5) {
|
|
28
|
-
return (val ** 2) / 3 * scale;
|
|
29
|
-
}
|
|
30
|
-
return ((Math.exp((val - c) / a) + b) / 12) * scale;
|
|
31
|
-
});
|
|
32
|
-
},
|
|
33
|
-
fromBase (RGB) {
|
|
34
|
-
// given media-white relative linear-light
|
|
35
|
-
// where diffuse white is 1.0,
|
|
36
|
-
// return HLG encoded component in range [0, 1]
|
|
37
|
-
return RGB.map(function (val) {
|
|
38
|
-
// first scale to put linear-light media white at 1/3
|
|
39
|
-
val /= scale;
|
|
40
|
-
// now the HLG OETF
|
|
41
|
-
// ITU-R BT.2390-10 p.23
|
|
42
|
-
// 6.1 The hybrid log-gamma opto-electronic transfer function (OETF)
|
|
43
|
-
if (val <= 1 / 12) {
|
|
44
|
-
return Math.sqrt(3 * val);
|
|
45
|
-
}
|
|
46
|
-
return a * Math.log(12 * val - b) + c;
|
|
47
|
-
});
|
|
48
|
-
},
|
|
49
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import RGBColorSpace from "../rgbspace.js";
|
|
2
|
-
import REC2020Linear from "./rec2020-linear.js";
|
|
3
|
-
|
|
4
|
-
const Yw = 203; // absolute luminance of media white, cd/m²
|
|
5
|
-
const n = 2610 / (2 ** 14);
|
|
6
|
-
const ninv = (2 ** 14) / 2610;
|
|
7
|
-
const m = 2523 / (2 ** 5);
|
|
8
|
-
const minv = (2 ** 5) / 2523;
|
|
9
|
-
const c1 = 3424 / (2 ** 12);
|
|
10
|
-
const c2 = 2413 / (2 ** 7);
|
|
11
|
-
const c3 = 2392 / (2 ** 7);
|
|
12
|
-
|
|
13
|
-
export default new RGBColorSpace({
|
|
14
|
-
id: "rec2100pq",
|
|
15
|
-
cssId: "rec2100-pq",
|
|
16
|
-
name: "REC.2100-PQ",
|
|
17
|
-
base: REC2020Linear,
|
|
18
|
-
toBase (RGB) {
|
|
19
|
-
// given PQ encoded component in range [0, 1]
|
|
20
|
-
// return media-white relative linear-light
|
|
21
|
-
return RGB.map(function (val) {
|
|
22
|
-
let x = ((Math.max(((val ** minv) - c1), 0) / (c2 - (c3 * (val ** minv)))) ** ninv);
|
|
23
|
-
return (x * 10000 / Yw); // luminance relative to diffuse white, [0, 70 or so].
|
|
24
|
-
});
|
|
25
|
-
},
|
|
26
|
-
fromBase (RGB) {
|
|
27
|
-
// given media-white relative linear-light
|
|
28
|
-
// returnPQ encoded component in range [0, 1]
|
|
29
|
-
return RGB.map(function (val) {
|
|
30
|
-
let x = Math.max(val * Yw / 10000, 0); // absolute luminance of peak white is 10,000 cd/m².
|
|
31
|
-
let num = (c1 + (c2 * (x ** n)));
|
|
32
|
-
let denom = (1 + (c3 * (x ** n)));
|
|
33
|
-
|
|
34
|
-
return ((num / denom) ** m);
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
});
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import RGBColorSpace from "../rgbspace.js";
|
|
2
|
-
|
|
3
|
-
// This is the linear-light version of sRGB
|
|
4
|
-
// as used for example in SVG filters
|
|
5
|
-
// or in Canvas
|
|
6
|
-
|
|
7
|
-
// This matrix was calculated directly from the RGB and white chromaticities
|
|
8
|
-
// when rounded to 8 decimal places, it agrees completely with the official matrix
|
|
9
|
-
// see https://github.com/w3c/csswg-drafts/issues/5922
|
|
10
|
-
const toXYZ_M = [
|
|
11
|
-
[ 0.41239079926595934, 0.357584339383878, 0.1804807884018343 ],
|
|
12
|
-
[ 0.21263900587151027, 0.715168678767756, 0.07219231536073371 ],
|
|
13
|
-
[ 0.01933081871559182, 0.11919477979462598, 0.9505321522496607 ],
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
// This matrix is the inverse of the above;
|
|
17
|
-
// again it agrees with the official definition when rounded to 8 decimal places
|
|
18
|
-
export const fromXYZ_M = [
|
|
19
|
-
[ 3.2409699419045226, -1.537383177570094, -0.4986107602930034 ],
|
|
20
|
-
[ -0.9692436362808796, 1.8759675015077202, 0.04155505740717559 ],
|
|
21
|
-
[ 0.05563007969699366, -0.20397695888897652, 1.0569715142428786 ],
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
export default new RGBColorSpace({
|
|
25
|
-
id: "srgb-linear",
|
|
26
|
-
name: "Linear sRGB",
|
|
27
|
-
white: "D65",
|
|
28
|
-
toXYZ_M,
|
|
29
|
-
fromXYZ_M,
|
|
30
|
-
});
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import RGBColorSpace from "../rgbspace.js";
|
|
2
|
-
import sRGBLinear from "./srgb-linear.js";
|
|
3
|
-
import KEYWORDS from "../keywords.js";
|
|
4
|
-
|
|
5
|
-
let coordGrammar = Array(3).fill("<percentage> | <number>[0, 255]");
|
|
6
|
-
let coordGrammarNumber = Array(3).fill("<number>[0, 255]");
|
|
7
|
-
|
|
8
|
-
export default new RGBColorSpace({
|
|
9
|
-
id: "srgb",
|
|
10
|
-
name: "sRGB",
|
|
11
|
-
base: sRGBLinear,
|
|
12
|
-
fromBase: rgb => {
|
|
13
|
-
// convert an array of linear-light sRGB values in the range 0.0-1.0
|
|
14
|
-
// to gamma corrected form
|
|
15
|
-
// https://en.wikipedia.org/wiki/SRGB
|
|
16
|
-
return rgb.map(val => {
|
|
17
|
-
let sign = val < 0 ? -1 : 1;
|
|
18
|
-
let abs = val * sign;
|
|
19
|
-
|
|
20
|
-
if (abs > 0.0031308) {
|
|
21
|
-
return sign * (1.055 * (abs ** (1 / 2.4)) - 0.055);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return 12.92 * val;
|
|
25
|
-
});
|
|
26
|
-
},
|
|
27
|
-
toBase: rgb => {
|
|
28
|
-
// convert an array of sRGB values in the range 0.0 - 1.0
|
|
29
|
-
// to linear light (un-companded) form.
|
|
30
|
-
// https://en.wikipedia.org/wiki/SRGB
|
|
31
|
-
return rgb.map(val => {
|
|
32
|
-
let sign = val < 0 ? -1 : 1;
|
|
33
|
-
let abs = val * sign;
|
|
34
|
-
|
|
35
|
-
if (abs <= 0.04045) {
|
|
36
|
-
return val / 12.92;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return sign * (((abs + 0.055) / 1.055) ** 2.4);
|
|
40
|
-
});
|
|
41
|
-
},
|
|
42
|
-
formats: {
|
|
43
|
-
"rgb": {
|
|
44
|
-
coords: coordGrammar,
|
|
45
|
-
},
|
|
46
|
-
"rgb_number": {
|
|
47
|
-
name: "rgb",
|
|
48
|
-
commas: true,
|
|
49
|
-
coords: coordGrammarNumber,
|
|
50
|
-
noAlpha: true,
|
|
51
|
-
},
|
|
52
|
-
"color": { /* use defaults */ },
|
|
53
|
-
"rgba": {
|
|
54
|
-
coords: coordGrammar,
|
|
55
|
-
commas: true,
|
|
56
|
-
lastAlpha: true,
|
|
57
|
-
},
|
|
58
|
-
"rgba_number": {
|
|
59
|
-
name: "rgba",
|
|
60
|
-
commas: true,
|
|
61
|
-
coords: coordGrammarNumber,
|
|
62
|
-
},
|
|
63
|
-
"hex": {
|
|
64
|
-
type: "custom",
|
|
65
|
-
toGamut: true,
|
|
66
|
-
test: str => /^#([a-f0-9]{3,4}){1,2}$/i.test(str),
|
|
67
|
-
parse (str) {
|
|
68
|
-
if (str.length <= 5) {
|
|
69
|
-
// #rgb or #rgba, duplicate digits
|
|
70
|
-
str = str.replace(/[a-f0-9]/gi, "$&$&");
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
let rgba = [];
|
|
74
|
-
str.replace(/[a-f0-9]{2}/gi, component => {
|
|
75
|
-
rgba.push(parseInt(component, 16) / 255);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
spaceId: "srgb",
|
|
80
|
-
coords: rgba.slice(0, 3),
|
|
81
|
-
alpha: rgba.slice(3)[0],
|
|
82
|
-
};
|
|
83
|
-
},
|
|
84
|
-
serialize: (coords, alpha, {
|
|
85
|
-
collapse = true, // collapse to 3-4 digit hex when possible?
|
|
86
|
-
} = {}) => {
|
|
87
|
-
if (alpha < 1) {
|
|
88
|
-
coords.push(alpha);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
coords = coords.map(c => Math.round(c * 255));
|
|
92
|
-
|
|
93
|
-
let collapsible = collapse && coords.every(c => c % 17 === 0);
|
|
94
|
-
|
|
95
|
-
let hex = coords.map(c => {
|
|
96
|
-
if (collapsible) {
|
|
97
|
-
return (c / 17).toString(16);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return c.toString(16).padStart(2, "0");
|
|
101
|
-
}).join("");
|
|
102
|
-
|
|
103
|
-
return "#" + hex;
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
"keyword": {
|
|
107
|
-
type: "custom",
|
|
108
|
-
test: str => /^[a-z]+$/i.test(str),
|
|
109
|
-
parse (str) {
|
|
110
|
-
str = str.toLowerCase();
|
|
111
|
-
let ret = {spaceId: "srgb", coords: null, alpha: 1};
|
|
112
|
-
|
|
113
|
-
if (str === "transparent") {
|
|
114
|
-
ret.coords = KEYWORDS.black;
|
|
115
|
-
ret.alpha = 0;
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
ret.coords = KEYWORDS[str];
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (ret.coords) {
|
|
122
|
-
return ret;
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
});
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import ColorSpace from "../space.js";
|
|
2
|
-
import XYZ_D65 from "./xyz-d65.js";
|
|
3
|
-
|
|
4
|
-
const Yw = 203; // absolute luminance of media white
|
|
5
|
-
|
|
6
|
-
export default new ColorSpace({
|
|
7
|
-
// Absolute CIE XYZ, with a D65 whitepoint,
|
|
8
|
-
// as used in most HDR colorspaces as a starting point.
|
|
9
|
-
// SDR spaces are converted per BT.2048
|
|
10
|
-
// so that diffuse, media white is 203 cd/m²
|
|
11
|
-
id: "xyz-abs-d65",
|
|
12
|
-
cssId: "--xyz-abs-d65",
|
|
13
|
-
name: "Absolute XYZ D65",
|
|
14
|
-
coords: {
|
|
15
|
-
x: {
|
|
16
|
-
refRange: [0, 9504.7],
|
|
17
|
-
name: "Xa",
|
|
18
|
-
},
|
|
19
|
-
y: {
|
|
20
|
-
refRange: [0, 10000],
|
|
21
|
-
name: "Ya",
|
|
22
|
-
},
|
|
23
|
-
z: {
|
|
24
|
-
refRange: [0, 10888.3],
|
|
25
|
-
name: "Za",
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
base: XYZ_D65,
|
|
30
|
-
fromBase (XYZ) {
|
|
31
|
-
// Make XYZ absolute, not relative to media white
|
|
32
|
-
// Maximum luminance in PQ is 10,000 cd/m²
|
|
33
|
-
// Relative XYZ has Y=1 for media white
|
|
34
|
-
return XYZ.map (v => Math.max(v * Yw, 0));
|
|
35
|
-
},
|
|
36
|
-
toBase (AbsXYZ) {
|
|
37
|
-
// Convert to media-white relative XYZ
|
|
38
|
-
return AbsXYZ.map(v => Math.max(v / Yw, 0));
|
|
39
|
-
},
|
|
40
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import ColorSpace from "../space.js";
|
|
2
|
-
import adapt from "../adapt.js";
|
|
3
|
-
import XYZ_D65 from "./xyz-d65.js";
|
|
4
|
-
|
|
5
|
-
export default new ColorSpace({
|
|
6
|
-
id: "xyz-d50",
|
|
7
|
-
name: "XYZ D50",
|
|
8
|
-
white: "D50",
|
|
9
|
-
base: XYZ_D65,
|
|
10
|
-
fromBase: coords => adapt(XYZ_D65.white, "D50", coords),
|
|
11
|
-
toBase: coords => adapt("D50", XYZ_D65.white, coords),
|
|
12
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColorSpace from "../space.js";
|
|
2
|
-
|
|
3
|
-
export default new ColorSpace({
|
|
4
|
-
id: "xyz-d65",
|
|
5
|
-
name: "XYZ D65",
|
|
6
|
-
coords: {
|
|
7
|
-
x: {name: "X"},
|
|
8
|
-
y: {name: "Y"},
|
|
9
|
-
z: {name: "Z"},
|
|
10
|
-
},
|
|
11
|
-
white: "D65",
|
|
12
|
-
formats: {
|
|
13
|
-
color: {
|
|
14
|
-
ids: ["xyz-d65", "xyz"],
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
aliases: ["xyz"],
|
|
18
|
-
});
|
package/lib/colorjs.io/src/to.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import getColor from "./getColor.js";
|
|
2
|
-
import ColorSpace from "./space.js";
|
|
3
|
-
import toGamut from "./toGamut.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Convert to color space and return a new color
|
|
7
|
-
* @param {Object|string} space - Color space object or id
|
|
8
|
-
* @param {Object} options
|
|
9
|
-
* @param {boolean} options.inGamut - Whether to force resulting color in gamut
|
|
10
|
-
* @returns {Color}
|
|
11
|
-
*/
|
|
12
|
-
export default function to (color, space, {inGamut} = {}) {
|
|
13
|
-
color = getColor(color);
|
|
14
|
-
space = ColorSpace.get(space);
|
|
15
|
-
|
|
16
|
-
let coords = space.from(color);
|
|
17
|
-
let ret = {space, coords, alpha: color.alpha};
|
|
18
|
-
|
|
19
|
-
if (inGamut) {
|
|
20
|
-
ret = toGamut(ret, inGamut === true ? undefined : inGamut);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return ret;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
to.returns = "color";
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
import * as util from "./util.js";
|
|
2
|
-
import ColorSpace from "./space.js";
|
|
3
|
-
import defaults from "./defaults.js";
|
|
4
|
-
import deltaE2000 from "./deltaE/deltaE2000.js";
|
|
5
|
-
import deltaEOK from "./deltaE/deltaEOK.js";
|
|
6
|
-
import inGamut from "./inGamut.js";
|
|
7
|
-
import to from "./to.js";
|
|
8
|
-
import get from "./get.js";
|
|
9
|
-
import oklab from "./spaces/oklab.js";
|
|
10
|
-
import set from "./set.js";
|
|
11
|
-
import clone from "./clone.js";
|
|
12
|
-
import getColor from "./getColor.js";
|
|
13
|
-
import deltaEMethods from "./deltaE/index.js";
|
|
14
|
-
import {WHITES} from "./adapt.js";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Calculate the epsilon to 2 degrees smaller than the specified JND.
|
|
18
|
-
* @param {Number} jnd - The target "just noticeable difference".
|
|
19
|
-
* @returns {Number}
|
|
20
|
-
*/
|
|
21
|
-
function calcEpsilon (jnd) {
|
|
22
|
-
// Calculate the epsilon to 2 degrees smaller than the specified JND.
|
|
23
|
-
|
|
24
|
-
const order = (!jnd) ? 0 : Math.floor(Math.log10(Math.abs(jnd)));
|
|
25
|
-
// Limit to an arbitrary value to ensure value is never too small and causes infinite loops.
|
|
26
|
-
return Math.max(parseFloat(`1e${order - 2}`), 1e-6);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const GMAPPRESET = {
|
|
30
|
-
"hct": {
|
|
31
|
-
method: "hct.c",
|
|
32
|
-
jnd: 2,
|
|
33
|
-
deltaEMethod: "hct",
|
|
34
|
-
blackWhiteClamp: {},
|
|
35
|
-
},
|
|
36
|
-
"hct-tonal": {
|
|
37
|
-
method: "hct.c",
|
|
38
|
-
jnd: 0,
|
|
39
|
-
deltaEMethod: "hct",
|
|
40
|
-
blackWhiteClamp: { channel: "hct.t", min: 0, max: 100 },
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Force coordinates to be in gamut of a certain color space.
|
|
46
|
-
* Mutates the color it is passed.
|
|
47
|
-
* @param {Object|string} options object or spaceId string
|
|
48
|
-
* @param {string} options.method - How to force into gamut.
|
|
49
|
-
* If "clip", coordinates are just clipped to their reference range.
|
|
50
|
-
* If "css", coordinates are reduced according to the CSS 4 Gamut Mapping Algorithm.
|
|
51
|
-
* If in the form [colorSpaceId].[coordName], that coordinate is reduced
|
|
52
|
-
* until the color is in gamut. Please note that this may produce nonsensical
|
|
53
|
-
* results for certain coordinates (e.g. hue) or infinite loops if reducing the coordinate never brings the color in gamut.
|
|
54
|
-
* @param {ColorSpace|string} options.space - The space whose gamut we want to map to
|
|
55
|
-
* @param {string} options.deltaEMethod - The delta E method to use while performing gamut mapping.
|
|
56
|
-
* If no method is specified, delta E 2000 is used.
|
|
57
|
-
* @param {Number} options.jnd - The "just noticeable difference" to target.
|
|
58
|
-
* @param {Object} options.blackWhiteClamp - Used to configure SDR black and clamping.
|
|
59
|
-
* "channel" indicates the "space.channel" to use for determining when to clamp.
|
|
60
|
-
* "min" indicates the lower limit for black clamping and "max" indicates the upper
|
|
61
|
-
* limit for white clamping.
|
|
62
|
-
*/
|
|
63
|
-
|
|
64
|
-
export default function toGamut (
|
|
65
|
-
color,
|
|
66
|
-
{
|
|
67
|
-
method = defaults.gamut_mapping,
|
|
68
|
-
space = undefined,
|
|
69
|
-
deltaEMethod = "",
|
|
70
|
-
jnd = 2,
|
|
71
|
-
blackWhiteClamp = {},
|
|
72
|
-
} = {},
|
|
73
|
-
) {
|
|
74
|
-
color = getColor(color);
|
|
75
|
-
|
|
76
|
-
if (util.isString(arguments[1])) {
|
|
77
|
-
space = arguments[1];
|
|
78
|
-
}
|
|
79
|
-
else if (!space) {
|
|
80
|
-
space = color.space;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
space = ColorSpace.get(space);
|
|
84
|
-
|
|
85
|
-
// 3 spaces:
|
|
86
|
-
// color.space: current color space
|
|
87
|
-
// space: space whose gamut we are mapping to
|
|
88
|
-
// mapSpace: space with the coord we're reducing
|
|
89
|
-
|
|
90
|
-
if (inGamut(color, space, { epsilon: 0 })) {
|
|
91
|
-
return color;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
let spaceColor;
|
|
95
|
-
if (method === "css") {
|
|
96
|
-
spaceColor = toGamutCSS(color, { space });
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
if (method !== "clip" && !inGamut(color, space)) {
|
|
100
|
-
|
|
101
|
-
if (Object.prototype.hasOwnProperty.call(GMAPPRESET, method)) {
|
|
102
|
-
({method, jnd, deltaEMethod, blackWhiteClamp} = GMAPPRESET[method]);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Get the correct delta E method
|
|
106
|
-
let de = deltaE2000;
|
|
107
|
-
if (deltaEMethod !== "") {
|
|
108
|
-
for (let m in deltaEMethods) {
|
|
109
|
-
if ("deltae" + deltaEMethod.toLowerCase() === m.toLowerCase()) {
|
|
110
|
-
de = deltaEMethods[m];
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
let clipped = toGamut(to(color, space), { method: "clip", space });
|
|
117
|
-
if (de(color, clipped) > jnd) {
|
|
118
|
-
|
|
119
|
-
// Clamp to SDR white and black if required
|
|
120
|
-
if (Object.keys(blackWhiteClamp).length === 3) {
|
|
121
|
-
let channelMeta = ColorSpace.resolveCoord(blackWhiteClamp.channel);
|
|
122
|
-
let channel = get(to(color, channelMeta.space), channelMeta.id);
|
|
123
|
-
if (util.isNone(channel)) {
|
|
124
|
-
channel = 0;
|
|
125
|
-
}
|
|
126
|
-
if (channel >= blackWhiteClamp.max) {
|
|
127
|
-
return to({ space: "xyz-d65", coords: WHITES["D65"] }, color.space);
|
|
128
|
-
}
|
|
129
|
-
else if (channel <= blackWhiteClamp.min) {
|
|
130
|
-
return to({ space: "xyz-d65", coords: [0, 0, 0] }, color.space);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Reduce a coordinate of a certain color space until the color is in gamut
|
|
135
|
-
let coordMeta = ColorSpace.resolveCoord(method);
|
|
136
|
-
let mapSpace = coordMeta.space;
|
|
137
|
-
let coordId = coordMeta.id;
|
|
138
|
-
|
|
139
|
-
let mappedColor = to(color, mapSpace);
|
|
140
|
-
// If we were already in the mapped color space, we need to resolve undefined channels
|
|
141
|
-
mappedColor.coords.forEach((c, i) => {
|
|
142
|
-
if (util.isNone(c)) {
|
|
143
|
-
mappedColor.coords[i] = 0;
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
let bounds = coordMeta.range || coordMeta.refRange;
|
|
147
|
-
let min = bounds[0];
|
|
148
|
-
let ε = calcEpsilon(jnd);
|
|
149
|
-
let low = min;
|
|
150
|
-
let high = get(mappedColor, coordId);
|
|
151
|
-
|
|
152
|
-
while (high - low > ε) {
|
|
153
|
-
let clipped = clone(mappedColor);
|
|
154
|
-
clipped = toGamut(clipped, { space, method: "clip" });
|
|
155
|
-
let deltaE = de(mappedColor, clipped);
|
|
156
|
-
|
|
157
|
-
if (deltaE - jnd < ε) {
|
|
158
|
-
low = get(mappedColor, coordId);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
high = get(mappedColor, coordId);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
set(mappedColor, coordId, (low + high) / 2);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
spaceColor = to(mappedColor, space);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
spaceColor = clipped;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
spaceColor = to(color, space);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (method === "clip" // Dumb coord clipping
|
|
178
|
-
// finish off smarter gamut mapping with clip to get rid of ε, see #17
|
|
179
|
-
|| !inGamut(spaceColor, space, { epsilon: 0 })
|
|
180
|
-
) {
|
|
181
|
-
let bounds = Object.values(space.coords).map(c => c.range || []);
|
|
182
|
-
|
|
183
|
-
spaceColor.coords = spaceColor.coords.map((c, i) => {
|
|
184
|
-
let [min, max] = bounds[i];
|
|
185
|
-
|
|
186
|
-
if (min !== undefined) {
|
|
187
|
-
c = Math.max(min, c);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (max !== undefined) {
|
|
191
|
-
c = Math.min(c, max);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return c;
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
if (space !== color.space) {
|
|
200
|
-
spaceColor = to(spaceColor, color.space);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
color.coords = spaceColor.coords;
|
|
204
|
-
return color;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
toGamut.returns = "color";
|
|
208
|
-
|
|
209
|
-
// The reference colors to be used if lightness is out of the range 0-1 in the
|
|
210
|
-
// `Oklch` space. These are created in the `Oklab` space, as it is used by the
|
|
211
|
-
// DeltaEOK calculation, so it is guaranteed to be imported.
|
|
212
|
-
const COLORS = {
|
|
213
|
-
WHITE: { space: oklab, coords: [1, 0, 0] },
|
|
214
|
-
BLACK: { space: oklab, coords: [0, 0, 0] },
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Given a color `origin`, returns a new color that is in gamut using
|
|
219
|
-
* the CSS Gamut Mapping Algorithm. If `space` is specified, it will be in gamut
|
|
220
|
-
* in `space`, and returned in `space`. Otherwise, it will be in gamut and
|
|
221
|
-
* returned in the color space of `origin`.
|
|
222
|
-
* @param {Object} origin
|
|
223
|
-
* @param {Object} options
|
|
224
|
-
* @param {ColorSpace|string} options.space
|
|
225
|
-
* @returns {Color}
|
|
226
|
-
*/
|
|
227
|
-
export function toGamutCSS (origin, {space} = {}) {
|
|
228
|
-
const JND = 0.02;
|
|
229
|
-
const ε = 0.0001;
|
|
230
|
-
|
|
231
|
-
origin = getColor(origin);
|
|
232
|
-
|
|
233
|
-
if (!space) {
|
|
234
|
-
space = origin.space;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
space = ColorSpace.get(space);
|
|
238
|
-
const oklchSpace = ColorSpace.get("oklch");
|
|
239
|
-
|
|
240
|
-
if (space.isUnbounded) {
|
|
241
|
-
return to(origin, space);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
const origin_OKLCH = to(origin, oklchSpace);
|
|
245
|
-
let L = origin_OKLCH.coords[0];
|
|
246
|
-
|
|
247
|
-
// return media white or black, if lightness is out of range
|
|
248
|
-
if (L >= 1) {
|
|
249
|
-
const white = to(COLORS.WHITE, space);
|
|
250
|
-
white.alpha = origin.alpha;
|
|
251
|
-
return to(white, space);
|
|
252
|
-
}
|
|
253
|
-
if (L <= 0) {
|
|
254
|
-
const black = to(COLORS.BLACK, space);
|
|
255
|
-
black.alpha = origin.alpha;
|
|
256
|
-
return to(black, space);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (inGamut(origin_OKLCH, space, {epsilon: 0})) {
|
|
260
|
-
return to(origin_OKLCH, space);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
function clip (_color) {
|
|
264
|
-
const destColor = to(_color, space);
|
|
265
|
-
const spaceCoords = Object.values(space.coords);
|
|
266
|
-
destColor.coords = destColor.coords.map((coord, index) => {
|
|
267
|
-
if ("range" in spaceCoords[index]) {
|
|
268
|
-
const [min, max] = spaceCoords[index].range;
|
|
269
|
-
return util.clamp(min, coord, max);
|
|
270
|
-
}
|
|
271
|
-
return coord;
|
|
272
|
-
});
|
|
273
|
-
return destColor;
|
|
274
|
-
}
|
|
275
|
-
let min = 0;
|
|
276
|
-
let max = origin_OKLCH.coords[1];
|
|
277
|
-
let min_inGamut = true;
|
|
278
|
-
let current = clone(origin_OKLCH);
|
|
279
|
-
let clipped = clip(current);
|
|
280
|
-
|
|
281
|
-
let E = deltaEOK(clipped, current);
|
|
282
|
-
if (E < JND) {
|
|
283
|
-
return clipped;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
while ((max - min) > ε) {
|
|
287
|
-
const chroma = (min + max) / 2;
|
|
288
|
-
current.coords[1] = chroma;
|
|
289
|
-
if (min_inGamut && inGamut(current, space, {epsilon: 0})) {
|
|
290
|
-
min = chroma;
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
clipped = clip(current);
|
|
294
|
-
E = deltaEOK(clipped, current);
|
|
295
|
-
if (E < JND) {
|
|
296
|
-
if ((JND - E < ε)) {
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
min_inGamut = false;
|
|
301
|
-
min = chroma;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
max = chroma;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return clipped;
|
|
310
|
-
}
|