color-space
Advanced tools
Comparing version 2.3.0 to 2.3.1
16
cmy.js
@@ -8,4 +8,4 @@ /** | ||
name: 'cmy', | ||
min: [0,0,0], | ||
max: [100,100,100], | ||
min: [0, 0, 0], | ||
max: [100, 100, 100], | ||
channel: ['cyan', 'magenta', 'yellow'], | ||
@@ -23,5 +23,5 @@ alias: ['CMY'] | ||
cmy.rgb = ([c, m, y]) => [ | ||
(1 - c/100) * 255, | ||
(1 - m/100) * 255, | ||
(1 - y/100) * 255 | ||
(1 - c / 100) * 255, | ||
(1 - m / 100) * 255, | ||
(1 - y / 100) * 255 | ||
]; | ||
@@ -37,5 +37,5 @@ | ||
rgb.cmy = ([r, g, b]) => [ | ||
(1-r/255) * 100 || 0, | ||
(1-g/255) * 100 || 0, | ||
(1-b/255) * 100 || 0 | ||
(1 - r / 255) * 100 || 0, | ||
(1 - g / 255) * 100 || 0, | ||
(1 - b / 255) * 100 || 0 | ||
]; | ||
@@ -42,0 +42,0 @@ |
22
cmyk.js
@@ -8,4 +8,4 @@ /** | ||
name: 'cmyk', | ||
min: [0,0,0,0], | ||
max: [100,100,100,100], | ||
min: [0, 0, 0, 0], | ||
max: [100, 100, 100, 100], | ||
channel: ['cyan', 'magenta', 'yellow', 'black'], | ||
@@ -16,10 +16,10 @@ alias: ['CMYK'], | ||
let c = cmyk[0] / 100, | ||
m = cmyk[1] / 100, | ||
y = cmyk[2] / 100, | ||
k = cmyk[3] / 100, | ||
r, g, b; | ||
m = cmyk[1] / 100, | ||
y = cmyk[2] / 100, | ||
k = cmyk[3] / 100, | ||
r, g, b; | ||
r = 1 - Math.min(1, c * (1 - k) + k), | ||
g = 1 - Math.min(1, m * (1 - k) + k), | ||
b = 1 - Math.min(1, y * (1 - k) + k); | ||
g = 1 - Math.min(1, m * (1 - k) + k), | ||
b = 1 - Math.min(1, y * (1 - k) + k); | ||
@@ -32,5 +32,5 @@ return [r * 255, g * 255, b * 255]; | ||
let r = rgb[0] / 255, | ||
g = rgb[1] / 255, | ||
b = rgb[2] / 255, | ||
c, m, y, k; | ||
g = rgb[1] / 255, | ||
b = rgb[2] / 255, | ||
c, m, y, k; | ||
@@ -37,0 +37,0 @@ k = Math.min(1 - r, 1 - g, 1 - b); |
@@ -35,3 +35,3 @@ /** | ||
*/ | ||
cubehelix.rgb = function(fraction, options={}) { | ||
cubehelix.rgb = function (fraction, options = {}) { | ||
if (Array.isArray(fraction)) fraction = fraction[0]; | ||
@@ -44,11 +44,11 @@ | ||
var angle = 2 * Math.PI * (start/3 + 1.0 + rotation * fraction); | ||
var angle = 2 * Math.PI * (start / 3 + 1.0 + rotation * fraction); | ||
fraction = Math.pow(fraction, gamma); | ||
var amp = hue * fraction * (1-fraction)/2.0; | ||
var amp = hue * fraction * (1 - fraction) / 2.0; | ||
var r = fraction + amp*(-0.14861*Math.cos(angle)+1.78277*Math.sin(angle)); | ||
var g = fraction + amp*(-0.29227*Math.cos(angle)-0.90649*Math.sin(angle)); | ||
var b = fraction + amp*(+1.97294*Math.cos(angle)); | ||
var r = fraction + amp * (-0.14861 * Math.cos(angle) + 1.78277 * Math.sin(angle)); | ||
var g = fraction + amp * (-0.29227 * Math.cos(angle) - 0.90649 * Math.sin(angle)); | ||
var b = fraction + amp * (+1.97294 * Math.cos(angle)); | ||
@@ -69,3 +69,3 @@ r = Math.max(1, Math.min(r, 0)); | ||
*/ | ||
rgb.cubehelix = function(rgb) { | ||
rgb.cubehelix = function (rgb) { | ||
//TODO - there is no backwise conversion yet | ||
@@ -72,0 +72,0 @@ throw new Error('rgb.cubehelix conversion is not implemented yet'); |
@@ -778,20 +778,20 @@ // rgb.js | ||
channel: ["lightness", "a", "b"], | ||
alias: ["LAB", "cielab"], | ||
xyz: function(lab2) { | ||
var l2 = lab2[0], a = lab2[1], b = lab2[2], x, y, z, y2; | ||
if (l2 <= 8) { | ||
y = l2 * 100 / 903.3; | ||
y2 = 7.787 * (y / 100) + 16 / 116; | ||
} else { | ||
y = 100 * Math.pow((l2 + 16) / 116, 3); | ||
y2 = Math.pow(y / 100, 1 / 3); | ||
} | ||
x = x / 95.047 <= 8856e-6 ? x = 95.047 * (a / 500 + y2 - 16 / 116) / 7.787 : 95.047 * Math.pow(a / 500 + y2, 3); | ||
z = z / 108.883 <= 8859e-6 ? z = 108.883 * (y2 - b / 200 - 16 / 116) / 7.787 : 108.883 * Math.pow(y2 - b / 200, 3); | ||
return [x, y, z]; | ||
alias: ["LAB", "cielab"] | ||
}; | ||
lab.xyz = ([l2, a, b]) => { | ||
var x, y, z, y2; | ||
if (l2 <= 8) { | ||
y = l2 * 100 / 903.3; | ||
y2 = 7.787 * (y / 100) + 16 / 116; | ||
} else { | ||
y = 100 * Math.pow((l2 + 16) / 116, 3); | ||
y2 = Math.pow(y / 100, 1 / 3); | ||
} | ||
x = x / 95.047 <= 8856e-6 ? x = 95.047 * (a / 500 + y2 - 16 / 116) / 7.787 : 95.047 * Math.pow(a / 500 + y2, 3); | ||
z = z / 108.883 <= 8859e-6 ? z = 108.883 * (y2 - b / 200 - 16 / 116) / 7.787 : 108.883 * Math.pow(y2 - b / 200, 3); | ||
return [x, y, z]; | ||
}; | ||
var lab_default = lab; | ||
xyz_default.lab = function(xyz2) { | ||
var x = xyz2[0], y = xyz2[1], z = xyz2[2], l2, a, b; | ||
xyz_default.lab = ([x, y, z]) => { | ||
var l2, a, b; | ||
x /= 95.047; | ||
@@ -1270,2 +1270,41 @@ y /= 100; | ||
// oklab.js | ||
var oklab = { | ||
name: "oklab", | ||
min: [0, -0.4, -0.4], | ||
max: [1, 0.4, 0.4], | ||
channel: ["lightness", "a", "b"] | ||
}; | ||
var oklab_default = oklab; | ||
oklab.rgb = ([l2, a, b]) => { | ||
const l_ = l2 + 0.3963377774 * a + 0.2158037573 * b; | ||
const m_ = l2 - 0.1055613458 * a - 0.0638541728 * b; | ||
const s_ = l2 - 0.0894841775 * a - 1.291485548 * b; | ||
const l3 = l_ ** 3; | ||
const m3 = m_ ** 3; | ||
const s3 = s_ ** 3; | ||
return [ | ||
(4.0767416621 * l3 - 3.307711591 * m3 + 0.2309699292 * s3) * 255, | ||
(-1.2684380046 * l3 + 2.6097574011 * m3 - 0.3413193965 * s3) * 255, | ||
(-0.0041960863 * l3 - 0.7034186147 * m3 + 1.707614701 * s3) * 255 | ||
]; | ||
}; | ||
rgb_default.oklab = ([r2, g2, b]) => { | ||
r2 /= 255, g2 /= 255, b /= 255; | ||
const l2 = 0.4122214708 * r2 + 0.5363325363 * g2 + 0.0514459929 * b; | ||
const m2 = 0.2119034982 * r2 + 0.6806995451 * g2 + 0.1073969566 * b; | ||
const s = 0.0883024619 * r2 + 0.2817188376 * g2 + 0.6299787005 * b; | ||
const l_ = Math.cbrt(l2); | ||
const m_ = Math.cbrt(m2); | ||
const s_ = Math.cbrt(s); | ||
return [ | ||
0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_, | ||
// L | ||
1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_, | ||
// a | ||
0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_ | ||
// b | ||
]; | ||
}; | ||
// cubehelix.js | ||
@@ -1935,2 +1974,13 @@ var defaults = { | ||
// lrgb.js | ||
var lrgb = { | ||
name: "lrgb", | ||
min: [0, 0, 0], | ||
max: [1, 1, 1], | ||
channel: ["red", "green", "blue"] | ||
}; | ||
lrgb.rgb = (rgb2) => rgb2.map((c) => (c /= 255) > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92); | ||
rgb_default.lrgb = (rgb2) => rgb2.map((c) => c / 255 <= 0.04045 ? c / 255 / 12.92 : ((c / 255 + 0.055) / 1.055) ** 2.4); | ||
var lrgb_default = lrgb; | ||
// index.js | ||
@@ -1954,6 +2004,6 @@ var spaces = {}; | ||
return () => { | ||
throw new Error("Conversion not available"); | ||
throw new Error(`Conversion ${fromSpace.name} to ${toSpaceName} is not available`); | ||
}; | ||
} | ||
[rgb_default, xyz_default, hsl_default, hsv_default, hsi_default, hwb_default, cmyk_default, cmy_default, xyy_default, yiq_default, yuv_default, ydbdr_default, ycgco_default, ypbpr_default, ycbcr_default, xvycc_default, yccbccrc_default, ucs_default, uvw_default, jpeg_default, lab_default, labh_default, lms_default, lchab_default, luv_default, lchuv_default, hsluv_default, hpluv_default, cubehelix_default, coloroid_default, hcg_default, hcy_default, tsl_default, yes_default, osaucs_default, hsp_default, hsm_default].map(register); | ||
[rgb_default, xyz_default, hsl_default, hsv_default, hsi_default, hwb_default, cmyk_default, cmy_default, xyy_default, yiq_default, yuv_default, ydbdr_default, ycgco_default, ypbpr_default, ycbcr_default, xvycc_default, yccbccrc_default, ucs_default, uvw_default, jpeg_default, lab_default, labh_default, lms_default, lchab_default, luv_default, lchuv_default, hsluv_default, hpluv_default, cubehelix_default, coloroid_default, hcg_default, hcy_default, tsl_default, yes_default, osaucs_default, hsp_default, hsm_default, lrgb_default, oklab_default].map(register); | ||
export { | ||
@@ -1960,0 +2010,0 @@ index_default as default, |
@@ -1,1 +0,1 @@ | ||
var k0={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]},f=k0,Z0={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100,e,v,u,h,i,c=0;if(n===0)return i=t*255,[i,i,i];for(v=t<.5?t*(1+n):t+n-t*n,e=2*t-v,h=[0,0,0];c<3;)u=a+1/3*-(c-1),u<0?u++:u>1&&u--,i=6*u<1?e+(v-e)*6*u:2*u<1?v:3*u<2?e+(v-e)*(2/3-u)*6:e,h[c++]=i*255;return h}},L=Z0;f.hsl=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=Math.min(a,n,t),v=Math.max(a,n,t),u=v-e,h,i,c;return v===e?h=0:a===v?h=(n-t)/u:n===v?h=2+(t-a)/u:t===v&&(h=4+(a-n)/u),h=Math.min(h*60,360),h<0&&(h+=360),c=(e+v)/2,v===e?i=0:c<=.5?i=u/(v+e):i=u/(2-v-e),[h,i*100,c*100]};var K0={name:"hsv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","value"],alias:["HSV","HSB"],rgb:function(r){var a=r[0]/60,n=r[1]/100,t=r[2]/100,e=Math.floor(a)%6,v=a-Math.floor(a),u=255*t*(1-n),h=255*t*(1-n*v),i=255*t*(1-n*(1-v));switch(t*=255,e){case 0:return[t,i,u];case 1:return[h,t,u];case 2:return[u,t,i];case 3:return[u,h,t];case 4:return[i,u,t];case 5:return[t,u,h]}},hsl:function(r){var a=r[0],n=r[1]/100,t=r[2]/100,e,v;return v=(2-n)*t,e=n*t,e/=v<=1?v:2-v,e=e||0,v/=2,[a,e*100,v*100]}},D=K0;f.hsv=function(r){var a=r[0],n=r[1],t=r[2],e=Math.min(a,n,t),v=Math.max(a,n,t),u=v-e,h,i,c;return v===0?i=0:i=u/v*100,v===e?h=0:a===v?h=(n-t)/u:n===v?h=2+(t-a)/u:t===v&&(h=4+(a-n)/u),h=Math.min(h*60,360),h<0&&(h+=360),c=v/255*1e3/10,[h,i,c]},L.hsv=function(r){var a=r[0],n=r[1]/100,t=r[2]/100,e,v;return t*=2,n*=t<=1?t:2-t,v=(t+n)/2,e=2*n/(t+n)||0,[a,e*100,v*100]};var e0={name:"hsi",min:[0,0,0],max:[360,100,255],channel:["hue","saturation","intensity"],alias:["HSI"]},N0=e0;e0.rgb=function(r){var a=(r[0]<0?r[0]%360+360:r[0]%360)*Math.PI/180,n=Math.max(0,Math.min(r[1],100))/100,t=Math.max(0,Math.min(r[2],255))/255,e=Math.PI/3,v,u,h;return a<2*e?(h=t*(1-n),v=t*(1+n*Math.cos(a)/Math.cos(e-a)),u=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):a<4*e?(a=a-2*e,v=t*(1-n),u=t*(1+n*Math.cos(a)/Math.cos(e-a)),h=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):(a=a-4*e,u=t*(1-n),h=t*(1+n*Math.cos(a)/Math.cos(e-a)),v=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))),[v*255,u*255,h*255]},f.hsi=function(r){var a=r[0]+r[1]+r[2],n=r[0]/a,t=r[1]/a,e=r[2]/a,v=Math.acos(.5*(n-t+(n-e))/Math.sqrt((n-t)*(n-t)+(n-e)*(t-e)));e>t&&(v=2*Math.PI-v);var u=1-3*Math.min(n,t,e),h=a/3;return[v*180/Math.PI,u*100,h]};var v0={name:"hwb",min:[0,0,0],max:[360,100,100],channel:["hue","whiteness","blackness"],alias:["HWB"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100,e=n+t,v,u,h,i,c,s,l;switch(e>1&&(n/=e,t/=e),v=Math.floor(6*a),u=1-t,h=6*a-v,v&1&&(h=1-h),i=n+h*(u-n),v){default:case 6:case 0:c=u,s=i,l=n;break;case 1:c=i,s=u,l=n;break;case 2:c=n,s=u,l=i;break;case 3:c=n,s=i,l=u;break;case 4:c=i,s=n,l=u;break;case 5:c=u,s=n,l=i;break}return[c*255,s*255,l*255]},hsv:function(r){var a=r[0],n=r[1],t=r[2],e,v;return n+t>=100?(e=0,v=100*n/(n+t)):(e=100-n/(1-t/100),v=100-t),[a,e,v]},hsl:function(r){return D.hsl(v0.hsv(r))}},u0=v0;f.hwb=function(r){var a=r[0],n=r[1],t=r[2],e=f.hsl(r)[0],v=1/255*Math.min(a,Math.min(n,t));return t=1-1/255*Math.max(a,Math.max(n,t)),[e,v*100,t*100]},D.hwb=function(r){var a=r[0],n=r[1],t=r[2];return[a,t===0?0:t*(1-n/100),100-t]},L.hwb=function(r){return D.hwb(L.hsv(r))};var O0={name:"cmyk",min:[0,0,0,0],max:[100,100,100,100],channel:["cyan","magenta","yellow","black"],alias:["CMYK"],rgb:r=>{let a=r[0]/100,n=r[1]/100,t=r[2]/100,e=r[3]/100,v,u,h;return v=1-Math.min(1,a*(1-e)+e),u=1-Math.min(1,n*(1-e)+e),h=1-Math.min(1,t*(1-e)+e),[v*255,u*255,h*255]}};f.cmyk=r=>{let a=r[0]/255,n=r[1]/255,t=r[2]/255,e,v,u,h;return h=Math.min(1-a,1-n,1-t),e=(1-a-h)/(1-h)||0,v=(1-n-h)/(1-h)||0,u=(1-t-h)/(1-h)||0,[e*100,v*100,u*100,h*100]};var W0=O0,h0={name:"cmy",min:[0,0,0],max:[100,100,100],channel:["cyan","magenta","yellow"],alias:["CMY"]};h0.rgb=([r,a,n])=>[(1-r/100)*255,(1-a/100)*255,(1-n/100)*255],f.cmy=([r,a,n])=>[(1-r/255)*100||0,(1-a/255)*100||0,(1-n/255)*100||0];var Q0=h0,z={name:"xyz",min:[0,0,0],channel:["X","Y","Z"],alias:["XYZ","ciexyz","cie1931"],whitepoint:{2:{A:[109.85,100,35.585],C:[98.074,100,118.232],D50:[96.422,100,82.521],D55:[95.682,100,92.149],D65:[95.045592705167,100,108.9057750759878],D75:[94.972,100,122.638],F2:[99.187,100,67.395],F7:[95.044,100,108.755],F11:[100.966,100,64.37],E:[100,100,100]},10:{A:[111.144,100,35.2],C:[97.285,100,116.145],D50:[96.72,100,81.427],D55:[95.799,100,90.926],D65:[94.811,100,107.304],D75:[94.416,100,120.641],F2:[103.28,100,69.026],F7:[95.792,100,107.687],F11:[103.866,100,65.627],E:[100,100,100]}}};z.max=z.whitepoint[2].D65,z.rgb=function(r,a){a=a||z.whitepoint[2].E;var n=r[0]/a[0],t=r[1]/a[1],e=r[2]/a[2],v,u,h;return v=n*3.240969941904521+t*-1.537383177570093+e*-.498610760293,u=n*-.96924363628087+t*1.87596750150772+e*.041555057407175,h=n*.055630079696993+t*-.20397695888897+e*1.056971514242878,v=v>.0031308?1.055*Math.pow(v,1/2.4)-.055:v=v*12.92,u=u>.0031308?1.055*Math.pow(u,1/2.4)-.055:u=u*12.92,h=h>.0031308?1.055*Math.pow(h,1/2.4)-.055:h=h*12.92,v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),h=Math.min(Math.max(0,h),1),[v*255,u*255,h*255]},f.xyz=function(r,a){var n=r[0]/255,t=r[1]/255,e=r[2]/255;n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92;var v=n*.41239079926595+t*.35758433938387+e*.18048078840183,u=n*.21263900587151+t*.71516867876775+e*.072192315360733,h=n*.019330818715591+t*.11919477979462+e*.95053215224966;return a=a||z.whitepoint[2].E,[v*a[0],u*a[1],h*a[2]]};var o=z,i0={name:"xyy",min:[0,0,0],max:[1,1,100],channel:["x","y","Y"],alias:["xyY","Yxy","yxy"]};i0.xyz=function(r){var a,n,t,e,v;return e=r[0],v=r[1],n=r[2],v===0?[0,0,0]:(a=e*n/v,t=(1-e-v)*n/v,[a,n,t])},o.xyy=function(r){var a,n,t,e;return n=r[0],t=r[1],e=r[2],a=n+t+e,a===0?[0,0,t]:[n/a,t/a,t]};var S=i0,c0={name:"yiq",min:[0,-.5957,-.5226],max:[1,.5957,.5226],channel:["Y","I","Q"],alias:["YIQ"]};c0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=a*1+n*.956+t*.621,v=a*1+n*-.272+t*-.647,u=a*1+n*-1.108+t*1.705,e=Math.min(Math.max(0,e),1),v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),[e*255,v*255,u*255]},f.yiq=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=a*.299+n*.587+t*.114,v=0,u=0;return(a!==n||n!==t)&&(v=a*.596+n*-.275+t*-.321,u=a*.212+n*-.528+t*.311),[e,v,u]};var J0=c0,s0={name:"yuv",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","U","V"],alias:["YUV","EBU"]};s0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=a*1+n*0+t*1.13983,v=a*1+n*-.39465+t*-.5806,u=a*1+n*2.02311+t*0,e=Math.min(Math.max(0,e),1),v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),[e*255,v*255,u*255]},f.yuv=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=a*.299+n*.587+t*.114,v=a*-.14713+n*-.28886+t*.436,u=a*.615+n*-.51499+t*-.10001;return[e,v,u]};var l0=s0,k={name:"ydbdr",min:[0,-1.333,-1.333],max:[1,1.333,1.333],channel:["Y","Db","Dr"],alias:["YDbDr"]};k.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=a+92303716148e-15*n-.525912630661865*t,v=a-.129132898890509*n+.267899328207599*t,u=a+.664679059978955*n-79202543533e-15*t;return[e*255,v*255,u*255]},f.ydbdr=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255;return[.299*a+.587*n+.114*t,-.45*a-.883*n+1.333*t,-1.333*a+1.116*n+.217*t]},l0.ydbdr=function(r){return[r[0],3.059*r[1],-2.169*r[2]]},k.yuv=function(r){return[r[0],r[1]/3.059,-r[2]/2.169]};var $0=k,o0={name:"ycgco",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","Cg","Co"],alias:["YCgCo"]};o0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=a-n;return[(e+t)*255,(a+n)*255,(e-t)*255]},f.ycgco=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255;return[.25*a+.5*n+.25*t,-.25*a+.5*n-.25*t,.5*a-.5*t]};var a1=o0,f0={name:"ypbpr",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","Pb","Pr"],alias:["YPbPr","Y/PB/PR","YPRPB","PRPBY","PBPRY","Y/Pb/Pr","YPrPb","PrPbY","PbPrY","Y/R-Y/B-Y","Y(R-Y)(B-Y)","R-Y","B-Y"]};f0.rgb=function(r,a,n){var t=r[0],e=r[1],v=r[2];a=a||.0722,n=n||.2126;var u=t+2*v*(1-n),h=t+2*e*(1-a),i=(t-n*u-a*h)/(1-n-a);return[u*255,i*255,h*255]},f.ypbpr=function(r,a,n){var t=r[0]/255,e=r[1]/255,v=r[2]/255;a=a||.0722,n=n||.2126;var u=n*t+(1-n-a)*e+a*v,h=.5*(v-u)/(1-a),i=.5*(t-u)/(1-n);return[u,h,i]};var _=f0,Z={name:"ycbcr",min:[16,16,16],max:[235,240,240],channel:["Y","Cb","Cr"],alias:["YCbCr","YCC"],ypbpr:function(r){var a=r[0],n=r[1],t=r[2];return[(a-16)/219,(n-128)/224,(t-128)/224]}};_.ycbcr=function(r){var a=r[0],n=r[1],t=r[2];return[16+219*a,128+224*n,128+224*t]},Z.rgb=function(r,a,n){return _.rgb(Z.ypbpr(r),a,n)},f.ycbcr=function(r,a,n){return _.ycbcr(f.ypbpr(r,a,n))};var r1=Z,M0={name:"xvycc",min:[0,0,0],max:[255,255,255],channel:["Y","Cb","Cr"],alias:["xvYCC"],ypbpr:function(r){var a=r[0],n=r[1],t=r[2];return[(a-16)/219,(n-128)/224,(t-128)/224]},rgb:function(r,a,n){return _.rgb(M0.ypbpr(r),a,n)}},n1=M0;_.xvycc=function(r){var a=r[0],n=r[1],t=r[2];return[16+219*a,128+224*n,128+224*t]},f.xvycc=function(r,a,n){return _.xvycc(f.ypbpr(r,a,n))};var m0={name:"yccbccrc",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Yc","Cbc","Crc"],alias:["YcCbcCrc"]};m0.rgb=function(r){return _.rgb(r,.0593,.2627)},f.yccbccrc=function(r){return f.ypbpr(r,.0593,.2627)};var t1=m0,b0={name:"ucs",min:[0,0,0],max:[100,100,100],channel:["U","V","W"],alias:["UCS","cie1960"]},y0=b0;b0.xyz=function(r){var a=r[0],n=r[1],t=r[2];return[1.5*a,n,1.5*a-3*n+2*t]},o.ucs=function(r){var a=r[0],n=r[1],t=r[2];return[a*2/3,n,.5*(-a+3*n+t)]};var K={name:"uvw",min:[-134,-140,0],max:[224,122,100],channel:["U","V","W"],alias:["UVW","cieuvw","cie1964"]},e1=K;K.xyz=function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y;return u=r[0],h=r[1],v=r[2],v===0?[0,0,0]:(a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=6*M/(l+15*M+3*m),c=Math.pow((v+17)/25,3),t=u/(13*v)+b||0,e=h/(13*v)+y||0,i=6/4*c*t/e,s=c*(2/e-.5*t/e-5),[i,c,s])},o.uvw=function(r,a,n){var t=r[0],e=r[1],v=r[2],u,h,i,c,s;a=a||"D65",n=n||2,u=o.whitepoint[n][a][0],h=o.whitepoint[n][a][1],i=o.whitepoint[n][a][2],c=4*u/(u+15*h+3*i),s=6*h/(u+15*h+3*i);var l=4*t/(t+15*e+3*v)||0,M=6*e/(t+15*e+3*v)||0,m=25*Math.pow(e,1/3)-17,b=13*m*(l-c),y=13*m*(M-s);return[b,y,m]},K.ucs=function(r){throw new Error("Not implemented")},y0.uvw=function(r){throw new Error("Not implemented")};var x0={name:"jpeg",min:[0,0,0],max:[255,255,255],channel:["Y","Cb","Cr"],alias:["JPEG"]},v1=x0;x0.rgb=function(r){var a=r[0],n=r[1],t=r[2];return[a+1.402*(t-128),a-.34414*(n-128)-.71414*(t-128),a+1.772*(n-128)]},f.jpeg=function(r){var a=r[0],n=r[1],t=r[2];return[.299*a+.587*n+.114*t,128-.168736*a-.331264*n+.5*t,128+.5*a-.418688*n-.081312*t]};var u1={name:"lab",min:[0,-100,-100],max:[100,100,100],channel:["lightness","a","b"],alias:["LAB","cielab"],xyz:function(r){var a=r[0],n=r[1],t=r[2],e,v,u,h;return a<=8?(v=a*100/903.3,h=7.787*(v/100)+16/116):(v=100*Math.pow((a+16)/116,3),h=Math.pow(v/100,1/3)),e=e/95.047<=.008856?e=95.047*(n/500+h-16/116)/7.787:95.047*Math.pow(n/500+h,3),u=u/108.883<=.008859?u=108.883*(h-t/200-16/116)/7.787:108.883*Math.pow(h-t/200,3),[e,v,u]}},U=u1;o.lab=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return a/=95.047,n/=100,t/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,t=t>.008856?Math.pow(t,1/3):7.787*t+16/116,e=116*n-16,v=500*(a-n),u=200*(n-t),[e,v,u]};var h1={name:"labh",min:[0,-128,-128],max:[100,128,128],channel:["lightness","a","b"],alias:["LABh","hunter-lab","hlab"],xyz:function(r){var a=r[0],n=r[1],t=r[2],e=a/10,v=n/17.5*a/10,u=t/7*a/10,h=e*e,i=(v+h)/1.02,c=-(u-h)/.847;return[i,h,c]}},i1=h1;o.labh=function(r){var a=r[0],n=r[1],t=r[2],e=Math.sqrt(n),v=10*e,u=n===0?0:17.5*((1.02*a-n)/e),h=n===0?0:7*((n-.847*t)/e);return[v,u,h]};var N={name:"lms",min:[0,0,0],max:[100,100,100],channel:["long","medium","short"],matrix:{HPE:[.38971,.68898,-.07868,-.22981,1.1834,.04641,0,0,1],VONKRIES:[.4002,.7076,-.0808,-.2263,1.1653,.0457,0,0,.9182],BFD:[.8951,.2664,-.1614,-.7502,1.7135,.0367,.0389,-.0686,1.0296],CAT97:[.8562,.3372,-.1934,-.836,1.8327,.0033,.0357,-.00469,1.0112],CAT00:[.7982,.3389,-.1371,-.5918,1.5512,.0406,8e-4,.0239,.9753],CAT02:[.7328,.4296,-.1624,-.7036,1.6975,.0061,.003,.0136,.9834]}},c1=N;N.xyz=function(r,a){var n=r[0],t=r[1],e=r[2];return a||(a=[1.096123820835514,-.278869000218287,.182745179382773,.454369041975359,.473533154307412,.072097803717229,-.009627608738429,-.005698031216113,1.015325639954543]),[n*a[0]+t*a[1]+e*a[2],n*a[3]+t*a[4]+e*a[5],n*a[6]+t*a[7]+e*a[8]]},o.lms=function(r,a){var n=r[0],t=r[1],e=r[2];return a||(a=N.matrix.CAT02),[n*a[0]+t*a[1]+e*a[2],n*a[3]+t*a[4]+e*a[5],n*a[6]+t*a[7]+e*a[8]]};var p0={name:"lchab",min:[0,0,0],max:[100,100,360],channel:["lightness","chroma","hue"],alias:["LCHab","cielch","LCH","HLC","LSH"],xyz:function(r){return U.xyz(p0.lab(r))},lab:function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return u=t/360*2*Math.PI,e=n*Math.cos(u),v=n*Math.sin(u),[a,e,v]}};U.lchab=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=Math.atan2(t,n),v=e*360/2/Math.PI,v<0&&(v+=360),u=Math.sqrt(n*n+t*t),[a,u,v]},o.lchab=function(r){return U.lchab(o.lab(r))};var s1=p0,l1={name:"luv",min:[0,-134,-140],max:[100,224,122],channel:["lightness","u","v"],alias:["LUV","cieluv","cie1976"],xyz:function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y;if(v=r[0],u=r[1],h=r[2],v===0)return[0,0,0];var P=.0011070564598794539;return a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=9*M/(l+15*M+3*m),t=u/(13*v)+b||0,e=h/(13*v)+y||0,c=v>8?M*Math.pow((v+16)/116,3):M*v*P,i=c*9*t/(4*e)||0,s=c*(12-3*t-20*e)/(4*e)||0,[i,c,s]}},V=l1;o.luv=function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y,P=.008856451679035631,I=903.2962962962961;a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=9*M/(l+15*M+3*m),i=r[0],c=r[1],s=r[2],t=4*i/(i+15*c+3*s)||0,e=9*c/(i+15*c+3*s)||0;var H=c/M;return v=H<=P?I*H:116*Math.pow(H,1/3)-16,u=13*v*(t-b),h=13*v*(e-y),[v,u,h]};var d0={name:"lchuv",channel:["lightness","chroma","hue"],alias:["LCHuv","cielchuv"],min:[0,0,0],max:[100,100,360],luv:function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return u=t/360*2*Math.PI,e=n*Math.cos(u),v=n*Math.sin(u),[a,e,v]},xyz:function(r){return V.xyz(d0.luv(r))}},B=d0;V.lchuv=function(r){var a=r[0],n=r[1],t=r[2],e=Math.sqrt(n*n+t*t),v=Math.atan2(t,n),u=v*360/2/Math.PI;return u<0&&(u+=360),[a,e,u]},o.lchuv=function(r){return V.lchuv(o.luv(r))};function g0(r){var a=[],n=Math.pow(r+16,3)/1560896;n=n>A0?n:r/a0;for(var t=0;3>t;){var e=t++,v=T[e][0],u=T[e][1];e=T[e][2];for(var h=0;2>h;){var i=h++,c=(632260*e-126452*u)*n+126452*i;a.push({b:(284517*v-94839*e)*n/c,a:((838422*e+769860*u+731718*v)*r*n-769860*i*r)/c})}}return a}function w0(r){r=g0(r);for(var a=1/0,n=0;n<r.length;){var t=r[n];++n,a=Math.min(a,Math.abs(t.a)/Math.sqrt(Math.pow(t.b,2)+1))}return a}function _0(r,a){a=a/360*Math.PI*2,r=g0(r);for(var n=1/0,t=0;t<r.length;){var e=r[t];++t,e=e.a/(Math.sin(a)-e.b*Math.cos(a)),0<=e&&(n=Math.min(n,e))}return n}function C(r,a){for(var n=0,t=0,e=r.length;t<e;){var v=t++;n+=r[v]*a[v]}return n}function O(r){return .0031308>=r?12.92*r:1.055*Math.pow(r,.4166666666666667)-.055}function W(r){return .04045<r?Math.pow((r+.055)/1.055,2.4):r/12.92}function q0(r){return[O(C(T[0],r)),O(C(T[1],r)),O(C(T[2],r))]}function P0(r){return r=[W(r[0]),W(r[1]),W(r[2])],[C($[0],r),C($[1],r),C($[2],r)]}function Y0(r){var a=r[0],n=r[1];return r=a+15*n+3*r[2],r!=0?(a=4*a/r,r=9*n/r):r=a=NaN,n=n<=A0?n/F*a0:116*Math.pow(n/F,.3333333333333333)-16,n==0?[0,0,0]:[n,13*n*(a-B0),13*n*(r-R0)]}function z0(r){var a=r[0];if(a==0)return[0,0,0];var n=r[1]/(13*a)+B0;return r=r[2]/(13*a)+R0,a=8>=a?F*a/a0:F*Math.pow((a+16)/116,3),n=0-9*a*n/((n-4)*r-n*r),[n,a,(9*a-15*r*a-r*n)/(3*r)]}function C0(r){var a=r[0],n=r[1],t=r[2];return r=Math.sqrt(n*n+t*t),1e-8>r?n=0:(n=180*Math.atan2(t,n)/Math.PI,0>n&&(n=360+n)),[a,r,n]}function T0(r){var a=r[1],n=r[2]/360*2*Math.PI;return[r[0],Math.cos(n)*a,Math.sin(n)*a]}function I0(r){var a=r[0],n=r[1];return r=r[2],99.9999999<r?[100,0,a]:1e-8>r?[0,0,a]:(n=_0(r,a)/100*n,[r,n,a])}function H0(r){var a=r[0],n=r[1];if(r=r[2],99.9999999<a)return[r,0,100];if(1e-8>a)return[r,0,0];var t=_0(a,r);return[r,n/t*100,a]}function L0(r){var a=r[0],n=r[1];return r=r[2],99.9999999<r?[100,0,a]:1e-8>r?[0,0,a]:(n=w0(r)/100*n,[r,n,a])}function D0(r){var a=r[0],n=r[1];if(r=r[2],99.9999999<a)return[r,0,100];if(1e-8>a)return[r,0,0];var t=w0(a);return[r,n/t*100,a]}function Q(r){return q0(z0(T0(r)))}function J(r){return C0(Y0(P0(r)))}function o1(r){return Q(I0(r))}function f1(r){return H0(J(r))}function M1(r){return Q(L0(r))}function m1(r){return D0(J(r))}var T=[[3.240969941904521,-1.537383177570093,-.498610760293],[-.96924363628087,1.87596750150772,.041555057407175],[.055630079696993,-.20397695888897,1.056971514242878]],$=[[.41239079926595,.35758433938387,.18048078840183],[.21263900587151,.71516867876775,.072192315360733],[.019330818715591,.11919477979462,.95053215224966]],F=1,B0=.19783000664283,R0=.46831999493879,a0=903.2962962,A0=.0088564516,x={hsluvToRgb:o1,hsluvToLch:I0,rgbToHsluv:f1,rgbToHpluv:m1,rgbToXyz:P0,rgbToLch:J,hpluvToRgb:M1,hpluvToLch:L0,lchToHpluv:D0,lchToHsluv:H0,lchToLuv:T0,lchToRgb:Q,luvToLch:C0,luvToXyz:z0,xyzToLuv:Y0,xyzToRgb:q0},b1={name:"hsluv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSLuv","HuSL"],lchuv:x.hsluvToLch,xyz:function(r){return B.xyz(x.hsluvToLch(r))},hpluv:function(r){return x.lchToHpluv(x.hsluvToLch(r))},_hsluv:x},y1=b1;B.hsluv=x.lchToHsluv,o.hsluv=function(r){return x.lchToHsluv(o.lchuv(r))},f.hsluv=x.rgbToHsluv;var x1={name:"hpluv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HPLuv","HuSLp"],lchuv:x.hpluvToLch,xyz:function(r){return B.xyz(x.hpluvToLch(r))},hsluv:function(r){return x.lchToHsluv(x.hpluvToLch(r))}},p1=x1;B.hpluv=x.lchToHpluv,o.hpluv=function(r){return x.lchToHpluv(o.lchuv(r))};var R={start:0,rotation:.5,hue:1,gamma:1},E0={name:"cubehelix",channel:["fraction"],min:[0],max:[1],defaults:R};E0.rgb=function(r,a={}){Array.isArray(r)&&(r=r[0]);var n=a.start!==void 0?a.start:R.start,t=a.rotation!==void 0?a.rotation:R.rotation,e=a.gamma!==void 0?a.gamma:R.gamma,v=a.hue!==void 0?a.hue:R.hue,u=2*Math.PI*(n/3+1+t*r);r=Math.pow(r,e);var h=v*r*(1-r)/2,i=r+h*(-.14861*Math.cos(u)+1.78277*Math.sin(u)),c=r+h*(-.29227*Math.cos(u)-.90649*Math.sin(u)),s=r+h*(1.97294*Math.cos(u));return i=Math.max(1,Math.min(i,0)),c=Math.max(1,Math.min(c,0)),s=Math.max(1,Math.min(s,0)),[i*255,c*255,s*255]},f.cubehelix=function(r){throw new Error("rgb.cubehelix conversion is not implemented yet")};var d1=E0,X={name:"coloroid",alias:["ATV"],channel:["A","T","V"],min:[10,0,0],max:[76,100,100],table:[[10,59,1.724349,.44987,.53641],[11,55.3,1.740844,.46248,.52444],[12,51.7,1.754985,.47451,.51298],[13,48.2,1.767087,.48601,.50325],[14,44.8,1.775953,.49578,.49052],[15,41.5,1.785073,.5079,.43035],[16,38.2,1.791104,.51874,.46934],[20,34.9,1.794831,.5298,.45783],[21,31.5,1.798664,.54137,.44559],[22,28,1.794819,.55367,.43253],[23,24.4,1.78961,.5668,.41811],[24,20.6,1.809483,.58128,.40176],[25,16.6,1.760983,.59766,.383],[26,12.3,1.723443,.61653,.36061],[30,7.7,1.652891,.63896,.33358],[31,2.8,1.502607,.66619,.2993],[32,-2.5,1.0725,.70061,.26753],[33,-8.4,1.136637,.63925,.22631],[34,-19.8,1.232286,.53962,.19721],[35,-31.6,1.31012,.5034,.17495],[40,-43.2,1.37661,.46041,.15603],[41,-54.6,1.438692,.42386,.13846],[42,-65.8,1.501582,.38991,.12083],[43,-76.8,1.570447,.35586,.10328],[44,-86.8,1.645583,.32195,.08496],[45,-95.8,1.732083,.28657,.05155],[46,-108.4,1.915753,.22202,.01771],[50,-117.2,2.14631,.15664,.05227],[51,-124.7,1.649939,.12736,.0902],[52,-131.8,1.273415,.10813,.12506],[53,-138.5,1.080809,.09414,.15741],[54,-145.1,.957076,.03249,.18958],[55,-152,.868976,.07206,.24109],[56,-163.4,.771731,.05787,.30378],[60,-177.2,.697108,.04353,.35696],[61,171.6,.655803,.03291,.41971],[62,152.4,.623958,.0224,.49954],[63,148.4,.596037,.01196,.60321],[64,136.8,.607413,.00425,.73542],[65,125.4,.659923,.01099,.83391],[66,114.2,.859517,.0805,.77474],[70,103.2,1.195683,.20259,.7046],[71,93.2,1.407534,.28807,.6523],[72,84.2,1.532829,.34422,.6193],[73,77.3,1.603792,.37838,.59533],[74,71.6,1.649448,.4029,.57716],[75,66.9,1.68108,.42141,.56222],[76,62.8,1.704979,.43647,.54895]],xyy:function([r,a,n]){for(var t,e=0;e<A.length;e++)if(r<=A[e][0]){t=A[e];break}var v=t[4],u=t[2],h=t[3],i=n*n/100,c=v*u*100,s=(100*i*E*w+100*h*u*a-c*a*E*w)/(100*a*u-c*a*w+100*i*w),l=(100*i+100*a*v*u-c*a)/(i*w*100+a*100*u-a*c*w);return[s,l,i]}},A=X.table,Y=A.slice(-13).concat(A.slice(0,-13)),r0="D65",n0=2,G=o.whitepoint[n0][r0][0],j=o.whitepoint[n0][r0][1],t0=o.whitepoint[n0][r0][2],g1=G/(G+j+t0),E=j/(G+j+t0),w=(G+j+t0)/100;S.coloroid=function(r){for(var a=r[0],n=r[1],t=r[2],e=10*Math.sqrt(t),v=Math.atan2(n-g1,a-E)*180/Math.PI,u,h=Y.length-1,i=0;i<Y.length&&!(v>Y[i][1]);i++)h=i;u=Math.abs(Y[i+1][1]-v)>Math.abs(Y[h][1]-v)?Y[i+1]:Y[h];var c=u[0],s=u[4],l=u[2],M=u[3],m=s*l*100,b=100*t*(E*w-a*w)/(100*(a*l-M*l)+m*(E*w-a*w));return[c,b,e]},o.coloroid=function(r){return S.coloroid(o.xyy(r))},X.xyz=function(r){return S.xyz(X.xyy(r))};var w1=X,_1={name:"hcg",min:[0,0,0],max:[360,100,100],channel:["hue","chroma","gray"],alias:["HCG","HSG"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100;if(n===0)return[t*255,t*255,t*255];var e=a%1*6,v=e%1,u=[0,0,0],h=1-v;switch(Math.floor(e)){case 0:u[0]=1,u[1]=v,u[2]=0;break;case 1:u[0]=h,u[1]=1,u[2]=0;break;case 2:u[0]=0,u[1]=1,u[2]=v;break;case 3:u[0]=0,u[1]=h,u[2]=1;break;case 4:u[0]=v,u[1]=0,u[2]=1;break;default:u[0]=1,u[1]=0,u[2]=h}var i=(1-n)*t,c=[(n*u[0]+i)*255,(n*u[1]+i)*255,(n*u[2]+i)*255];return c},hsl:function(r){var a=r[1]/100,n=r[2]/100,t=n*(1-a)+.5*a,e=0;return t<1&&t>0&&(t<.5?e=a/(2*t):e=a/(2*(1-t))),[r[0],e*100,t*100]},hsv:function(r){var a=r[1]/100,n=r[2]/100,t=a+n*(1-a),e;if(t>0){var v=a/t;e=[r[0],v*100,t*100]}else e=[r[0],0,t*100];return e},hwb:function(r){var a=r[1]/100,n=r[2]/100,t=a+n*(1-a);return[r[0],(t-a)*100,(1-t)*100]}},q1=_1;f.hcg=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=Math.max(Math.max(a,n),t),v=Math.min(Math.min(a,n),t),u=e-v,h,i;return u<1?h=v/(1-u):h=0,u>0?(e===a?i=(n-t)/u%6:e===n?i=2+(t-a)/u:i=4+(a-n)/u,i/=6,i=i%1):i=0,[i*360,u*100,h*100]},L.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=0;n<.5?t=2*a*n:t=2*a*(1-n);var e;if(t<1){var v=(n-.5*t)/(1-t);e=[r[0],t*100,v*100]}else e=[r[0],t*100,0];return e},D.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=a*n,e;if(t<1){var v=(n-t)/(1-t);e=[r[0],t*100,v*100]}else e=[r[0],t*100,0];return e},u0.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=1-n,e=t-a,v=0;return e<1&&(v=(t-e)/(1-e)),[r[0],e*100,v*100]};var S0={name:"hcy",min:[0,0,0],max:[360,100,255],channel:["hue","chroma","luminance"],alias:["HCY"]},P1=S0;S0.rgb=function(r){var a=(r[0]<0?r[0]%360+360:r[0]%360)*Math.PI/180,n=Math.max(0,Math.min(r[1],100))/100,t=Math.max(0,Math.min(r[2],255))/255,e=Math.PI/3,v,u,h;return a<2*e?(h=t*(1-n),v=t*(1+n*Math.cos(a)/Math.cos(e-a)),u=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):a<4*e?(a=a-2*e,v=t*(1-n),u=t*(1+n*Math.cos(a)/Math.cos(e-a)),h=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):(a=a-4*e,u=t*(1-n),h=t*(1+n*Math.cos(a)/Math.cos(e-a)),v=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))),[v*255,u*255,h*255]},f.hcy=function(r){var a=r[0]+r[1]+r[2],n=r[0]/a,t=r[1]/a,e=r[2]/a,v=Math.acos(.5*(n-t+(n-e))/Math.sqrt((n-t)*(n-t)+(n-e)*(t-e)));e>t&&(v=2*Math.PI-v);var u=1-3*Math.min(n,t,e),h=a/3;return[v*180/Math.PI,u*100,h]};var U0={name:"tsl",min:[0,0,0],max:[1,1,1],channel:["tint","saturation","lightness"],alias:["TSL"]},Y1=U0;U0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=Math.tan(2*Math.PI*(a-1/4));e*=e;var v=Math.sqrt(5*n*n/(9*(1/e+1)))+1/3,u=Math.sqrt(5*n*n/(9*(e+1)))+1/3,h=t/(.185*v+.473*u+.114),i=h*(1-v-u),c=h*u,s=h*v;return[s*255,c*255,i*255]},f.tsl=function(r){var[a,n,t]=r,e=(a/(a+n+t)||0)-1/3,v=(n/(a+n+t)||0)-1/3,u=v!=0?.5-Math.atan2(v,e)/2/Math.PI:0,h=Math.sqrt(9/5*(e*e+v*v)),i=(a*.299+n*.587+t*.114)/255;return[u,h,i]};var V0={name:"yes",min:[0,0,0],max:[1,1,1],channel:["luminance","e-factor","s-factor"]};V0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=[1,1.431,.126,1,-.569,.126,1,.431,-1.874],v=a*e[0]+n*e[1]+t*e[2],u=a*e[3]+n*e[4]+t*e[5],h=a*e[6]+n*e[7]+t*e[8];return[v*255,u*255,h*255]},f.yes=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=[.253,.684,.063,.5,-.5,0,.25,.25,-.5];return[a*e[0]+n*e[1]+t*e[2],a*e[3]+n*e[4]+t*e[5],a*e[6]+n*e[7]+t*e[8]]};var z1=V0,F0={name:"osaucs",alias:["OSA-UCS"],channel:["L","j","g"],min:[-10,-6,-10],max:[8,12,6]};F0.xyz=function(r){var a,n,t;throw"Unimplemented"},o.osaucs=function(r){var a=r[0],n=r[1],t=r[2],e=a/(a+n+t),v=n/(a+n+t),u=4.4934*e*e+4.3034*v*v-4.276*e*v-1.3744*e-2.56439*v+1.8103,h=u*n,i=5.9*(Math.pow(h,1/3)-2/3+.042*Math.pow(Math.max(h,30)-30,1/3)),c=(i-14.3993)/Math.sqrt(2),s=i/(5.9*(Math.pow(h,1/3)-2/3)),l=.779*a+.4194*n-.1648*t,M=-.4493*a+1.3265*n+.0927*t,m=-.1149*a+.3394*n+.717*t;l=Math.pow(l,1/3)||0,M=Math.pow(M,1/3)||0,m=Math.pow(m,1/3)||0;var b=-13.7*l+17.7*M-4*m,y=1.7*l+8*M-9.7*m,P=s*b,I=s*y;return[c,I,P]};var C1=F0,p=.299,d=.587,g=.114,T1={name:"hsp",min:[0,0,0],max:[360,100,255],channel:["hue","saturation","perceived_brightness"],alias:["HSP"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2],e,v,u,h,i=1-n;return i>0?a<1/6?(a=6*(a-0/6),h=1+a*(1/i-1),u=t/Math.sqrt(p/i/i+d*h*h+g),e=u/i,v=u+a*(e-u)):a<2/6?(a=6*(-a+2/6),h=1+a*(1/i-1),u=t/Math.sqrt(d/i/i+p*h*h+g),v=u/i,e=u+a*(v-u)):a<3/6?(a=6*(a-2/6),h=1+a*(1/i-1),e=t/Math.sqrt(d/i/i+g*h*h+p),v=e/i,u=e+a*(v-e)):a<4/6?(a=6*(-a+4/6),h=1+a*(1/i-1),e=t/Math.sqrt(g/i/i+d*h*h+p),u=e/i,v=e+a*(u-e)):a<5/6?(a=6*(a-4/6),h=1+a*(1/i-1),v=t/Math.sqrt(g/i/i+p*h*h+d),u=v/i,e=v+a*(u-v)):(a=6*(-a+6/6),h=1+a*(1/i-1),v=t/Math.sqrt(p/i/i+g*h*h+d),e=v/i,u=v+a*(e-v)):a<1/6?(a=6*(a-0/6),e=Math.sqrt(t*t/(p+d*a*a)),v=e*a,u=0):a<2/6?(a=6*(-a+2/6),v=Math.sqrt(t*t/(d+p*a*a)),e=v*a,u=0):a<3/6?(a=6*(a-2/6),v=Math.sqrt(t*t/(d+g*a*a)),u=v*a,e=0):a<4/6?(a=6*(-a+4/6),u=Math.sqrt(t*t/(g+d*a*a)),v=u*a,e=0):a<5/6?(a=6*(a-4/6),u=Math.sqrt(t*t/(g+p*a*a)),e=u*a,v=0):(a=6*(-a+6/6),e=Math.sqrt(t*t/(p+g*a*a)),u=e*a,v=0),[Math.round(e),Math.round(v),Math.round(u)]}},I1=T1;f.hsp=function(r){var a=parseInt(r[0],10),n=parseInt(r[1],10),t=parseInt(r[2],10),e,v,u;return u=Math.sqrt(a*a*p+n*n*d+t*t*g),a===n&&a===t?(e=0,v=0):(a>=n&&a>=t&&(t>=n?(e=6/6-1/6*(t-n)/(a-n),v=1-n/a):(e=0/6+1/6*(n-t)/(a-t),v=1-t/a)),n>=a&&n>=t&&(a>=t?(e=2/6-1/6*(a-t)/(n-t),v=1-t/n):(e=2/6+1/6*(t-a)/(n-a),v=1-a/n)),t>=a&&t>=n&&(n>=a?(e=4/6-1/6*(n-a)/(t-a),v=1-a/t):(e=4/6+1/6*(a-n)/(t-n),v=1-n/t))),[Math.round(e*360),v*100,Math.round(u)]};var X0={name:"hsm",min:[0,0,0],max:[1,1,1],channel:["hue","saturation","mixture"]},H1=X0;X0.rgb=function([r,a,n]){let t;n>=0&&n<=1/7?t=Math.sqrt((0-n)**2+(0-n)**2+(7-n)**2):n>1/7&&n<=3/7?t=Math.sqrt((0-n)**2+((7*n-1)/2-n)**2+(1-n)**2):n>3/7&&n<=.5?t=Math.sqrt(((7*n-3)/2-n)**2+(1-n)**2+(1-n)**2):n>.5&&n<=4/7?t=Math.sqrt((7*n/4-n)**2+(0-n)**2+(0-n)**2):n>4/7&&n<=6/7?t=Math.sqrt((1-n)**2+((7*n-4)/2-n)**2+(0-n)**2):n>6/7&&n<=1?t=Math.sqrt((1-n)**2+(1-n)**2+(7*n-6-n)**2):t=1;const e=a*t,v=Math.cos(2*Math.PI*r),u=Math.sin(2*Math.PI*r),h=3/Math.sqrt(41),i=-4/Math.sqrt(861),c=-4/Math.sqrt(41),s=19/Math.sqrt(861),l=-4/Math.sqrt(41),M=-22/Math.sqrt(861),m=e*(h*v+i*u),b=e*(c*v+s*u),y=e*(l*v+M*u),P=Math.max(0,Math.min(1,n+m))*255,I=Math.max(0,Math.min(1,n+b))*255,H=Math.max(0,Math.min(1,n+y))*255;return[P,I,H]},f.hsm=function([r,a,n]){r/=255,a/=255,n/=255;let t=(4*r+2*a+n)/7,e=r-t,v=a-t,u=n-t,h=Math.sqrt(e*e+v*v+u*u),i=Math.acos((3*e-4*v-4*u)/Math.sqrt(41*(e*e+v*v+u*u))||0),c=n<=a?i/(2*Math.PI):1-i/(2*Math.PI),s;return 0<=t&&t<=1/7?s=h/Math.sqrt((0-t)**2+(0-t)**2+(7-t)**2):1/7<t&&t<=3/7?s=h/Math.sqrt((0-t)**2+((7*t-1)/2-t)**2+(1-t)**2):3/7<t&&t<=1/2?s=h/Math.sqrt(((7*t-3)/2-t)**2+(1-t)**2+(1-t)**2):1/2<t&&t<=4/7?s=h/Math.sqrt((7*t/4-t)**2+(0-t)**2+(0-t)**2):4/7<t&&t<=6/7?s=h/Math.sqrt((1-t)**2+((7*t-4)/2-t)**2+(0-t)**2):6/7<t&&t<1?s=h/Math.sqrt((1-t)**2+(1-t)**2+(7*t-6-t)**2):s=0,[c,s,t]};var q={},L1=q;function G0(r){const a=r.name;for(const n in q){r[n]||(r[n]=j0(r,n));const t=q[n];t[a]||(t[a]=j0(t,a))}q[a]=r}function j0(r,a){return r.xyz&&q.xyz[a]?n=>q.xyz[a](r.xyz(n)):r.rgb&&q.rgb[a]?n=>q.rgb[a](r.rgb(n)):()=>{throw new Error("Conversion not available")}}[f,o,L,D,N0,u0,W0,Q0,S,J0,l0,$0,a1,_,r1,n1,t1,y0,e1,v1,U,i1,c1,s1,V,B,y1,p1,d1,w1,q1,P1,Y1,z1,C1,I1,H1].map(G0);export{L1 as default,G0 as register}; | ||
var O0={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]},f=O0,W0={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100,e,v,u,h,i,c=0;if(n===0)return i=t*255,[i,i,i];for(v=t<.5?t*(1+n):t+n-t*n,e=2*t-v,h=[0,0,0];c<3;)u=a+1/3*-(c-1),u<0?u++:u>1&&u--,i=6*u<1?e+(v-e)*6*u:2*u<1?v:3*u<2?e+(v-e)*(2/3-u)*6:e,h[c++]=i*255;return h}},L=W0;f.hsl=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=Math.min(a,n,t),v=Math.max(a,n,t),u=v-e,h,i,c;return v===e?h=0:a===v?h=(n-t)/u:n===v?h=2+(t-a)/u:t===v&&(h=4+(a-n)/u),h=Math.min(h*60,360),h<0&&(h+=360),c=(e+v)/2,v===e?i=0:c<=.5?i=u/(v+e):i=u/(2-v-e),[h,i*100,c*100]};var N0={name:"hsv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","value"],alias:["HSV","HSB"],rgb:function(r){var a=r[0]/60,n=r[1]/100,t=r[2]/100,e=Math.floor(a)%6,v=a-Math.floor(a),u=255*t*(1-n),h=255*t*(1-n*v),i=255*t*(1-n*(1-v));switch(t*=255,e){case 0:return[t,i,u];case 1:return[h,t,u];case 2:return[u,t,i];case 3:return[u,h,t];case 4:return[i,u,t];case 5:return[t,u,h]}},hsl:function(r){var a=r[0],n=r[1]/100,t=r[2]/100,e,v;return v=(2-n)*t,e=n*t,e/=v<=1?v:2-v,e=e||0,v/=2,[a,e*100,v*100]}},D=N0;f.hsv=function(r){var a=r[0],n=r[1],t=r[2],e=Math.min(a,n,t),v=Math.max(a,n,t),u=v-e,h,i,c;return v===0?i=0:i=u/v*100,v===e?h=0:a===v?h=(n-t)/u:n===v?h=2+(t-a)/u:t===v&&(h=4+(a-n)/u),h=Math.min(h*60,360),h<0&&(h+=360),c=v/255*1e3/10,[h,i,c]},L.hsv=function(r){var a=r[0],n=r[1]/100,t=r[2]/100,e,v;return t*=2,n*=t<=1?t:2-t,v=(t+n)/2,e=2*n/(t+n)||0,[a,e*100,v*100]};var e0={name:"hsi",min:[0,0,0],max:[360,100,255],channel:["hue","saturation","intensity"],alias:["HSI"]},Q0=e0;e0.rgb=function(r){var a=(r[0]<0?r[0]%360+360:r[0]%360)*Math.PI/180,n=Math.max(0,Math.min(r[1],100))/100,t=Math.max(0,Math.min(r[2],255))/255,e=Math.PI/3,v,u,h;return a<2*e?(h=t*(1-n),v=t*(1+n*Math.cos(a)/Math.cos(e-a)),u=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):a<4*e?(a=a-2*e,v=t*(1-n),u=t*(1+n*Math.cos(a)/Math.cos(e-a)),h=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):(a=a-4*e,u=t*(1-n),h=t*(1+n*Math.cos(a)/Math.cos(e-a)),v=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))),[v*255,u*255,h*255]},f.hsi=function(r){var a=r[0]+r[1]+r[2],n=r[0]/a,t=r[1]/a,e=r[2]/a,v=Math.acos(.5*(n-t+(n-e))/Math.sqrt((n-t)*(n-t)+(n-e)*(t-e)));e>t&&(v=2*Math.PI-v);var u=1-3*Math.min(n,t,e),h=a/3;return[v*180/Math.PI,u*100,h]};var v0={name:"hwb",min:[0,0,0],max:[360,100,100],channel:["hue","whiteness","blackness"],alias:["HWB"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100,e=n+t,v,u,h,i,c,s,l;switch(e>1&&(n/=e,t/=e),v=Math.floor(6*a),u=1-t,h=6*a-v,v&1&&(h=1-h),i=n+h*(u-n),v){default:case 6:case 0:c=u,s=i,l=n;break;case 1:c=i,s=u,l=n;break;case 2:c=n,s=u,l=i;break;case 3:c=n,s=i,l=u;break;case 4:c=i,s=n,l=u;break;case 5:c=u,s=n,l=i;break}return[c*255,s*255,l*255]},hsv:function(r){var a=r[0],n=r[1],t=r[2],e,v;return n+t>=100?(e=0,v=100*n/(n+t)):(e=100-n/(1-t/100),v=100-t),[a,e,v]},hsl:function(r){return D.hsl(v0.hsv(r))}},u0=v0;f.hwb=function(r){var a=r[0],n=r[1],t=r[2],e=f.hsl(r)[0],v=1/255*Math.min(a,Math.min(n,t));return t=1-1/255*Math.max(a,Math.max(n,t)),[e,v*100,t*100]},D.hwb=function(r){var a=r[0],n=r[1],t=r[2];return[a,t===0?0:t*(1-n/100),100-t]},L.hwb=function(r){return D.hwb(L.hsv(r))};var J0={name:"cmyk",min:[0,0,0,0],max:[100,100,100,100],channel:["cyan","magenta","yellow","black"],alias:["CMYK"],rgb:r=>{let a=r[0]/100,n=r[1]/100,t=r[2]/100,e=r[3]/100,v,u,h;return v=1-Math.min(1,a*(1-e)+e),u=1-Math.min(1,n*(1-e)+e),h=1-Math.min(1,t*(1-e)+e),[v*255,u*255,h*255]}};f.cmyk=r=>{let a=r[0]/255,n=r[1]/255,t=r[2]/255,e,v,u,h;return h=Math.min(1-a,1-n,1-t),e=(1-a-h)/(1-h)||0,v=(1-n-h)/(1-h)||0,u=(1-t-h)/(1-h)||0,[e*100,v*100,u*100,h*100]};var $0=J0,h0={name:"cmy",min:[0,0,0],max:[100,100,100],channel:["cyan","magenta","yellow"],alias:["CMY"]};h0.rgb=([r,a,n])=>[(1-r/100)*255,(1-a/100)*255,(1-n/100)*255],f.cmy=([r,a,n])=>[(1-r/255)*100||0,(1-a/255)*100||0,(1-n/255)*100||0];var a1=h0,C={name:"xyz",min:[0,0,0],channel:["X","Y","Z"],alias:["XYZ","ciexyz","cie1931"],whitepoint:{2:{A:[109.85,100,35.585],C:[98.074,100,118.232],D50:[96.422,100,82.521],D55:[95.682,100,92.149],D65:[95.045592705167,100,108.9057750759878],D75:[94.972,100,122.638],F2:[99.187,100,67.395],F7:[95.044,100,108.755],F11:[100.966,100,64.37],E:[100,100,100]},10:{A:[111.144,100,35.2],C:[97.285,100,116.145],D50:[96.72,100,81.427],D55:[95.799,100,90.926],D65:[94.811,100,107.304],D75:[94.416,100,120.641],F2:[103.28,100,69.026],F7:[95.792,100,107.687],F11:[103.866,100,65.627],E:[100,100,100]}}};C.max=C.whitepoint[2].D65,C.rgb=function(r,a){a=a||C.whitepoint[2].E;var n=r[0]/a[0],t=r[1]/a[1],e=r[2]/a[2],v,u,h;return v=n*3.240969941904521+t*-1.537383177570093+e*-.498610760293,u=n*-.96924363628087+t*1.87596750150772+e*.041555057407175,h=n*.055630079696993+t*-.20397695888897+e*1.056971514242878,v=v>.0031308?1.055*Math.pow(v,1/2.4)-.055:v=v*12.92,u=u>.0031308?1.055*Math.pow(u,1/2.4)-.055:u=u*12.92,h=h>.0031308?1.055*Math.pow(h,1/2.4)-.055:h=h*12.92,v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),h=Math.min(Math.max(0,h),1),[v*255,u*255,h*255]},f.xyz=function(r,a){var n=r[0]/255,t=r[1]/255,e=r[2]/255;n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92;var v=n*.41239079926595+t*.35758433938387+e*.18048078840183,u=n*.21263900587151+t*.71516867876775+e*.072192315360733,h=n*.019330818715591+t*.11919477979462+e*.95053215224966;return a=a||C.whitepoint[2].E,[v*a[0],u*a[1],h*a[2]]};var o=C,i0={name:"xyy",min:[0,0,0],max:[1,1,100],channel:["x","y","Y"],alias:["xyY","Yxy","yxy"]};i0.xyz=function(r){var a,n,t,e,v;return e=r[0],v=r[1],n=r[2],v===0?[0,0,0]:(a=e*n/v,t=(1-e-v)*n/v,[a,n,t])},o.xyy=function(r){var a,n,t,e;return n=r[0],t=r[1],e=r[2],a=n+t+e,a===0?[0,0,t]:[n/a,t/a,t]};var k=i0,c0={name:"yiq",min:[0,-.5957,-.5226],max:[1,.5957,.5226],channel:["Y","I","Q"],alias:["YIQ"]};c0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=a*1+n*.956+t*.621,v=a*1+n*-.272+t*-.647,u=a*1+n*-1.108+t*1.705,e=Math.min(Math.max(0,e),1),v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),[e*255,v*255,u*255]},f.yiq=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=a*.299+n*.587+t*.114,v=0,u=0;return(a!==n||n!==t)&&(v=a*.596+n*-.275+t*-.321,u=a*.212+n*-.528+t*.311),[e,v,u]};var r1=c0,s0={name:"yuv",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","U","V"],alias:["YUV","EBU"]};s0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=a*1+n*0+t*1.13983,v=a*1+n*-.39465+t*-.5806,u=a*1+n*2.02311+t*0,e=Math.min(Math.max(0,e),1),v=Math.min(Math.max(0,v),1),u=Math.min(Math.max(0,u),1),[e*255,v*255,u*255]},f.yuv=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=a*.299+n*.587+t*.114,v=a*-.14713+n*-.28886+t*.436,u=a*.615+n*-.51499+t*-.10001;return[e,v,u]};var l0=s0,j={name:"ydbdr",min:[0,-1.333,-1.333],max:[1,1.333,1.333],channel:["Y","Db","Dr"],alias:["YDbDr"]};j.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=a+92303716148e-15*n-.525912630661865*t,v=a-.129132898890509*n+.267899328207599*t,u=a+.664679059978955*n-79202543533e-15*t;return[e*255,v*255,u*255]},f.ydbdr=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255;return[.299*a+.587*n+.114*t,-.45*a-.883*n+1.333*t,-1.333*a+1.116*n+.217*t]},l0.ydbdr=function(r){return[r[0],3.059*r[1],-2.169*r[2]]},j.yuv=function(r){return[r[0],r[1]/3.059,-r[2]/2.169]};var n1=j,o0={name:"ycgco",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","Cg","Co"],alias:["YCgCo"]};o0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=a-n;return[(e+t)*255,(a+n)*255,(e-t)*255]},f.ycgco=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255;return[.25*a+.5*n+.25*t,-.25*a+.5*n-.25*t,.5*a-.5*t]};var t1=o0,f0={name:"ypbpr",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Y","Pb","Pr"],alias:["YPbPr","Y/PB/PR","YPRPB","PRPBY","PBPRY","Y/Pb/Pr","YPrPb","PrPbY","PbPrY","Y/R-Y/B-Y","Y(R-Y)(B-Y)","R-Y","B-Y"]};f0.rgb=function(r,a,n){var t=r[0],e=r[1],v=r[2];a=a||.0722,n=n||.2126;var u=t+2*v*(1-n),h=t+2*e*(1-a),i=(t-n*u-a*h)/(1-n-a);return[u*255,i*255,h*255]},f.ypbpr=function(r,a,n){var t=r[0]/255,e=r[1]/255,v=r[2]/255;a=a||.0722,n=n||.2126;var u=n*t+(1-n-a)*e+a*v,h=.5*(v-u)/(1-a),i=.5*(t-u)/(1-n);return[u,h,i]};var _=f0,Z={name:"ycbcr",min:[16,16,16],max:[235,240,240],channel:["Y","Cb","Cr"],alias:["YCbCr","YCC"],ypbpr:function(r){var a=r[0],n=r[1],t=r[2];return[(a-16)/219,(n-128)/224,(t-128)/224]}};_.ycbcr=function(r){var a=r[0],n=r[1],t=r[2];return[16+219*a,128+224*n,128+224*t]},Z.rgb=function(r,a,n){return _.rgb(Z.ypbpr(r),a,n)},f.ycbcr=function(r,a,n){return _.ycbcr(f.ypbpr(r,a,n))};var e1=Z,M0={name:"xvycc",min:[0,0,0],max:[255,255,255],channel:["Y","Cb","Cr"],alias:["xvYCC"],ypbpr:function(r){var a=r[0],n=r[1],t=r[2];return[(a-16)/219,(n-128)/224,(t-128)/224]},rgb:function(r,a,n){return _.rgb(M0.ypbpr(r),a,n)}},v1=M0;_.xvycc=function(r){var a=r[0],n=r[1],t=r[2];return[16+219*a,128+224*n,128+224*t]},f.xvycc=function(r,a,n){return _.xvycc(f.ypbpr(r,a,n))};var m0={name:"yccbccrc",min:[0,-.5,-.5],max:[1,.5,.5],channel:["Yc","Cbc","Crc"],alias:["YcCbcCrc"]};m0.rgb=function(r){return _.rgb(r,.0593,.2627)},f.yccbccrc=function(r){return f.ypbpr(r,.0593,.2627)};var u1=m0,b0={name:"ucs",min:[0,0,0],max:[100,100,100],channel:["U","V","W"],alias:["UCS","cie1960"]},y0=b0;b0.xyz=function(r){var a=r[0],n=r[1],t=r[2];return[1.5*a,n,1.5*a-3*n+2*t]},o.ucs=function(r){var a=r[0],n=r[1],t=r[2];return[a*2/3,n,.5*(-a+3*n+t)]};var K={name:"uvw",min:[-134,-140,0],max:[224,122,100],channel:["U","V","W"],alias:["UVW","cieuvw","cie1964"]},h1=K;K.xyz=function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y;return u=r[0],h=r[1],v=r[2],v===0?[0,0,0]:(a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=6*M/(l+15*M+3*m),c=Math.pow((v+17)/25,3),t=u/(13*v)+b||0,e=h/(13*v)+y||0,i=6/4*c*t/e,s=c*(2/e-.5*t/e-5),[i,c,s])},o.uvw=function(r,a,n){var t=r[0],e=r[1],v=r[2],u,h,i,c,s;a=a||"D65",n=n||2,u=o.whitepoint[n][a][0],h=o.whitepoint[n][a][1],i=o.whitepoint[n][a][2],c=4*u/(u+15*h+3*i),s=6*h/(u+15*h+3*i);var l=4*t/(t+15*e+3*v)||0,M=6*e/(t+15*e+3*v)||0,m=25*Math.pow(e,1/3)-17,b=13*m*(l-c),y=13*m*(M-s);return[b,y,m]},K.ucs=function(r){throw new Error("Not implemented")},y0.uvw=function(r){throw new Error("Not implemented")};var x0={name:"jpeg",min:[0,0,0],max:[255,255,255],channel:["Y","Cb","Cr"],alias:["JPEG"]},i1=x0;x0.rgb=function(r){var a=r[0],n=r[1],t=r[2];return[a+1.402*(t-128),a-.34414*(n-128)-.71414*(t-128),a+1.772*(n-128)]},f.jpeg=function(r){var a=r[0],n=r[1],t=r[2];return[.299*a+.587*n+.114*t,128-.168736*a-.331264*n+.5*t,128+.5*a-.418688*n-.081312*t]};var p0={name:"lab",min:[0,-100,-100],max:[100,100,100],channel:["lightness","a","b"],alias:["LAB","cielab"]};p0.xyz=([r,a,n])=>{var t,e,v,u;return r<=8?(e=r*100/903.3,u=7.787*(e/100)+16/116):(e=100*Math.pow((r+16)/116,3),u=Math.pow(e/100,1/3)),t=t/95.047<=.008856?t=95.047*(a/500+u-16/116)/7.787:95.047*Math.pow(a/500+u,3),v=v/108.883<=.008859?v=108.883*(u-n/200-16/116)/7.787:108.883*Math.pow(u-n/200,3),[t,e,v]};var U=p0;o.lab=([r,a,n])=>{var t,e,v;return r/=95.047,a/=100,n/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,t=116*a-16,e=500*(r-a),v=200*(a-n),[t,e,v]};var c1={name:"labh",min:[0,-128,-128],max:[100,128,128],channel:["lightness","a","b"],alias:["LABh","hunter-lab","hlab"],xyz:function(r){var a=r[0],n=r[1],t=r[2],e=a/10,v=n/17.5*a/10,u=t/7*a/10,h=e*e,i=(v+h)/1.02,c=-(u-h)/.847;return[i,h,c]}},s1=c1;o.labh=function(r){var a=r[0],n=r[1],t=r[2],e=Math.sqrt(n),v=10*e,u=n===0?0:17.5*((1.02*a-n)/e),h=n===0?0:7*((n-.847*t)/e);return[v,u,h]};var O={name:"lms",min:[0,0,0],max:[100,100,100],channel:["long","medium","short"],matrix:{HPE:[.38971,.68898,-.07868,-.22981,1.1834,.04641,0,0,1],VONKRIES:[.4002,.7076,-.0808,-.2263,1.1653,.0457,0,0,.9182],BFD:[.8951,.2664,-.1614,-.7502,1.7135,.0367,.0389,-.0686,1.0296],CAT97:[.8562,.3372,-.1934,-.836,1.8327,.0033,.0357,-.00469,1.0112],CAT00:[.7982,.3389,-.1371,-.5918,1.5512,.0406,8e-4,.0239,.9753],CAT02:[.7328,.4296,-.1624,-.7036,1.6975,.0061,.003,.0136,.9834]}},l1=O;O.xyz=function(r,a){var n=r[0],t=r[1],e=r[2];return a||(a=[1.096123820835514,-.278869000218287,.182745179382773,.454369041975359,.473533154307412,.072097803717229,-.009627608738429,-.005698031216113,1.015325639954543]),[n*a[0]+t*a[1]+e*a[2],n*a[3]+t*a[4]+e*a[5],n*a[6]+t*a[7]+e*a[8]]},o.lms=function(r,a){var n=r[0],t=r[1],e=r[2];return a||(a=O.matrix.CAT02),[n*a[0]+t*a[1]+e*a[2],n*a[3]+t*a[4]+e*a[5],n*a[6]+t*a[7]+e*a[8]]};var g0={name:"lchab",min:[0,0,0],max:[100,100,360],channel:["lightness","chroma","hue"],alias:["LCHab","cielch","LCH","HLC","LSH"],xyz:function(r){return U.xyz(g0.lab(r))},lab:function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return u=t/360*2*Math.PI,e=n*Math.cos(u),v=n*Math.sin(u),[a,e,v]}};U.lchab=function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return e=Math.atan2(t,n),v=e*360/2/Math.PI,v<0&&(v+=360),u=Math.sqrt(n*n+t*t),[a,u,v]},o.lchab=function(r){return U.lchab(o.lab(r))};var o1=g0,f1={name:"luv",min:[0,-134,-140],max:[100,224,122],channel:["lightness","u","v"],alias:["LUV","cieluv","cie1976"],xyz:function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y;if(v=r[0],u=r[1],h=r[2],v===0)return[0,0,0];var P=.0011070564598794539;return a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=9*M/(l+15*M+3*m),t=u/(13*v)+b||0,e=h/(13*v)+y||0,c=v>8?M*Math.pow((v+16)/116,3):M*v*P,i=c*9*t/(4*e)||0,s=c*(12-3*t-20*e)/(4*e)||0,[i,c,s]}},V=f1;o.luv=function(r,a,n){var t,e,v,u,h,i,c,s,l,M,m,b,y,P=.008856451679035631,I=903.2962962962961;a=a||"D65",n=n||2,l=o.whitepoint[n][a][0],M=o.whitepoint[n][a][1],m=o.whitepoint[n][a][2],b=4*l/(l+15*M+3*m),y=9*M/(l+15*M+3*m),i=r[0],c=r[1],s=r[2],t=4*i/(i+15*c+3*s)||0,e=9*c/(i+15*c+3*s)||0;var H=c/M;return v=H<=P?I*H:116*Math.pow(H,1/3)-16,u=13*v*(t-b),h=13*v*(e-y),[v,u,h]};var d0={name:"lchuv",channel:["lightness","chroma","hue"],alias:["LCHuv","cielchuv"],min:[0,0,0],max:[100,100,360],luv:function(r){var a=r[0],n=r[1],t=r[2],e,v,u;return u=t/360*2*Math.PI,e=n*Math.cos(u),v=n*Math.sin(u),[a,e,v]},xyz:function(r){return V.xyz(d0.luv(r))}},B=d0;V.lchuv=function(r){var a=r[0],n=r[1],t=r[2],e=Math.sqrt(n*n+t*t),v=Math.atan2(t,n),u=v*360/2/Math.PI;return u<0&&(u+=360),[a,e,u]},o.lchuv=function(r){return V.lchuv(o.luv(r))};function w0(r){var a=[],n=Math.pow(r+16,3)/1560896;n=n>E0?n:r/a0;for(var t=0;3>t;){var e=t++,v=T[e][0],u=T[e][1];e=T[e][2];for(var h=0;2>h;){var i=h++,c=(632260*e-126452*u)*n+126452*i;a.push({b:(284517*v-94839*e)*n/c,a:((838422*e+769860*u+731718*v)*r*n-769860*i*r)/c})}}return a}function _0(r){r=w0(r);for(var a=1/0,n=0;n<r.length;){var t=r[n];++n,a=Math.min(a,Math.abs(t.a)/Math.sqrt(Math.pow(t.b,2)+1))}return a}function q0(r,a){a=a/360*Math.PI*2,r=w0(r);for(var n=1/0,t=0;t<r.length;){var e=r[t];++t,e=e.a/(Math.sin(a)-e.b*Math.cos(a)),0<=e&&(n=Math.min(n,e))}return n}function z(r,a){for(var n=0,t=0,e=r.length;t<e;){var v=t++;n+=r[v]*a[v]}return n}function W(r){return .0031308>=r?12.92*r:1.055*Math.pow(r,.4166666666666667)-.055}function N(r){return .04045<r?Math.pow((r+.055)/1.055,2.4):r/12.92}function P0(r){return[W(z(T[0],r)),W(z(T[1],r)),W(z(T[2],r))]}function Y0(r){return r=[N(r[0]),N(r[1]),N(r[2])],[z($[0],r),z($[1],r),z($[2],r)]}function C0(r){var a=r[0],n=r[1];return r=a+15*n+3*r[2],r!=0?(a=4*a/r,r=9*n/r):r=a=NaN,n=n<=E0?n/S*a0:116*Math.pow(n/S,.3333333333333333)-16,n==0?[0,0,0]:[n,13*n*(a-R0),13*n*(r-A0)]}function z0(r){var a=r[0];if(a==0)return[0,0,0];var n=r[1]/(13*a)+R0;return r=r[2]/(13*a)+A0,a=8>=a?S*a/a0:S*Math.pow((a+16)/116,3),n=0-9*a*n/((n-4)*r-n*r),[n,a,(9*a-15*r*a-r*n)/(3*r)]}function T0(r){var a=r[0],n=r[1],t=r[2];return r=Math.sqrt(n*n+t*t),1e-8>r?n=0:(n=180*Math.atan2(t,n)/Math.PI,0>n&&(n=360+n)),[a,r,n]}function I0(r){var a=r[1],n=r[2]/360*2*Math.PI;return[r[0],Math.cos(n)*a,Math.sin(n)*a]}function H0(r){var a=r[0],n=r[1];return r=r[2],99.9999999<r?[100,0,a]:1e-8>r?[0,0,a]:(n=q0(r,a)/100*n,[r,n,a])}function L0(r){var a=r[0],n=r[1];if(r=r[2],99.9999999<a)return[r,0,100];if(1e-8>a)return[r,0,0];var t=q0(a,r);return[r,n/t*100,a]}function D0(r){var a=r[0],n=r[1];return r=r[2],99.9999999<r?[100,0,a]:1e-8>r?[0,0,a]:(n=_0(r)/100*n,[r,n,a])}function B0(r){var a=r[0],n=r[1];if(r=r[2],99.9999999<a)return[r,0,100];if(1e-8>a)return[r,0,0];var t=_0(a);return[r,n/t*100,a]}function Q(r){return P0(z0(I0(r)))}function J(r){return T0(C0(Y0(r)))}function M1(r){return Q(H0(r))}function m1(r){return L0(J(r))}function b1(r){return Q(D0(r))}function y1(r){return B0(J(r))}var T=[[3.240969941904521,-1.537383177570093,-.498610760293],[-.96924363628087,1.87596750150772,.041555057407175],[.055630079696993,-.20397695888897,1.056971514242878]],$=[[.41239079926595,.35758433938387,.18048078840183],[.21263900587151,.71516867876775,.072192315360733],[.019330818715591,.11919477979462,.95053215224966]],S=1,R0=.19783000664283,A0=.46831999493879,a0=903.2962962,E0=.0088564516,x={hsluvToRgb:M1,hsluvToLch:H0,rgbToHsluv:m1,rgbToHpluv:y1,rgbToXyz:Y0,rgbToLch:J,hpluvToRgb:b1,hpluvToLch:D0,lchToHpluv:B0,lchToHsluv:L0,lchToLuv:I0,lchToRgb:Q,luvToLch:T0,luvToXyz:z0,xyzToLuv:C0,xyzToRgb:P0},x1={name:"hsluv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSLuv","HuSL"],lchuv:x.hsluvToLch,xyz:function(r){return B.xyz(x.hsluvToLch(r))},hpluv:function(r){return x.lchToHpluv(x.hsluvToLch(r))},_hsluv:x},p1=x1;B.hsluv=x.lchToHsluv,o.hsluv=function(r){return x.lchToHsluv(o.lchuv(r))},f.hsluv=x.rgbToHsluv;var g1={name:"hpluv",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HPLuv","HuSLp"],lchuv:x.hpluvToLch,xyz:function(r){return B.xyz(x.hpluvToLch(r))},hsluv:function(r){return x.lchToHsluv(x.hpluvToLch(r))}},d1=g1;B.hpluv=x.lchToHpluv,o.hpluv=function(r){return x.lchToHpluv(o.lchuv(r))};var k0={name:"oklab",min:[0,-.4,-.4],max:[1,.4,.4],channel:["lightness","a","b"]},w1=k0;k0.rgb=([r,a,n])=>{const t=r+.3963377774*a+.2158037573*n,e=r-.1055613458*a-.0638541728*n,v=r-.0894841775*a-1.291485548*n,u=t**3,h=e**3,i=v**3;return[(4.0767416621*u-3.307711591*h+.2309699292*i)*255,(-1.2684380046*u+2.6097574011*h-.3413193965*i)*255,(-.0041960863*u-.7034186147*h+1.707614701*i)*255]},f.oklab=([r,a,n])=>{r/=255,a/=255,n/=255;const t=.4122214708*r+.5363325363*a+.0514459929*n,e=.2119034982*r+.6806995451*a+.1073969566*n,v=.0883024619*r+.2817188376*a+.6299787005*n,u=Math.cbrt(t),h=Math.cbrt(e),i=Math.cbrt(v);return[.2104542553*u+.793617785*h-.0040720468*i,1.9779984951*u-2.428592205*h+.4505937099*i,.0259040371*u+.7827717662*h-.808675766*i]};var R={start:0,rotation:.5,hue:1,gamma:1},U0={name:"cubehelix",channel:["fraction"],min:[0],max:[1],defaults:R};U0.rgb=function(r,a={}){Array.isArray(r)&&(r=r[0]);var n=a.start!==void 0?a.start:R.start,t=a.rotation!==void 0?a.rotation:R.rotation,e=a.gamma!==void 0?a.gamma:R.gamma,v=a.hue!==void 0?a.hue:R.hue,u=2*Math.PI*(n/3+1+t*r);r=Math.pow(r,e);var h=v*r*(1-r)/2,i=r+h*(-.14861*Math.cos(u)+1.78277*Math.sin(u)),c=r+h*(-.29227*Math.cos(u)-.90649*Math.sin(u)),s=r+h*(1.97294*Math.cos(u));return i=Math.max(1,Math.min(i,0)),c=Math.max(1,Math.min(c,0)),s=Math.max(1,Math.min(s,0)),[i*255,c*255,s*255]},f.cubehelix=function(r){throw new Error("rgb.cubehelix conversion is not implemented yet")};var _1=U0,F={name:"coloroid",alias:["ATV"],channel:["A","T","V"],min:[10,0,0],max:[76,100,100],table:[[10,59,1.724349,.44987,.53641],[11,55.3,1.740844,.46248,.52444],[12,51.7,1.754985,.47451,.51298],[13,48.2,1.767087,.48601,.50325],[14,44.8,1.775953,.49578,.49052],[15,41.5,1.785073,.5079,.43035],[16,38.2,1.791104,.51874,.46934],[20,34.9,1.794831,.5298,.45783],[21,31.5,1.798664,.54137,.44559],[22,28,1.794819,.55367,.43253],[23,24.4,1.78961,.5668,.41811],[24,20.6,1.809483,.58128,.40176],[25,16.6,1.760983,.59766,.383],[26,12.3,1.723443,.61653,.36061],[30,7.7,1.652891,.63896,.33358],[31,2.8,1.502607,.66619,.2993],[32,-2.5,1.0725,.70061,.26753],[33,-8.4,1.136637,.63925,.22631],[34,-19.8,1.232286,.53962,.19721],[35,-31.6,1.31012,.5034,.17495],[40,-43.2,1.37661,.46041,.15603],[41,-54.6,1.438692,.42386,.13846],[42,-65.8,1.501582,.38991,.12083],[43,-76.8,1.570447,.35586,.10328],[44,-86.8,1.645583,.32195,.08496],[45,-95.8,1.732083,.28657,.05155],[46,-108.4,1.915753,.22202,.01771],[50,-117.2,2.14631,.15664,.05227],[51,-124.7,1.649939,.12736,.0902],[52,-131.8,1.273415,.10813,.12506],[53,-138.5,1.080809,.09414,.15741],[54,-145.1,.957076,.03249,.18958],[55,-152,.868976,.07206,.24109],[56,-163.4,.771731,.05787,.30378],[60,-177.2,.697108,.04353,.35696],[61,171.6,.655803,.03291,.41971],[62,152.4,.623958,.0224,.49954],[63,148.4,.596037,.01196,.60321],[64,136.8,.607413,.00425,.73542],[65,125.4,.659923,.01099,.83391],[66,114.2,.859517,.0805,.77474],[70,103.2,1.195683,.20259,.7046],[71,93.2,1.407534,.28807,.6523],[72,84.2,1.532829,.34422,.6193],[73,77.3,1.603792,.37838,.59533],[74,71.6,1.649448,.4029,.57716],[75,66.9,1.68108,.42141,.56222],[76,62.8,1.704979,.43647,.54895]],xyy:function([r,a,n]){for(var t,e=0;e<A.length;e++)if(r<=A[e][0]){t=A[e];break}var v=t[4],u=t[2],h=t[3],i=n*n/100,c=v*u*100,s=(100*i*E*w+100*h*u*a-c*a*E*w)/(100*a*u-c*a*w+100*i*w),l=(100*i+100*a*v*u-c*a)/(i*w*100+a*100*u-a*c*w);return[s,l,i]}},A=F.table,Y=A.slice(-13).concat(A.slice(0,-13)),r0="D65",n0=2,X=o.whitepoint[n0][r0][0],G=o.whitepoint[n0][r0][1],t0=o.whitepoint[n0][r0][2],q1=X/(X+G+t0),E=G/(X+G+t0),w=(X+G+t0)/100;k.coloroid=function(r){for(var a=r[0],n=r[1],t=r[2],e=10*Math.sqrt(t),v=Math.atan2(n-q1,a-E)*180/Math.PI,u,h=Y.length-1,i=0;i<Y.length&&!(v>Y[i][1]);i++)h=i;u=Math.abs(Y[i+1][1]-v)>Math.abs(Y[h][1]-v)?Y[i+1]:Y[h];var c=u[0],s=u[4],l=u[2],M=u[3],m=s*l*100,b=100*t*(E*w-a*w)/(100*(a*l-M*l)+m*(E*w-a*w));return[c,b,e]},o.coloroid=function(r){return k.coloroid(o.xyy(r))},F.xyz=function(r){return k.xyz(F.xyy(r))};var P1=F,Y1={name:"hcg",min:[0,0,0],max:[360,100,100],channel:["hue","chroma","gray"],alias:["HCG","HSG"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2]/100;if(n===0)return[t*255,t*255,t*255];var e=a%1*6,v=e%1,u=[0,0,0],h=1-v;switch(Math.floor(e)){case 0:u[0]=1,u[1]=v,u[2]=0;break;case 1:u[0]=h,u[1]=1,u[2]=0;break;case 2:u[0]=0,u[1]=1,u[2]=v;break;case 3:u[0]=0,u[1]=h,u[2]=1;break;case 4:u[0]=v,u[1]=0,u[2]=1;break;default:u[0]=1,u[1]=0,u[2]=h}var i=(1-n)*t,c=[(n*u[0]+i)*255,(n*u[1]+i)*255,(n*u[2]+i)*255];return c},hsl:function(r){var a=r[1]/100,n=r[2]/100,t=n*(1-a)+.5*a,e=0;return t<1&&t>0&&(t<.5?e=a/(2*t):e=a/(2*(1-t))),[r[0],e*100,t*100]},hsv:function(r){var a=r[1]/100,n=r[2]/100,t=a+n*(1-a),e;if(t>0){var v=a/t;e=[r[0],v*100,t*100]}else e=[r[0],0,t*100];return e},hwb:function(r){var a=r[1]/100,n=r[2]/100,t=a+n*(1-a);return[r[0],(t-a)*100,(1-t)*100]}},C1=Y1;f.hcg=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=Math.max(Math.max(a,n),t),v=Math.min(Math.min(a,n),t),u=e-v,h,i;return u<1?h=v/(1-u):h=0,u>0?(e===a?i=(n-t)/u%6:e===n?i=2+(t-a)/u:i=4+(a-n)/u,i/=6,i=i%1):i=0,[i*360,u*100,h*100]},L.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=0;n<.5?t=2*a*n:t=2*a*(1-n);var e;if(t<1){var v=(n-.5*t)/(1-t);e=[r[0],t*100,v*100]}else e=[r[0],t*100,0];return e},D.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=a*n,e;if(t<1){var v=(n-t)/(1-t);e=[r[0],t*100,v*100]}else e=[r[0],t*100,0];return e},u0.hcg=function(r){var a=r[1]/100,n=r[2]/100,t=1-n,e=t-a,v=0;return e<1&&(v=(t-e)/(1-e)),[r[0],e*100,v*100]};var V0={name:"hcy",min:[0,0,0],max:[360,100,255],channel:["hue","chroma","luminance"],alias:["HCY"]},z1=V0;V0.rgb=function(r){var a=(r[0]<0?r[0]%360+360:r[0]%360)*Math.PI/180,n=Math.max(0,Math.min(r[1],100))/100,t=Math.max(0,Math.min(r[2],255))/255,e=Math.PI/3,v,u,h;return a<2*e?(h=t*(1-n),v=t*(1+n*Math.cos(a)/Math.cos(e-a)),u=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):a<4*e?(a=a-2*e,v=t*(1-n),u=t*(1+n*Math.cos(a)/Math.cos(e-a)),h=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))):(a=a-4*e,u=t*(1-n),h=t*(1+n*Math.cos(a)/Math.cos(e-a)),v=t*(1+n*(1-Math.cos(a)/Math.cos(e-a)))),[v*255,u*255,h*255]},f.hcy=function(r){var a=r[0]+r[1]+r[2],n=r[0]/a,t=r[1]/a,e=r[2]/a,v=Math.acos(.5*(n-t+(n-e))/Math.sqrt((n-t)*(n-t)+(n-e)*(t-e)));e>t&&(v=2*Math.PI-v);var u=1-3*Math.min(n,t,e),h=a/3;return[v*180/Math.PI,u*100,h]};var S0={name:"tsl",min:[0,0,0],max:[1,1,1],channel:["tint","saturation","lightness"],alias:["TSL"]},T1=S0;S0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=Math.tan(2*Math.PI*(a-1/4));e*=e;var v=Math.sqrt(5*n*n/(9*(1/e+1)))+1/3,u=Math.sqrt(5*n*n/(9*(e+1)))+1/3,h=t/(.185*v+.473*u+.114),i=h*(1-v-u),c=h*u,s=h*v;return[s*255,c*255,i*255]},f.tsl=function(r){var[a,n,t]=r,e=(a/(a+n+t)||0)-1/3,v=(n/(a+n+t)||0)-1/3,u=v!=0?.5-Math.atan2(v,e)/2/Math.PI:0,h=Math.sqrt(9/5*(e*e+v*v)),i=(a*.299+n*.587+t*.114)/255;return[u,h,i]};var F0={name:"yes",min:[0,0,0],max:[1,1,1],channel:["luminance","e-factor","s-factor"]};F0.rgb=function(r){var a=r[0],n=r[1],t=r[2],e=[1,1.431,.126,1,-.569,.126,1,.431,-1.874],v=a*e[0]+n*e[1]+t*e[2],u=a*e[3]+n*e[4]+t*e[5],h=a*e[6]+n*e[7]+t*e[8];return[v*255,u*255,h*255]},f.yes=function(r){var a=r[0]/255,n=r[1]/255,t=r[2]/255,e=[.253,.684,.063,.5,-.5,0,.25,.25,-.5];return[a*e[0]+n*e[1]+t*e[2],a*e[3]+n*e[4]+t*e[5],a*e[6]+n*e[7]+t*e[8]]};var I1=F0,X0={name:"osaucs",alias:["OSA-UCS"],channel:["L","j","g"],min:[-10,-6,-10],max:[8,12,6]};X0.xyz=function(r){var a,n,t;throw"Unimplemented"},o.osaucs=function(r){var a=r[0],n=r[1],t=r[2],e=a/(a+n+t),v=n/(a+n+t),u=4.4934*e*e+4.3034*v*v-4.276*e*v-1.3744*e-2.56439*v+1.8103,h=u*n,i=5.9*(Math.pow(h,1/3)-2/3+.042*Math.pow(Math.max(h,30)-30,1/3)),c=(i-14.3993)/Math.sqrt(2),s=i/(5.9*(Math.pow(h,1/3)-2/3)),l=.779*a+.4194*n-.1648*t,M=-.4493*a+1.3265*n+.0927*t,m=-.1149*a+.3394*n+.717*t;l=Math.pow(l,1/3)||0,M=Math.pow(M,1/3)||0,m=Math.pow(m,1/3)||0;var b=-13.7*l+17.7*M-4*m,y=1.7*l+8*M-9.7*m,P=s*b,I=s*y;return[c,I,P]};var H1=X0,p=.299,g=.587,d=.114,L1={name:"hsp",min:[0,0,0],max:[360,100,255],channel:["hue","saturation","perceived_brightness"],alias:["HSP"],rgb:function(r){var a=r[0]/360,n=r[1]/100,t=r[2],e,v,u,h,i=1-n;return i>0?a<1/6?(a=6*(a-0/6),h=1+a*(1/i-1),u=t/Math.sqrt(p/i/i+g*h*h+d),e=u/i,v=u+a*(e-u)):a<2/6?(a=6*(-a+2/6),h=1+a*(1/i-1),u=t/Math.sqrt(g/i/i+p*h*h+d),v=u/i,e=u+a*(v-u)):a<3/6?(a=6*(a-2/6),h=1+a*(1/i-1),e=t/Math.sqrt(g/i/i+d*h*h+p),v=e/i,u=e+a*(v-e)):a<4/6?(a=6*(-a+4/6),h=1+a*(1/i-1),e=t/Math.sqrt(d/i/i+g*h*h+p),u=e/i,v=e+a*(u-e)):a<5/6?(a=6*(a-4/6),h=1+a*(1/i-1),v=t/Math.sqrt(d/i/i+p*h*h+g),u=v/i,e=v+a*(u-v)):(a=6*(-a+6/6),h=1+a*(1/i-1),v=t/Math.sqrt(p/i/i+d*h*h+g),e=v/i,u=v+a*(e-v)):a<1/6?(a=6*(a-0/6),e=Math.sqrt(t*t/(p+g*a*a)),v=e*a,u=0):a<2/6?(a=6*(-a+2/6),v=Math.sqrt(t*t/(g+p*a*a)),e=v*a,u=0):a<3/6?(a=6*(a-2/6),v=Math.sqrt(t*t/(g+d*a*a)),u=v*a,e=0):a<4/6?(a=6*(-a+4/6),u=Math.sqrt(t*t/(d+g*a*a)),v=u*a,e=0):a<5/6?(a=6*(a-4/6),u=Math.sqrt(t*t/(d+p*a*a)),e=u*a,v=0):(a=6*(-a+6/6),e=Math.sqrt(t*t/(p+d*a*a)),u=e*a,v=0),[Math.round(e),Math.round(v),Math.round(u)]}},D1=L1;f.hsp=function(r){var a=parseInt(r[0],10),n=parseInt(r[1],10),t=parseInt(r[2],10),e,v,u;return u=Math.sqrt(a*a*p+n*n*g+t*t*d),a===n&&a===t?(e=0,v=0):(a>=n&&a>=t&&(t>=n?(e=6/6-1/6*(t-n)/(a-n),v=1-n/a):(e=0/6+1/6*(n-t)/(a-t),v=1-t/a)),n>=a&&n>=t&&(a>=t?(e=2/6-1/6*(a-t)/(n-t),v=1-t/n):(e=2/6+1/6*(t-a)/(n-a),v=1-a/n)),t>=a&&t>=n&&(n>=a?(e=4/6-1/6*(n-a)/(t-a),v=1-a/t):(e=4/6+1/6*(a-n)/(t-n),v=1-n/t))),[Math.round(e*360),v*100,Math.round(u)]};var G0={name:"hsm",min:[0,0,0],max:[1,1,1],channel:["hue","saturation","mixture"]},B1=G0;G0.rgb=function([r,a,n]){let t;n>=0&&n<=1/7?t=Math.sqrt((0-n)**2+(0-n)**2+(7-n)**2):n>1/7&&n<=3/7?t=Math.sqrt((0-n)**2+((7*n-1)/2-n)**2+(1-n)**2):n>3/7&&n<=.5?t=Math.sqrt(((7*n-3)/2-n)**2+(1-n)**2+(1-n)**2):n>.5&&n<=4/7?t=Math.sqrt((7*n/4-n)**2+(0-n)**2+(0-n)**2):n>4/7&&n<=6/7?t=Math.sqrt((1-n)**2+((7*n-4)/2-n)**2+(0-n)**2):n>6/7&&n<=1?t=Math.sqrt((1-n)**2+(1-n)**2+(7*n-6-n)**2):t=1;const e=a*t,v=Math.cos(2*Math.PI*r),u=Math.sin(2*Math.PI*r),h=3/Math.sqrt(41),i=-4/Math.sqrt(861),c=-4/Math.sqrt(41),s=19/Math.sqrt(861),l=-4/Math.sqrt(41),M=-22/Math.sqrt(861),m=e*(h*v+i*u),b=e*(c*v+s*u),y=e*(l*v+M*u),P=Math.max(0,Math.min(1,n+m))*255,I=Math.max(0,Math.min(1,n+b))*255,H=Math.max(0,Math.min(1,n+y))*255;return[P,I,H]},f.hsm=function([r,a,n]){r/=255,a/=255,n/=255;let t=(4*r+2*a+n)/7,e=r-t,v=a-t,u=n-t,h=Math.sqrt(e*e+v*v+u*u),i=Math.acos((3*e-4*v-4*u)/Math.sqrt(41*(e*e+v*v+u*u))||0),c=n<=a?i/(2*Math.PI):1-i/(2*Math.PI),s;return 0<=t&&t<=1/7?s=h/Math.sqrt((0-t)**2+(0-t)**2+(7-t)**2):1/7<t&&t<=3/7?s=h/Math.sqrt((0-t)**2+((7*t-1)/2-t)**2+(1-t)**2):3/7<t&&t<=1/2?s=h/Math.sqrt(((7*t-3)/2-t)**2+(1-t)**2+(1-t)**2):1/2<t&&t<=4/7?s=h/Math.sqrt((7*t/4-t)**2+(0-t)**2+(0-t)**2):4/7<t&&t<=6/7?s=h/Math.sqrt((1-t)**2+((7*t-4)/2-t)**2+(0-t)**2):6/7<t&&t<1?s=h/Math.sqrt((1-t)**2+(1-t)**2+(7*t-6-t)**2):s=0,[c,s,t]};var j0={name:"lrgb",min:[0,0,0],max:[1,1,1],channel:["red","green","blue"]};j0.rgb=r=>r.map(a=>(a/=255)>.04045?((a+.055)/1.055)**2.4:a/12.92),f.lrgb=r=>r.map(a=>a/255<=.04045?a/255/12.92:((a/255+.055)/1.055)**2.4);var R1=j0,q={},A1=q;function Z0(r){const a=r.name;for(const n in q){r[n]||(r[n]=K0(r,n));const t=q[n];t[a]||(t[a]=K0(t,a))}q[a]=r}function K0(r,a){return r.xyz&&q.xyz[a]?n=>q.xyz[a](r.xyz(n)):r.rgb&&q.rgb[a]?n=>q.rgb[a](r.rgb(n)):()=>{throw new Error(`Conversion ${r.name} to ${a} is not available`)}}[f,o,L,D,Q0,u0,$0,a1,k,r1,l0,n1,t1,_,e1,v1,u1,y0,h1,i1,U,s1,l1,o1,V,B,p1,d1,_1,P1,C1,z1,T1,I1,H1,D1,B1,R1,w1].map(Z0);export{A1 as default,Z0 as register}; |
30
hcg.js
@@ -11,8 +11,8 @@ /** | ||
name: 'hcg', | ||
min: [0,0,0], | ||
max: [360,100,100], | ||
min: [0, 0, 0], | ||
max: [360, 100, 100], | ||
channel: ['hue', 'chroma', 'gray'], | ||
alias: ['HCG', 'HSG'], | ||
rgb: function(hcg) { | ||
rgb: function (hcg) { | ||
var h = hcg[0] / 360; | ||
@@ -51,3 +51,3 @@ var c = hcg[1] / 100; | ||
hsl: function(hcg) { | ||
hsl: function (hcg) { | ||
var c = hcg[1] / 100; | ||
@@ -67,3 +67,3 @@ var g = hcg[2] / 100; | ||
hsv: function(hcg){ | ||
hsv: function (hcg) { | ||
var c = hcg[1] / 100; | ||
@@ -82,3 +82,3 @@ var g = hcg[2] / 100; | ||
hwb: function(hcg){ | ||
hwb: function (hcg) { | ||
var c = hcg[1] / 100; | ||
@@ -95,3 +95,3 @@ var g = hcg[2] / 100; | ||
//append rgb | ||
rgb.hcg = function(rgb) { | ||
rgb.hcg = function (rgb) { | ||
var r = rgb[0] / 255; | ||
@@ -114,7 +114,7 @@ var g = rgb[1] / 255; | ||
} else | ||
if (max === g) { | ||
hue = 2 + (b - r) / chroma; | ||
} else { | ||
hue = 4 + (r - g) / chroma; | ||
} | ||
if (max === g) { | ||
hue = 2 + (b - r) / chroma; | ||
} else { | ||
hue = 4 + (r - g) / chroma; | ||
} | ||
hue /= 6; | ||
@@ -129,3 +129,3 @@ hue = (hue % 1); | ||
//extend hsl | ||
hsl.hcg = function(hsl) { | ||
hsl.hcg = function (hsl) { | ||
var s = hsl[1] / 100; | ||
@@ -150,3 +150,3 @@ var l = hsl[2] / 100; | ||
//extend hsv | ||
hsv.hcg = function(hsv){ | ||
hsv.hcg = function (hsv) { | ||
var s = hsv[1] / 100; | ||
@@ -167,3 +167,3 @@ var v = hsv[2] / 100; | ||
//extend hwb | ||
hwb.hcg = function(hwb){ | ||
hwb.hcg = function (hwb) { | ||
var w = hwb[1] / 100; | ||
@@ -170,0 +170,0 @@ var b = hwb[2] / 100; |
30
hcy.js
@@ -11,4 +11,4 @@ /** | ||
name: 'hcy', | ||
min: [0,0,0], | ||
max: [360,100,255], | ||
min: [0, 0, 0], | ||
max: [360, 100, 255], | ||
channel: ['hue', 'chroma', 'luminance'], | ||
@@ -36,18 +36,18 @@ alias: ['HCY'] | ||
var r, g, b; | ||
if (h < (2 * pi3) ) { | ||
b = i * ( 1 - s ); | ||
r = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
g = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
if (h < (2 * pi3)) { | ||
b = i * (1 - s); | ||
r = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
g = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
else if (h < (4 * pi3) ) { | ||
else if (h < (4 * pi3)) { | ||
h = h - 2 * pi3; | ||
r = i * ( 1 - s ); | ||
g = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
b = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
r = i * (1 - s); | ||
g = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
b = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
else { | ||
h = h - 4 * pi3; | ||
g = i * ( 1 - s ); | ||
b = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
r = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
g = i * (1 - s); | ||
b = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
r = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
@@ -74,4 +74,4 @@ | ||
var h = Math.acos( | ||
( 0.5 * ((r - g) + (r - b)) ) / | ||
Math.sqrt( (r - g)*(r - g) + (r - b)*(g - b) ) | ||
(0.5 * ((r - g) + (r - b))) / | ||
Math.sqrt((r - g) * (r - g) + (r - b) * (g - b)) | ||
); | ||
@@ -78,0 +78,0 @@ if (b > g) { |
14
hpluv.js
@@ -9,8 +9,8 @@ /** | ||
import lchuv from './lchuv.js'; | ||
import {_hsluv} from './hsluv.js'; | ||
import { _hsluv } from './hsluv.js'; | ||
var hpluv = { | ||
name: 'hpluv', | ||
min: [0,0,0], | ||
max: [360,100,100], | ||
min: [0, 0, 0], | ||
max: [360, 100, 100], | ||
channel: ['hue', 'saturation', 'lightness'], | ||
@@ -20,7 +20,7 @@ alias: ['HPLuv', 'HuSLp'], | ||
lchuv: _hsluv.hpluvToLch, | ||
xyz: function(arg){return lchuv.xyz(_hsluv.hpluvToLch(arg));}, | ||
xyz: function (arg) { return lchuv.xyz(_hsluv.hpluvToLch(arg)); }, | ||
//a shorter way to convert to husl | ||
hsluv: function(arg){ | ||
return _hsluv.lchToHsluv( _hsluv.hpluvToLch(arg)); | ||
hsluv: function (arg) { | ||
return _hsluv.lchToHsluv(_hsluv.hpluvToLch(arg)); | ||
} | ||
@@ -33,2 +33,2 @@ }; | ||
lchuv.hpluv = _hsluv.lchToHpluv; | ||
xyz.hpluv = function(arg){return _hsluv.lchToHpluv(xyz.lchuv(arg));}; | ||
xyz.hpluv = function (arg) { return _hsluv.lchToHpluv(xyz.lchuv(arg)); }; |
30
hsi.js
@@ -11,4 +11,4 @@ /** | ||
name: 'hsi', | ||
min: [0,0,0], | ||
max: [360,100,255], | ||
min: [0, 0, 0], | ||
max: [360, 100, 255], | ||
channel: ['hue', 'saturation', 'intensity'], | ||
@@ -36,18 +36,18 @@ alias: ['HSI'] | ||
var r, g, b; | ||
if (h < (2 * pi3) ) { | ||
b = i * ( 1 - s ); | ||
r = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
g = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
if (h < (2 * pi3)) { | ||
b = i * (1 - s); | ||
r = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
g = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
else if (h < (4 * pi3) ) { | ||
else if (h < (4 * pi3)) { | ||
h = h - 2 * pi3; | ||
r = i * ( 1 - s ); | ||
g = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
b = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
r = i * (1 - s); | ||
g = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
b = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
else { | ||
h = h - 4 * pi3; | ||
g = i * ( 1 - s ); | ||
b = i * (1 + ( s * Math.cos(h) / Math.cos(pi3 - h) )); | ||
r = i * (1 + ( s * ( 1 - Math.cos(h) / Math.cos(pi3 - h) ))); | ||
g = i * (1 - s); | ||
b = i * (1 + (s * Math.cos(h) / Math.cos(pi3 - h))); | ||
r = i * (1 + (s * (1 - Math.cos(h) / Math.cos(pi3 - h)))); | ||
} | ||
@@ -74,4 +74,4 @@ | ||
var h = Math.acos( | ||
( 0.5 * ((r - g) + (r - b)) ) / | ||
Math.sqrt( (r - g)*(r - g) + (r - b)*(g - b) ) | ||
(0.5 * ((r - g) + (r - b))) / | ||
Math.sqrt((r - g) * (r - g) + (r - b) * (g - b)) | ||
); | ||
@@ -78,0 +78,0 @@ if (b > g) { |
34
hsl.js
@@ -8,9 +8,9 @@ /** | ||
name: 'hsl', | ||
min: [0,0,0], | ||
max: [360,100,100], | ||
min: [0, 0, 0], | ||
max: [360, 100, 100], | ||
channel: ['hue', 'saturation', 'lightness'], | ||
alias: ['HSL'], | ||
rgb: function(hsl) { | ||
var h = hsl[0]/360, s = hsl[1]/100, l = hsl[2]/100, t1, t2, t3, rgb, val, i=0; | ||
rgb: function (hsl) { | ||
var h = hsl[0] / 360, s = hsl[1] / 100, l = hsl[2] / 100, t1, t2, t3, rgb, val, i = 0; | ||
@@ -23,9 +23,9 @@ if (s === 0) return val = l * 255, [val, val, val]; | ||
rgb = [0, 0, 0]; | ||
for (;i<3;) { | ||
for (; i < 3;) { | ||
t3 = h + 1 / 3 * - (i - 1); | ||
t3 < 0 ? t3++ : t3 > 1 && t3--; | ||
val = 6 * t3 < 1 ? t1 + (t2 - t1) * 6 * t3 : | ||
2 * t3 < 1 ? t2 : | ||
3 * t3 < 2 ? t1 + (t2 - t1) * (2 / 3 - t3) * 6 : | ||
t1; | ||
2 * t3 < 1 ? t2 : | ||
3 * t3 < 2 ? t1 + (t2 - t1) * (2 / 3 - t3) * 6 : | ||
t1; | ||
rgb[i++] = val * 255; | ||
@@ -42,10 +42,10 @@ } | ||
//extend rgb | ||
rgb.hsl = function(rgb) { | ||
var r = rgb[0]/255, | ||
g = rgb[1]/255, | ||
b = rgb[2]/255, | ||
min = Math.min(r, g, b), | ||
max = Math.max(r, g, b), | ||
delta = max - min, | ||
h, s, l; | ||
rgb.hsl = function (rgb) { | ||
var r = rgb[0] / 255, | ||
g = rgb[1] / 255, | ||
b = rgb[2] / 255, | ||
min = Math.min(r, g, b), | ||
max = Math.max(r, g, b), | ||
delta = max - min, | ||
h, s, l; | ||
@@ -62,3 +62,3 @@ if (max === min) { | ||
else if (b === max) { | ||
h = 4 + (r - g)/ delta; | ||
h = 4 + (r - g) / delta; | ||
} | ||
@@ -65,0 +65,0 @@ |
58
hsluv.js
@@ -15,25 +15,25 @@ /** | ||
// FIXME: update to the latest | ||
function f(a){var c=[],b=Math.pow(a+16,3)/1560896;b=b>g?b:a/k;for(var d=0;3>d;){var e=d++,h=l[e][0],w=l[e][1];e=l[e][2];for(var x=0;2>x;){var y=x++,z=(632260*e-126452*w)*b+126452*y;c.push({b:(284517*h-94839*e)*b/z,a:((838422*e+769860*w+731718*h)*a*b-769860*y*a)/z})}}return c} | ||
function m(a){a=f(a);for(var c=Infinity,b=0;b<a.length;){var d=a[b];++b;c=Math.min(c,Math.abs(d.a)/Math.sqrt(Math.pow(d.b,2)+1))}return c} | ||
function n(a,c){c=c/360*Math.PI*2;a=f(a);for(var b=Infinity,d=0;d<a.length;){var e=a[d];++d;e=e.a/(Math.sin(c)-e.b*Math.cos(c));0<=e&&(b=Math.min(b,e))}return b} | ||
function p(a,c){for(var b=0,d=0,e=a.length;d<e;){var h=d++;b+=a[h]*c[h]}return b} | ||
function q(a){return.0031308>=a?12.92*a:1.055*Math.pow(a,.4166666666666667)-.055} | ||
function r(a){return.04045<a?Math.pow((a+.055)/1.055,2.4):a/12.92} | ||
function t(a){return[q(p(l[0],a)),q(p(l[1],a)),q(p(l[2],a))]} | ||
function u(a){a=[r(a[0]),r(a[1]),r(a[2])];return[p(v[0],a),p(v[1],a),p(v[2],a)]} | ||
function A(a){var c=a[0],b=a[1];a=c+15*b+3*a[2];0!=a?(c=4*c/a,a=9*b/a):a=c=NaN;b=b<=g?b/B*k:116*Math.pow(b/B,.3333333333333333)-16;return 0==b?[0,0,0]:[b,13*b*(c-C),13*b*(a-D)]} | ||
function E(a){var c=a[0];if(0==c)return[0,0,0];var b=a[1]/(13*c)+C;a=a[2]/(13*c)+D;c=8>=c?B*c/k:B*Math.pow((c+16)/116,3);b=0-9*c*b/((b-4)*a-b*a);return[b,c,(9*c-15*a*c-a*b)/(3*a)]} | ||
function F(a){var c=a[0],b=a[1],d=a[2];a=Math.sqrt(b*b+d*d);1E-8>a?b=0:(b=180*Math.atan2(d,b)/Math.PI,0>b&&(b=360+b));return[c,a,b]} | ||
function G(a){var c=a[1],b=a[2]/360*2*Math.PI;return[a[0],Math.cos(b)*c,Math.sin(b)*c]} | ||
function H(a){var c=a[0],b=a[1];a=a[2];if(99.9999999<a)return[100,0,c];if(1E-8>a)return[0,0,c];b=n(a,c)/100*b;return[a,b,c]} | ||
function I(a){var c=a[0],b=a[1];a=a[2];if(99.9999999<c)return[a,0,100];if(1E-8>c)return[a,0,0];var d=n(c,a);return[a,b/d*100,c]} | ||
function J(a){var c=a[0],b=a[1];a=a[2];if(99.9999999<a)return[100,0,c];if(1E-8>a)return[0,0,c];b=m(a)/100*b;return[a,b,c]} | ||
function K(a){var c=a[0],b=a[1];a=a[2];if(99.9999999<c)return[a,0,100];if(1E-8>c)return[a,0,0];var d=m(c);return[a,b/d*100,c]} | ||
function O(a){return t(E(G(a)))} | ||
function P(a){return F(A(u(a)))} | ||
function Q(a){return O(H(a))} | ||
function R(a){return I(P(a))} | ||
function S(a){return O(J(a))} | ||
function T(a){return K(P(a))} | ||
var l=[[3.240969941904521,-1.537383177570093,-.498610760293],[-.96924363628087,1.87596750150772,.041555057407175],[.055630079696993,-.20397695888897,1.056971514242878]],v=[[.41239079926595,.35758433938387,.18048078840183],[.21263900587151,.71516867876775,.072192315360733],[.019330818715591,.11919477979462,.95053215224966]],B=1,C=.19783000664283,D=.46831999493879,k=903.2962962,g=.0088564516,M="0123456789abcdef"; | ||
function f(a) { var c = [], b = Math.pow(a + 16, 3) / 1560896; b = b > g ? b : a / k; for (var d = 0; 3 > d;) { var e = d++, h = l[e][0], w = l[e][1]; e = l[e][2]; for (var x = 0; 2 > x;) { var y = x++, z = (632260 * e - 126452 * w) * b + 126452 * y; c.push({ b: (284517 * h - 94839 * e) * b / z, a: ((838422 * e + 769860 * w + 731718 * h) * a * b - 769860 * y * a) / z }) } } return c } | ||
function m(a) { a = f(a); for (var c = Infinity, b = 0; b < a.length;) { var d = a[b]; ++b; c = Math.min(c, Math.abs(d.a) / Math.sqrt(Math.pow(d.b, 2) + 1)) } return c } | ||
function n(a, c) { c = c / 360 * Math.PI * 2; a = f(a); for (var b = Infinity, d = 0; d < a.length;) { var e = a[d]; ++d; e = e.a / (Math.sin(c) - e.b * Math.cos(c)); 0 <= e && (b = Math.min(b, e)) } return b } | ||
function p(a, c) { for (var b = 0, d = 0, e = a.length; d < e;) { var h = d++; b += a[h] * c[h] } return b } | ||
function q(a) { return .0031308 >= a ? 12.92 * a : 1.055 * Math.pow(a, .4166666666666667) - .055 } | ||
function r(a) { return .04045 < a ? Math.pow((a + .055) / 1.055, 2.4) : a / 12.92 } | ||
function t(a) { return [q(p(l[0], a)), q(p(l[1], a)), q(p(l[2], a))] } | ||
function u(a) { a = [r(a[0]), r(a[1]), r(a[2])]; return [p(v[0], a), p(v[1], a), p(v[2], a)] } | ||
function A(a) { var c = a[0], b = a[1]; a = c + 15 * b + 3 * a[2]; 0 != a ? (c = 4 * c / a, a = 9 * b / a) : a = c = NaN; b = b <= g ? b / B * k : 116 * Math.pow(b / B, .3333333333333333) - 16; return 0 == b ? [0, 0, 0] : [b, 13 * b * (c - C), 13 * b * (a - D)] } | ||
function E(a) { var c = a[0]; if (0 == c) return [0, 0, 0]; var b = a[1] / (13 * c) + C; a = a[2] / (13 * c) + D; c = 8 >= c ? B * c / k : B * Math.pow((c + 16) / 116, 3); b = 0 - 9 * c * b / ((b - 4) * a - b * a); return [b, c, (9 * c - 15 * a * c - a * b) / (3 * a)] } | ||
function F(a) { var c = a[0], b = a[1], d = a[2]; a = Math.sqrt(b * b + d * d); 1E-8 > a ? b = 0 : (b = 180 * Math.atan2(d, b) / Math.PI, 0 > b && (b = 360 + b)); return [c, a, b] } | ||
function G(a) { var c = a[1], b = a[2] / 360 * 2 * Math.PI; return [a[0], Math.cos(b) * c, Math.sin(b) * c] } | ||
function H(a) { var c = a[0], b = a[1]; a = a[2]; if (99.9999999 < a) return [100, 0, c]; if (1E-8 > a) return [0, 0, c]; b = n(a, c) / 100 * b; return [a, b, c] } | ||
function I(a) { var c = a[0], b = a[1]; a = a[2]; if (99.9999999 < c) return [a, 0, 100]; if (1E-8 > c) return [a, 0, 0]; var d = n(c, a); return [a, b / d * 100, c] } | ||
function J(a) { var c = a[0], b = a[1]; a = a[2]; if (99.9999999 < a) return [100, 0, c]; if (1E-8 > a) return [0, 0, c]; b = m(a) / 100 * b; return [a, b, c] } | ||
function K(a) { var c = a[0], b = a[1]; a = a[2]; if (99.9999999 < c) return [a, 0, 100]; if (1E-8 > c) return [a, 0, 0]; var d = m(c); return [a, b / d * 100, c] } | ||
function O(a) { return t(E(G(a))) } | ||
function P(a) { return F(A(u(a))) } | ||
function Q(a) { return O(H(a)) } | ||
function R(a) { return I(P(a)) } | ||
function S(a) { return O(J(a)) } | ||
function T(a) { return K(P(a)) } | ||
var l = [[3.240969941904521, -1.537383177570093, -.498610760293], [-.96924363628087, 1.87596750150772, .041555057407175], [.055630079696993, -.20397695888897, 1.056971514242878]], v = [[.41239079926595, .35758433938387, .18048078840183], [.21263900587151, .71516867876775, .072192315360733], [.019330818715591, .11919477979462, .95053215224966]], B = 1, C = .19783000664283, D = .46831999493879, k = 903.2962962, g = .0088564516, M = "0123456789abcdef"; | ||
@@ -61,4 +61,4 @@ export const _hsluv = { | ||
name: 'hsluv', | ||
min: [0,0,0], | ||
max: [360,100,100], | ||
min: [0, 0, 0], | ||
max: [360, 100, 100], | ||
channel: ['hue', 'saturation', 'lightness'], | ||
@@ -69,3 +69,3 @@ alias: ['HSLuv', 'HuSL'], | ||
xyz: function(arg){ | ||
xyz: function (arg) { | ||
return lchuv.xyz(_hsluv.hsluvToLch(arg)); | ||
@@ -75,4 +75,4 @@ }, | ||
//a shorter way to convert to hpluv | ||
hpluv: function(arg){ | ||
return _hsluv.lchToHpluv( _hsluv.hsluvToLch(arg)); | ||
hpluv: function (arg) { | ||
return _hsluv.lchToHpluv(_hsluv.hsluvToLch(arg)); | ||
}, | ||
@@ -88,3 +88,3 @@ | ||
lchuv.hsluv = _hsluv.lchToHsluv; | ||
xyz.hsluv = function(arg){ | ||
xyz.hsluv = function (arg) { | ||
return _hsluv.lchToHsluv(xyz.lchuv(arg)); | ||
@@ -91,0 +91,0 @@ }; |
10
hsp.js
@@ -6,3 +6,3 @@ /** | ||
const Pr = 0.299, | ||
const Pr = 0.299, | ||
Pg = 0.587, | ||
@@ -19,4 +19,4 @@ Pb = 0.114; | ||
rgb: function (hsp) { | ||
var h = hsp[0]/360.0, | ||
s = hsp[1]/100.0, | ||
var h = hsp[0] / 360.0, | ||
s = hsp[1] / 100.0, | ||
p = hsp[2], | ||
@@ -98,3 +98,3 @@ r, g, b, part, | ||
return [Math.round(r), Math.round(g), Math.round(b)]; | ||
return [Math.round(r), Math.round(g), Math.round(b)]; | ||
} | ||
@@ -156,3 +156,3 @@ }; | ||
//@ts-ignore | ||
return [Math.round(h*360.0), s*100.0, Math.round(p)]; | ||
return [Math.round(h * 360.0), s * 100.0, Math.round(p)]; | ||
}; |
24
hsv.js
@@ -10,8 +10,8 @@ /** | ||
name: 'hsv', | ||
min: [0,0,0], | ||
max: [360,100,100], | ||
min: [0, 0, 0], | ||
max: [360, 100, 100], | ||
channel: ['hue', 'saturation', 'value'], | ||
alias: ['HSV', 'HSB'], | ||
rgb: function(hsv) { | ||
rgb: function (hsv) { | ||
var h = hsv[0] / 60, | ||
@@ -28,3 +28,3 @@ s = hsv[1] / 100, | ||
switch(hi) { | ||
switch (hi) { | ||
case 0: | ||
@@ -45,3 +45,3 @@ return [v, t, p]; | ||
hsl: function(hsv) { | ||
hsl: function (hsv) { | ||
var h = hsv[0], | ||
@@ -62,7 +62,7 @@ s = hsv[1] / 100, | ||
export default (hsv); | ||
export default (hsv); | ||
//append rgb | ||
rgb.hsv = function(rgb) { | ||
rgb.hsv = function (rgb) { | ||
var r = rgb[0], | ||
@@ -80,3 +80,3 @@ g = rgb[1], | ||
else { | ||
s = (delta/max * 100); | ||
s = (delta / max * 100); | ||
} | ||
@@ -113,7 +113,7 @@ | ||
//extend hsl | ||
hsl.hsv = function(hsl) { | ||
hsl.hsv = function (hsl) { | ||
var h = hsl[0], | ||
s = hsl[1] / 100, | ||
l = hsl[2] / 100, | ||
sv, v; | ||
s = hsl[1] / 100, | ||
l = hsl[2] / 100, | ||
sv, v; | ||
l *= 2; | ||
@@ -120,0 +120,0 @@ s *= (l <= 1) ? l : 2 - l; |
10
index.js
@@ -35,2 +35,3 @@ /** | ||
import hpluv from './hpluv.js' | ||
import oklab from './oklab.js' | ||
import cubehelix from './cubehelix.js' | ||
@@ -45,2 +46,3 @@ import coloroid from './coloroid.js' | ||
import hsm from './hsm.js' | ||
import lrgb from './lrgb.js' | ||
@@ -62,3 +64,3 @@ | ||
*/ | ||
export function register (newSpace) { | ||
export function register(newSpace) { | ||
const newSpaceName = newSpace.name; | ||
@@ -81,3 +83,3 @@ for (const existingSpaceName in spaces) { | ||
*/ | ||
function createConverter (fromSpace, toSpaceName) { | ||
function createConverter(fromSpace, toSpaceName) { | ||
//create xyz converter, if available | ||
@@ -93,3 +95,3 @@ if (fromSpace.xyz && spaces.xyz[toSpaceName]) | ||
return () => { | ||
throw new Error('Conversion not available'); | ||
throw new Error(`Conversion ${fromSpace.name} to ${toSpaceName} is not available`); | ||
} | ||
@@ -99,2 +101,2 @@ } | ||
// register all spaces by default | ||
[rgb, xyz, hsl, hsv, hsi, hwb, cmyk, cmy, xyy, yiq, yuv, ydbdr, ycgco, ypbpr, ycbcr, xvycc, yccbccrc, ucs, uvw, jpeg, lab, labh, lms, lchab, luv, lchuv, hsluv, hpluv, cubehelix, coloroid, hcg, hcy, tsl, yes, osaucs, hsp, hsm].map(register) | ||
[rgb, xyz, hsl, hsv, hsi, hwb, cmyk, cmy, xyy, yiq, yuv, ydbdr, ycgco, ypbpr, ycbcr, xvycc, yccbccrc, ucs, uvw, jpeg, lab, labh, lms, lchab, luv, lchuv, hsluv, hpluv, cubehelix, coloroid, hcg, hcy, tsl, yes, osaucs, hsp, hsm, lrgb, oklab].map(register) |
@@ -15,3 +15,3 @@ /** | ||
max: [255, 255, 255], | ||
channel: ['Y','Cb','Cr'], | ||
channel: ['Y', 'Cb', 'Cr'], | ||
alias: ['JPEG'] | ||
@@ -50,3 +50,3 @@ }; | ||
*/ | ||
rgb.jpeg = function(arr) { | ||
rgb.jpeg = function (arr) { | ||
var r = arr[0], g = arr[1], b = arr[2]; | ||
@@ -56,5 +56,5 @@ | ||
0.299 * r + 0.587 * g + 0.114 * b, | ||
128 - 0.168736 * r - 0.331264 * g + 0.5 * b, | ||
128 - 0.168736 * r - 0.331264 * g + 0.5 * b, | ||
128 + 0.5 * r - 0.418688 * g - 0.081312 * b | ||
] | ||
}; |
44
lab.js
@@ -15,38 +15,28 @@ /** | ||
alias: ['LAB', 'cielab'], | ||
} | ||
xyz: function (lab) { | ||
var l = lab[0], | ||
a = lab[1], | ||
b = lab[2], | ||
x, y, z, y2; | ||
lab.xyz = ([l, a, b]) => { | ||
var x, y, z, y2; | ||
if (l <= 8) { | ||
y = (l * 100) / 903.3; | ||
y2 = (7.787 * (y / 100)) + (16 / 116); | ||
} else { | ||
y = 100 * Math.pow((l + 16) / 116, 3); | ||
y2 = Math.pow(y / 100, 1 / 3); | ||
} | ||
if (l <= 8) { | ||
y = (l * 100) / 903.3; | ||
y2 = (7.787 * (y / 100)) + (16 / 116); | ||
} else { | ||
y = 100 * Math.pow((l + 16) / 116, 3); | ||
y2 = Math.pow(y / 100, 1 / 3); | ||
} | ||
//FIXME x is undefined! | ||
//@ts-ignore | ||
x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); | ||
x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); | ||
//FIXME z is undefined! | ||
//@ts-ignore | ||
z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); | ||
z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); | ||
return [x, y, z]; | ||
} | ||
}; | ||
return [x, y, z]; | ||
} | ||
export default (lab); | ||
//extend xyz | ||
xyz.lab = function (xyz) { | ||
var x = xyz[0], | ||
y = xyz[1], | ||
z = xyz[2], | ||
l, a, b; | ||
xyz.lab = ([x, y, z]) => { | ||
var l, a, b; | ||
@@ -53,0 +43,0 @@ x /= 95.047; |
24
lchab.js
@@ -13,16 +13,16 @@ /** | ||
name: 'lchab', | ||
min: [0,0,0], | ||
max: [100,100,360], | ||
min: [0, 0, 0], | ||
max: [100, 100, 360], | ||
channel: ['lightness', 'chroma', 'hue'], | ||
alias: ['LCHab', 'cielch', 'LCH', 'HLC', 'LSH'], | ||
xyz: function(arg) { | ||
xyz: function (arg) { | ||
return lab.xyz(lchab.lab(arg)); | ||
}, | ||
lab: function(lch) { | ||
lab: function (lch) { | ||
var l = lch[0], | ||
c = lch[1], | ||
h = lch[2], | ||
a, b, hr; | ||
c = lch[1], | ||
h = lch[2], | ||
a, b, hr; | ||
@@ -38,7 +38,7 @@ hr = h / 360 * 2 * Math.PI; | ||
//extend lab | ||
lab.lchab = function(lab) { | ||
lab.lchab = function (lab) { | ||
var l = lab[0], | ||
a = lab[1], | ||
b = lab[2], | ||
hr, h, c; | ||
a = lab[1], | ||
b = lab[2], | ||
hr, h, c; | ||
@@ -54,3 +54,3 @@ hr = Math.atan2(b, a); | ||
xyz.lchab = function(arg){ | ||
xyz.lchab = function (arg) { | ||
return lab.lchab(xyz.lab(arg)); | ||
@@ -57,0 +57,0 @@ }; |
54
lms.js
@@ -17,4 +17,4 @@ /** | ||
name: 'lms', | ||
min: [0,0,0], | ||
max: [100,100,100], | ||
min: [0, 0, 0], | ||
max: [100, 100, 100], | ||
channel: ['long', 'medium', 'short'], | ||
@@ -26,24 +26,24 @@ | ||
HPE: [ | ||
0.38971, 0.68898,-0.07868, | ||
-0.22981, 1.18340, 0.04641, | ||
0.38971, 0.68898, -0.07868, | ||
-0.22981, 1.18340, 0.04641, | ||
0.00000, 0.00000, 1.00000], | ||
VONKRIES: [ | ||
0.4002, 0.7076, -0.0808, | ||
-0.2263, 1.1653, 0.0457, | ||
0.00000,0.00000, 0.9182], | ||
-0.2263, 1.1653, 0.0457, | ||
0.00000, 0.00000, 0.9182], | ||
BFD: [ | ||
0.8951, 0.2664,-0.1614, | ||
-0.7502, 1.7135, 0.0367, | ||
0.0389,-0.0686, 1.0296], | ||
0.8951, 0.2664, -0.1614, | ||
-0.7502, 1.7135, 0.0367, | ||
0.0389, -0.0686, 1.0296], | ||
CAT97: [ | ||
0.8562, 0.3372,-0.1934, | ||
-0.8360, 1.8327, 0.0033, | ||
0.0357,-0.00469,1.0112], | ||
0.8562, 0.3372, -0.1934, | ||
-0.8360, 1.8327, 0.0033, | ||
0.0357, -0.00469, 1.0112], | ||
CAT00: [ | ||
0.7982, 0.3389,-0.1371, | ||
-0.5918, 1.5512, 0.0406, | ||
0.7982, 0.3389, -0.1371, | ||
-0.5918, 1.5512, 0.0406, | ||
0.0008, 0.0239, 0.9753], | ||
CAT02: [ | ||
0.7328, 0.4296,-0.1624, | ||
-0.7036, 1.6975, 0.0061, | ||
0.7328, 0.4296, -0.1624, | ||
-0.7036, 1.6975, 0.0061, | ||
0.0030, 0.0136, 0.9834] | ||
@@ -55,3 +55,3 @@ } | ||
lms.xyz = function(arg, matrix){ | ||
lms.xyz = function (arg, matrix) { | ||
var l = arg[0], m = arg[1], s = arg[2]; | ||
@@ -74,14 +74,14 @@ | ||
xyz.lms = function(arg, matrix) { | ||
var x = arg[0], y = arg[1], z = arg[2]; | ||
xyz.lms = function (arg, matrix) { | ||
var x = arg[0], y = arg[1], z = arg[2]; | ||
if (!matrix) { | ||
matrix = lms.matrix.CAT02 | ||
} | ||
if (!matrix) { | ||
matrix = lms.matrix.CAT02 | ||
} | ||
return [ | ||
x * matrix[0] + y * matrix[1] + z * matrix[2], | ||
x * matrix[3] + y * matrix[4] + z * matrix[5], | ||
x * matrix[6] + y * matrix[7] + z * matrix[8] | ||
]; | ||
return [ | ||
x * matrix[0] + y * matrix[1] + z * matrix[2], | ||
x * matrix[3] + y * matrix[4] + z * matrix[5], | ||
x * matrix[6] + y * matrix[7] + z * matrix[8] | ||
]; | ||
}; |
@@ -20,8 +20,8 @@ /** | ||
var a,t,v; | ||
var a, t, v; | ||
//coloroid chroma / munsell chroma | ||
t = kav * Math.pow(c, 2/3); | ||
t = kav * Math.pow(c, 2 / 3); | ||
v = 10 * Math.sqrt(1.2219*vm - 0.23111*vm*vm + 0.23951*vm*vm*vm - 0.021009*vm*vm*vm*vm + 0.0008404*vm*vm*vm*vm*vm); | ||
v = 10 * Math.sqrt(1.2219 * vm - 0.23111 * vm * vm + 0.23951 * vm * vm * vm - 0.021009 * vm * vm * vm * vm + 0.0008404 * vm * vm * vm * vm * vm); | ||
}; | ||
@@ -28,0 +28,0 @@ |
@@ -46,23 +46,23 @@ /** | ||
//FIXME: there might be a typo, wiki states 1.8103 as a constant value | ||
var K = 4.4934*x*x + 4.3034*y*y - 4.276*x*y - 1.3744*x - 2.56439*y + 1.8103; | ||
var Y0 = K*Y; | ||
var K = 4.4934 * x * x + 4.3034 * y * y - 4.276 * x * y - 1.3744 * x - 2.56439 * y + 1.8103; | ||
var Y0 = K * Y; | ||
var L_ = 5.9*(Math.pow(Y0, 1/3) - 2/3 + 0.042*Math.pow(Math.max(Y0, 30) - 30, 1/3)); | ||
var L_ = 5.9 * (Math.pow(Y0, 1 / 3) - 2 / 3 + 0.042 * Math.pow(Math.max(Y0, 30) - 30, 1 / 3)); | ||
var L = (L_ - 14.3993) / Math.sqrt(2); | ||
var C = L_ / (5.9 * (Math.pow(Y0, 1/3) - 2/3)); | ||
var C = L_ / (5.9 * (Math.pow(Y0, 1 / 3) - 2 / 3)); | ||
var R = 0.7790*X + 0.4194*Y - 0.1648*Z; | ||
var G = -0.4493*X + 1.3265*Y + 0.0927*Z; | ||
var B = -0.1149*X + 0.3394*Y + 0.7170*Z; | ||
var R = 0.7790 * X + 0.4194 * Y - 0.1648 * Z; | ||
var G = -0.4493 * X + 1.3265 * Y + 0.0927 * Z; | ||
var B = -0.1149 * X + 0.3394 * Y + 0.7170 * Z; | ||
R = Math.pow(R, 1/3) || 0; | ||
G = Math.pow(G, 1/3) || 0; | ||
B = Math.pow(B, 1/3) || 0; | ||
R = Math.pow(R, 1 / 3) || 0; | ||
G = Math.pow(G, 1 / 3) || 0; | ||
B = Math.pow(B, 1 / 3) || 0; | ||
var a = -13.7*R + 17.7*G - 4*B; | ||
var b = 1.7*R + 8*G - 9.7*B; | ||
var a = -13.7 * R + 17.7 * G - 4 * B; | ||
var b = 1.7 * R + 8 * G - 9.7 * B; | ||
var g = C*a; | ||
var j = C*b; | ||
var g = C * a; | ||
var j = C * b; | ||
@@ -69,0 +69,0 @@ //polar form |
{ | ||
"name": "color-space", | ||
"description": "Collection of color space conversions", | ||
"version": "2.3.0", | ||
"version": "2.3.1", | ||
"author": "Dmitry Ivanov <df.creative@gmail.com>", | ||
@@ -10,22 +10,49 @@ "type": "module", | ||
"colour", | ||
"color-space", | ||
"gamut", | ||
"color-convert", | ||
"color-conversion", | ||
"color-conversions", | ||
"color-translation", | ||
"color-math", | ||
"color-data", | ||
"rgb", | ||
"xyz", | ||
"hsl", | ||
"hsv", | ||
"hsi", | ||
"hwb", | ||
"cmyk", | ||
"cmy", | ||
"xyy", | ||
"yiq", | ||
"yuv", | ||
"ydbdr", | ||
"ycgco", | ||
"ypbpr", | ||
"ycbcr", | ||
"xvycc", | ||
"yccbccrc", | ||
"ucs", | ||
"uvw", | ||
"jpeg", | ||
"lab", | ||
"labh", | ||
"lms", | ||
"lchab", | ||
"luv", | ||
"lch", | ||
"cie", | ||
"lchuv", | ||
"hsluv", | ||
"husl", | ||
"color-convert", | ||
"gamut", | ||
"color-conversions", | ||
"color-space", | ||
"color-translation", | ||
"color-data", | ||
"hpluv", | ||
"cubehelix", | ||
"coloroid", | ||
"cubehelix", | ||
"munsell", | ||
"hcg", | ||
"hsp" | ||
"hcy", | ||
"tsl", | ||
"yes", | ||
"osaucs", | ||
"hsp", | ||
"hsm", | ||
"lrgb", | ||
"oklab" | ||
], | ||
@@ -178,6 +205,6 @@ "repository": { | ||
], | ||
"rgb.js": [ | ||
"rgb": [ | ||
"./types/rgb.d.ts" | ||
], | ||
"rgb.js.js": [ | ||
"rgb.js": [ | ||
"./types/rgb.d.ts" | ||
@@ -272,7 +299,8 @@ ], | ||
"devDependencies": { | ||
"color-name": "^2.0.0", | ||
"esbuild": "^0.24.2", | ||
"tst": "^8.0.1" | ||
"tst": "^8.0.2" | ||
}, | ||
"scripts": { | ||
"test": "uvu test", | ||
"test": "node test", | ||
"build": "esbuild ./index.js --bundle --format=esm --outfile=dist/color-space.js", | ||
@@ -279,0 +307,0 @@ "min": "esbuild ./dist/color-space.js --minify --outfile=dist/color-space.min.js", |
@@ -5,3 +5,3 @@ # Color-space [![test](https://github.com/colorjs/color-space/actions/workflows/test.yml/badge.svg)](https://github.com/colorjs/color-space/actions/workflows/test.yml) [![stable](https://img.shields.io/badge/stability-stable-brightgreen.svg)](http://github.com/badges/stability-badges) [![npm](https://img.shields.io/npm/v/color-space)](https://npmjs.org/color-space) [![size](https://img.shields.io/bundlephobia/minzip/color-space/latest)](https://bundlephobia.com/package/color-space) | ||
Collection of color spaces conversions & data. | ||
Open collection of color spaces. | ||
@@ -27,3 +27,3 @@ [Demo](http://colorjs.github.io/color-space). | ||
//convert rgb to hsl | ||
rgb.hsl([200,230,100]); | ||
rgb.hsl([200, 230, 100]); | ||
``` | ||
@@ -43,6 +43,5 @@ <!-- | ||
<space>.name //space name | ||
<space>.channel //channel names | ||
<space>.min //channel minimums | ||
<space>.max //channel maximums | ||
<space>.channel //channel names | ||
<space>.alias //alias space names | ||
``` | ||
@@ -52,4 +51,5 @@ | ||
* [x] [RGB](https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_RGB_colour_space) — additive color model based on red, green and blue primary colors. | ||
* [x] [HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) — cylindrical-coordinates representation of RGB. | ||
* [x] [RGB](https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_RGB_colour_space) — sRGB | ||
* [x] [LRGB](https://en.wikipedia.org/wiki/SRGB#Transfer_function_("gamma")) – linear light sRGB | ||
* [x] [HSL](https://en.wikipedia.org/wiki/HSL_and_HSV) — cylindrical-coordinates sRGB | ||
* [x] [HSV, HSB](https://en.wikipedia.org/wiki/HSL_and_HSV) | ||
@@ -68,3 +68,3 @@ * [x] [HWB](http://dev.w3.org/csswg/css-color/#the-hwb-notation) | ||
* [x] [HPL<sub>uv</sub>](http://www.hsluv.org/) | ||
* [x] [LAB<sub>Hunter</sub>](http://en.wikipedia.org/wiki/Lab_color_space#Hunter_Lab) | ||
* [x] [LAB<sub>H</sub>](http://en.wikipedia.org/wiki/Lab_color_space#Hunter_Lab) | ||
* [x] [YUV](https://en.wikipedia.org/?title=YUV) | ||
@@ -81,2 +81,3 @@ * [x] [YIQ](https://en.wikipedia.org/?title=YIQ) | ||
* [x] [UVW](https://en.wikipedia.org/wiki/CIE_1964_color_space) | ||
* [x] [OKLAB](https://bottosson.github.io/posts/oklab/) | ||
* [ ] [Munsell](https://en.wikipedia.org/wiki/Munsell_color_system) | ||
@@ -107,19 +108,21 @@ * [ ] [NCS](https://en.wikipedia.org/wiki/Natural_Color_System) | ||
* [ ] [CIE DSH](https://en.wikipedia.org/wiki/Rg_chromaticity) | ||
* [x] [HSM](http://seer.ufrgs.br/rita/article/viewFile/rita_v16_n2_p141/7428) (fixed) | ||
* [x] [HSM](http://seer.ufrgs.br/rita/article/viewFile/rita_v16_n2_p141/7428) | ||
## Contribute | ||
Please fork, add color space with basic _conversions_ to/from XYZ or RGB and _tests_. | ||
The goal of the project is the most complete set of color spaces with minimal uniform API. | ||
## Purpose | ||
A complete collection of color spaces with minimal consistent and clean API, verified formulas and cases. | ||
While alternatives focus on digital color spaces, this project takes broader perspective, including historical / multidisciplinary spaces. | ||
A side effect is verifying and correcting papers. | ||
## Credits | ||
Thanks to all scientists, who devoted their time to color research and conveyed their knowledge, for now we can use their formulas and code. | ||
Thanks to all who contribute to color science – researchers, scientists, color theorists, specifiers, implementors, developers, and users. | ||
## Similar | ||
[culori](https://github.com/Evercoder/culori), [colorjs.io](https://colorjs.io/docs/procedural), [color-api](https://github.com/LeaVerou/color-api), [texel/color](https://github.com/texel-org/color?tab=readme-ov-file), | ||
<!-- | ||
## See also | ||
* [texel/color](https://github.com/texel-org/color?tab=readme-ov-file) | ||
* [colorjs.io](https://colorjs.io/docs/procedural) | ||
* [color-convert](https://github.com/harthur/color-convert) | ||
@@ -129,4 +132,4 @@ * [chromatist](https://github.com/jrus/chromatist) | ||
* [colorspaces.js](https://github.com/boronine/colorspaces.js) | ||
* [color-api](https://github.com/LeaVerou/color-api) - color API proposal by Lea Verou | ||
--> | ||
<p align="center"><a href="https://github.com/krsnzd/license/">🕉</a></p> |
24
tsl.js
@@ -13,5 +13,5 @@ /** | ||
name: 'tsl', | ||
min: [0,0,0], | ||
min: [0, 0, 0], | ||
max: [1, 1, 1], | ||
channel: ['tint','saturation','lightness'], | ||
channel: ['tint', 'saturation', 'lightness'], | ||
alias: ['TSL'], | ||
@@ -29,3 +29,3 @@ }; | ||
*/ | ||
tsl.rgb = function(tsl) { | ||
tsl.rgb = function (tsl) { | ||
var T = tsl[0], | ||
@@ -48,7 +48,7 @@ S = tsl[1], | ||
var x = Math.tan(2 * Math.PI * (T - 1/4)); | ||
var x = Math.tan(2 * Math.PI * (T - 1 / 4)); | ||
x *= x; | ||
var r = Math.sqrt(5 * S*S / (9 * (1/x + 1))) + 1/3; | ||
var g = Math.sqrt(5 * S*S / (9 * (x + 1))) + 1/3; | ||
var r = Math.sqrt(5 * S * S / (9 * (1 / x + 1))) + 1 / 3; | ||
var g = Math.sqrt(5 * S * S / (9 * (x + 1))) + 1 / 3; | ||
@@ -74,12 +74,12 @@ var k = L / (.185 * r + .473 * g + .114); | ||
*/ | ||
rgb.tsl = function(rgb) { | ||
rgb.tsl = function (rgb) { | ||
var [r, g, b] = rgb; | ||
var r_ = (r / (r + g + b) || 0) - 1/3, | ||
g_ = (g / (r + g + b) || 0) - 1/3, | ||
T = g_ != 0 ? 0.5 - Math.atan2(g_, r_) / 2 / Math.PI : 0, | ||
S = Math.sqrt(9/5 * (r_*r_ + g_*g_)), | ||
L = ((r * 0.299) + (g * 0.587) + (b * 0.114)) / 255; | ||
var r_ = (r / (r + g + b) || 0) - 1 / 3, | ||
g_ = (g / (r + g + b) || 0) - 1 / 3, | ||
T = g_ != 0 ? 0.5 - Math.atan2(g_, r_) / 2 / Math.PI : 0, | ||
S = Math.sqrt(9 / 5 * (r_ * r_ + g_ * g_)), | ||
L = ((r * 0.299) + (g * 0.587) + (b * 0.114)) / 255; | ||
return [T, S, L]; | ||
}; |
@@ -20,5 +20,7 @@ import cmy from './cmy'; | ||
import lms from './lms'; | ||
import lrgb from './lrgb'; | ||
import luv from './luv'; | ||
import munsell from './munsell'; | ||
import osaucs from './osaucs'; | ||
import oklab from './oklab'; | ||
import rgb from './rgb'; | ||
@@ -61,4 +63,6 @@ import tsl from './tsl'; | ||
luv: typeof luv; | ||
lrgb: typeof lrgb; | ||
munsell: typeof munsell; | ||
osaucs: typeof osaucs; | ||
oklab: typeof oklab; | ||
rgb: typeof rgb; | ||
@@ -116,4 +120,6 @@ tsl: typeof tsl; | ||
declare module './luv' { interface LuvSpace extends Transforms {}} | ||
declare module './lrgb' { interface LrgbSpace extends Transforms {}} | ||
declare module './munsell' { interface MunsellSpace extends Transforms {}} | ||
declare module './osaucs' { interface OsaucsSpace extends Transforms {}} | ||
declare module './oklab' { interface OklabSpace extends Transforms {}} | ||
declare module './rgb' { interface RgbSpace extends Transforms {}} | ||
@@ -120,0 +126,0 @@ declare module './tsl' { interface TslSpace extends Transforms {}} |
12
ucs.js
@@ -12,5 +12,5 @@ /** | ||
name: 'ucs', | ||
min: [0,0,0], | ||
min: [0, 0, 0], | ||
max: [100, 100, 100], | ||
channel: ['U','V','W'], | ||
channel: ['U', 'V', 'W'], | ||
alias: ['UCS', 'cie1960'] | ||
@@ -28,3 +28,3 @@ }; | ||
*/ | ||
ucs.xyz = function(ucs) { | ||
ucs.xyz = function (ucs) { | ||
var u = ucs[0], | ||
@@ -49,3 +49,3 @@ v = ucs[1], | ||
*/ | ||
xyz.ucs = function(xyz) { | ||
xyz.ucs = function (xyz) { | ||
var x = xyz[0], | ||
@@ -56,6 +56,6 @@ y = xyz[1], | ||
return [ | ||
x * 2/3, | ||
x * 2 / 3, | ||
y, | ||
0.5 * (-x + 3*y + z) | ||
0.5 * (-x + 3 * y + z) | ||
]; | ||
}; |
10
uvw.js
@@ -15,3 +15,3 @@ /** | ||
max: [224, 122, 100], | ||
channel: ['U','V','W'], | ||
channel: ['U', 'V', 'W'], | ||
alias: ['UVW', 'cieuvw', 'cie1964'] | ||
@@ -29,3 +29,3 @@ }; | ||
if (w === 0) return [0,0,0]; | ||
if (w === 0) return [0, 0, 0]; | ||
@@ -78,3 +78,3 @@ //get illuminant/observer | ||
//calc values | ||
var w = 25 * Math.pow(y, 1/3) - 17; | ||
var w = 25 * Math.pow(y, 1 / 3) - 17; | ||
var u = 13 * w * (_u - un); | ||
@@ -95,3 +95,3 @@ var v = 13 * w * (_v - vn); | ||
*/ | ||
uvw.ucs = function(uvw) { | ||
uvw.ucs = function (uvw) { | ||
//find chromacity variables | ||
@@ -109,3 +109,3 @@ throw new Error('Not implemented'); | ||
*/ | ||
ucs.uvw = function(ucs) { | ||
ucs.uvw = function (ucs) { | ||
// //find chromacity variables | ||
@@ -112,0 +112,0 @@ // var u = U / (U + V + W); |
@@ -25,3 +25,3 @@ /** | ||
max: [255, 255, 255], | ||
channel: ['Y','Cb','Cr'], | ||
channel: ['Y', 'Cb', 'Cr'], | ||
alias: ['xvYCC'], | ||
@@ -84,4 +84,4 @@ /** | ||
*/ | ||
rgb.xvycc = function(arr, kb, kr) { | ||
rgb.xvycc = function (arr, kb, kr) { | ||
return ypbpr.xvycc(rgb.ypbpr(arr, kb, kr)); | ||
}; |
10
xyy.js
@@ -10,9 +10,9 @@ /** | ||
name: 'xyy', | ||
min: [0,0,0], | ||
max: [1,1,100], | ||
channel: ['x','y','Y'], | ||
min: [0, 0, 0], | ||
max: [1, 1, 100], | ||
channel: ['x', 'y', 'Y'], | ||
alias: ['xyY', 'Yxy', 'yxy'] | ||
}; | ||
xyy.xyz = function(arg) { | ||
xyy.xyz = function (arg) { | ||
var X, Y, Z, x, y; | ||
@@ -28,3 +28,3 @@ x = arg[0]; y = arg[1]; Y = arg[2]; | ||
xyz.xyy = function(arg) { | ||
xyz.xyy = function (arg) { | ||
var sum, X, Y, Z; | ||
@@ -31,0 +31,0 @@ X = arg[0]; Y = arg[1]; Z = arg[2]; |
@@ -117,3 +117,3 @@ /** | ||
*/ | ||
rgb.xyz = function(rgb, white) { | ||
rgb.xyz = function (rgb, white) { | ||
var r = rgb[0] / 255, | ||
@@ -120,0 +120,0 @@ g = rgb[1] / 255, |
@@ -16,3 +16,3 @@ /** | ||
max: [235, 240, 240], | ||
channel: ['Y','Cb','Cr'], | ||
channel: ['Y', 'Cb', 'Cr'], | ||
alias: ['YCbCr', 'YCC'], | ||
@@ -75,3 +75,3 @@ /** | ||
*/ | ||
rgb.ycbcr = function(arr, kb, kr) { | ||
rgb.ycbcr = function (arr, kb, kr) { | ||
return ypbpr.ycbcr(rgb.ypbpr(arr, kb, kr)); | ||
@@ -78,0 +78,0 @@ }; |
@@ -13,3 +13,3 @@ /** | ||
max: [1, 0.5, 0.5], | ||
channel: ['Yc','Cbc','Crc'], | ||
channel: ['Yc', 'Cbc', 'Crc'], | ||
alias: ['YcCbcCrc'] | ||
@@ -26,3 +26,3 @@ }; | ||
*/ | ||
yccbccrc.rgb = function(yccbccrc) { | ||
yccbccrc.rgb = function (yccbccrc) { | ||
return ypbpr.rgb(yccbccrc, 0.0593, 0.2627); | ||
@@ -39,3 +39,3 @@ }; | ||
*/ | ||
rgb.yccbccrc = function(arr) { | ||
rgb.yccbccrc = function (arr) { | ||
return rgb.ypbpr(arr, 0.0593, 0.2627); | ||
@@ -42,0 +42,0 @@ }; |
18
ycgco.js
@@ -13,3 +13,3 @@ /** | ||
max: [1, 0.5, 0.5], | ||
channel: ['Y','Cg','Co'], | ||
channel: ['Y', 'Cg', 'Co'], | ||
alias: ['YCgCo'] | ||
@@ -33,5 +33,5 @@ }; | ||
return [ | ||
(tmp + co)*255, | ||
(y + cg)*255, | ||
(tmp - co)*255 | ||
(tmp + co) * 255, | ||
(y + cg) * 255, | ||
(tmp - co) * 255 | ||
]; | ||
@@ -49,9 +49,9 @@ }; | ||
*/ | ||
rgb.ycgco = function(arr) { | ||
var r = arr[0]/255, g = arr[1]/255, b = arr[2]/255; | ||
rgb.ycgco = function (arr) { | ||
var r = arr[0] / 255, g = arr[1] / 255, b = arr[2] / 255; | ||
return [ | ||
0.25*r + 0.5*g + 0.25*b, | ||
-0.25*r + 0.5*g - 0.25*b, | ||
0.5*r - 0.5*b | ||
0.25 * r + 0.5 * g + 0.25 * b, | ||
-0.25 * r + 0.5 * g - 0.25 * b, | ||
0.5 * r - 0.5 * b | ||
]; | ||
@@ -58,0 +58,0 @@ }; |
26
ydbdr.js
@@ -13,5 +13,5 @@ /** | ||
name: 'ydbdr', | ||
min: [0,-1.333,-1.333], | ||
min: [0, -1.333, -1.333], | ||
max: [1, 1.333, 1.333], | ||
channel: ['Y','Db','Dr'], | ||
channel: ['Y', 'Db', 'Dr'], | ||
alias: ['YDbDr'] | ||
@@ -28,10 +28,10 @@ }; | ||
*/ | ||
ydbdr.rgb = function(ydbdr) { | ||
ydbdr.rgb = function (ydbdr) { | ||
var y = ydbdr[0], db = ydbdr[1], dr = ydbdr[2]; | ||
var r = y + 0.000092303716148*db - 0.525912630661865*dr; | ||
var g = y - 0.129132898890509*db + 0.267899328207599*dr; | ||
var b = y + 0.664679059978955*db - 0.000079202543533*dr; | ||
var r = y + 0.000092303716148 * db - 0.525912630661865 * dr; | ||
var g = y - 0.129132898890509 * db + 0.267899328207599 * dr; | ||
var b = y + 0.664679059978955 * db - 0.000079202543533 * dr; | ||
return [r*255, g*255, b*255]; | ||
return [r * 255, g * 255, b * 255]; | ||
}; | ||
@@ -47,8 +47,8 @@ | ||
*/ | ||
rgb.ydbdr = function(rgb) { | ||
var r = rgb[0]/255, g = rgb[1]/255, b = rgb[2]/255; | ||
rgb.ydbdr = function (rgb) { | ||
var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255; | ||
return [ | ||
0.299*r + 0.587*g + 0.114*b, | ||
-0.450*r - 0.883*g + 1.333*b, | ||
-1.333*r + 1.116*g + 0.217*b | ||
0.299 * r + 0.587 * g + 0.114 * b, | ||
-0.450 * r - 0.883 * g + 1.333 * b, | ||
-1.333 * r + 1.116 * g + 0.217 * b | ||
]; | ||
@@ -63,3 +63,3 @@ }; | ||
return [ | ||
yuv[0], 3.059*yuv[1], -2.169*yuv[2] | ||
yuv[0], 3.059 * yuv[1], -2.169 * yuv[2] | ||
] | ||
@@ -66,0 +66,0 @@ }; |
10
yes.js
@@ -12,8 +12,8 @@ /** | ||
name: 'yes', | ||
min: [0,0,0], | ||
max: [1,1,1], | ||
min: [0, 0, 0], | ||
max: [1, 1, 1], | ||
channel: ['luminance', 'e-factor', 's-factor'] | ||
}; | ||
yes.rgb = function(arg){ | ||
yes.rgb = function (arg) { | ||
var y = arg[0], e = arg[1], s = arg[2]; | ||
@@ -31,6 +31,6 @@ | ||
return [r*255, g*255, b*255]; | ||
return [r * 255, g * 255, b * 255]; | ||
}; | ||
rgb.yes = function(arg) { | ||
rgb.yes = function (arg) { | ||
var r = arg[0] / 255, g = arg[1] / 255, b = arg[2] / 255; | ||
@@ -37,0 +37,0 @@ |
10
yiq.js
@@ -10,9 +10,9 @@ /** | ||
name: 'yiq', | ||
min: [0,-0.5957,-0.5226], | ||
min: [0, -0.5957, -0.5226], | ||
max: [1, 0.5957, 0.5226], | ||
channel: ['Y','I','Q'], | ||
channel: ['Y', 'I', 'Q'], | ||
alias: ['YIQ'] | ||
}); | ||
yiq.rgb = function(yiq) { | ||
yiq.rgb = function (yiq) { | ||
var y = yiq[0], | ||
@@ -23,3 +23,3 @@ i = yiq[1], | ||
r = (y * 1) + (i * 0.956) + (q * 0.621); | ||
r = (y * 1) + (i * 0.956) + (q * 0.621); | ||
g = (y * 1) + (i * -0.272) + (q * -0.647); | ||
@@ -37,3 +37,3 @@ b = (y * 1) + (i * -1.108) + (q * 1.705); | ||
//extend rgb | ||
rgb.yiq = function(rgb) { | ||
rgb.yiq = function (rgb) { | ||
var r = rgb[0] / 255, | ||
@@ -40,0 +40,0 @@ g = rgb[1] / 255, |
14
ypbpr.js
@@ -15,5 +15,5 @@ /** | ||
name: 'ypbpr', | ||
min: [0,-0.5,-0.5], | ||
min: [0, -0.5, -0.5], | ||
max: [1, 0.5, 0.5], | ||
channel: ['Y','Pb','Pr'], | ||
channel: ['Y', 'Pb', 'Pr'], | ||
alias: ['YPbPr', 'Y/PB/PR', 'YPRPB', 'PRPBY', 'PBPRY', 'Y/Pb/Pr', 'YPrPb', 'PrPbY', 'PbPrY', 'Y/R-Y/B-Y', 'Y(R-Y)(B-Y)', 'R-Y', 'B-Y'] | ||
@@ -31,3 +31,3 @@ }); | ||
*/ | ||
ypbpr.rgb = function(ypbpr, kb, kr) { | ||
ypbpr.rgb = function (ypbpr, kb, kr) { | ||
var y = ypbpr[0], pb = ypbpr[1], pr = ypbpr[2]; | ||
@@ -43,3 +43,3 @@ | ||
return [r*255,g*255,b*255]; | ||
return [r * 255, g * 255, b * 255]; | ||
}; | ||
@@ -56,4 +56,4 @@ | ||
*/ | ||
rgb.ypbpr = function(rgb, kb, kr) { | ||
var r = rgb[0]/255, g = rgb[1]/255, b = rgb[2]/255; | ||
rgb.ypbpr = function (rgb, kb, kr) { | ||
var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255; | ||
@@ -64,3 +64,3 @@ //ITU-R BT.709 | ||
var y = kr*r + (1 - kr - kb)*g + kb*b; | ||
var y = kr * r + (1 - kr - kb) * g + kb * b; | ||
var pb = 0.5 * (b - y) / (1 - kb); | ||
@@ -67,0 +67,0 @@ var pr = 0.5 * (r - y) / (1 - kr); |
10
yuv.js
@@ -10,9 +10,9 @@ /** | ||
name: 'yuv', | ||
min: [0,-0.5,-0.5], | ||
min: [0, -0.5, -0.5], | ||
max: [1, 0.5, 0.5], | ||
channel: ['Y','U','V'], | ||
channel: ['Y', 'U', 'V'], | ||
alias: ['YUV', 'EBU'], | ||
}); | ||
yuv.rgb = function(yuv) { | ||
yuv.rgb = function (yuv) { | ||
var y = yuv[0], | ||
@@ -23,3 +23,3 @@ u = yuv[1], | ||
r = (y * 1) + (u * 0) + (v * 1.13983); | ||
r = (y * 1) + (u * 0) + (v * 1.13983); | ||
g = (y * 1) + (u * -0.39465) + (v * -0.58060); | ||
@@ -37,3 +37,3 @@ b = (y * 1) + (u * 2.02311) + (v * 0); | ||
//extend rgb | ||
rgb.yuv = function(rgb) { | ||
rgb.yuv = function (rgb) { | ||
var r = rgb[0] / 255, | ||
@@ -40,0 +40,0 @@ g = rgb[1] / 255, |
197222
91
5489
128
3