cie-colorconverter
Version:
Convert between CIE color spaces
2 lines • 10.2 kB
JavaScript
var p={REF_WHITE:"D50",RGB_MODEL:"sRGB",GAMMA_MODEL:"sRGB",ADAPTION:"Bradford"},L=216/24389,E=24389/27;var _=class{};_.transpose=e=>{var m;let t=e.length||0,o=(m=e[0])==null?void 0:m.length,i=z();for(let n=0;n<t;n++)for(let T=0;T<o;T++)i[T][n]=e[n][T];return i},_.inv=e=>{let t=z(),[[o,i,m],[n,T,c],[u,s,l]]=e,x=o*T*l-o*c*s-i*n*l+i*c*u+m*n*s-m*T*u;if(x===0)throw new Error("Matrix not invertible");let a=1/x;return t[0][0]=a*(T*l-c*s),t[0][1]=a*(m*s-i*l),t[0][2]=a*(i*c-m*T),t[1][0]=a*(c*u-n*l),t[1][1]=a*(o*l-m*u),t[1][2]=a*(m*n-o*c),t[2][0]=a*(n*s-T*u),t[2][1]=a*(i*u-o*s),t[2][2]=a*(o*T-i*n),t},_.multiply_3x3_times_triple=(e,t)=>{let[[o,i,m],[n,T,c],[u,s,l]]=e,[x,a,R]=t;return[o*x+i*a+m*R,n*x+T*a+c*R,u*x+s*a+l*R]},_.multiply_triple_times_3x3=(e,t)=>{let[o,i,m]=e,[[n,T,c],[u,s,l],[x,a,R]]=t;return[n*o+u*i+x*m,T*o+s*i+a*m,c*o+l*i+R*m]},_.multiply_3x3_times_3x3=(e,t)=>{let[[o,i,m],[n,T,c],[u,s,l]]=e,[[x,a,R],[N,v,W],[h,Y,H]]=t;return[[o*x+i*N+m*h,o*a+i*v+m*Y,o*R+i*W+m*H],[n*x+T*N+c*h,n*a+T*v+c*Y,n*R+T*W+c*H],[u*x+s*N+l*h,u*a+s*v+l*Y,u*R+s*W+l*H]]};var z=()=>[[1,0,0],[0,1,0],[0,0,1]];var G=r=>q[r]||[1,1,1],q={A:[1.0985,1,.35585],B:[.99072,1,.85223],C:[.98074,1,1.18232],D50:[.96422,1,.82521],D55:[.95682,1,.92149],D65:[.95047,1,1.0888],D75:[.94972,1,1.22638],E:[1,1,1],F2:[.99186,1,.67393],F7:[.95041,1,1.08747],F11:[1.00962,1,.6435]};var F=r=>V[r]||[[1,0,0],[0,1,0],[0,0,1]],V={Bradford:[[.8951,-.7502,.0389],[.2664,1.7135,-.0685],[-.1614,.0367,1.0296]],"von Kries":[[.40024,-.2263,0],[.7076,1.16532,0],[-.08081,.0457,.91822]]};var P=r=>J[r],J={"Adobe RGB (1998)":[.95047,1,1.08883],AppleRGB:[.95047,1,1.08883],"Best RGB":[.96422,1,.82521],"Beta RGB":[.96422,1,.82521],"Bruce RGB":[.95047,1,1.08883],"CIE RGB":[1,1,1],"ColorMatch RGB":[.96422,1,.82521],"Don RGB 4":[.96422,1,.82521],"ECI RGB v2":[.96422,1,.82521],"Ekta Space PS5":[.96422,1,.82521],"NTSC RGB":[.98074,1,1.18232],"PAL/SECAM RGB":[.95047,1,1.08883],"ProPhoto RGB":[.96422,1,.82521],"SMPTE-C RGB":[.95047,1,1.08883],sRGB:[.95047,1,1.08883],"Wide Gamut RGB":[.96422,1,.82521]};var X=r=>{let e,t,o,i,m,n;switch(r){case"Adobe RGB (1998)":{[e,t,o,i,m,n]=[.64,.33,.21,.71,.15,.06];break}case"AppleRGB":{[e,t,o,i,m,n]=[.625,.34,.28,.595,.155,.07];break}case"Best RGB":{[e,t,o,i,m,n]=[.7347,.2653,.215,.775,.13,.035];break}case"Beta RGB":{[e,t,o,i,m,n]=[.6888,.3112,.1986,.7551,.1265,.0352];break}case"Bruce RGB":{[e,t,o,i,m,n]=[.64,.33,.28,.65,.15,.06];break}case"CIE RGB":{[e,t,o,i,m,n]=[.735,.265,.274,.717,.167,.009];break}case"ColorMatch RGB":{[e,t,o,i,m,n]=[.63,.34,.295,.605,.15,.075];break}case"Don RGB 4":{[e,t,o,i,m,n]=[.696,.3,.215,.765,.13,.035];break}case"ECI RGB v2":{[e,t,o,i,m,n]=[.67,.33,.21,.71,.14,.08];break}case"Ekta Space PS5":{[e,t,o,i,m,n]=[.695,.305,.26,.7,.11,.005];break}case"NTSC RGB":{[e,t,o,i,m,n]=[.67,.33,.21,.71,.14,.08];break}case"PAL/SECAM RGB":{[e,t,o,i,m,n]=[.64,.33,.29,.6,.15,.06];break}case"ProPhoto RGB":{[e,t,o,i,m,n]=[.7347,.2653,.1596,.8404,.0366,1e-4];break}case"SMPTE-C RGB":{[e,t,o,i,m,n]=[.63,.34,.31,.595,.155,.07];break}case"sRGB":{[e,t,o,i,m,n]=[.64,.33,.3,.6,.15,.06];break}case"Wide Gamut RGB":{[e,t,o,i,m,n]=[.735,.265,.115,.826,.157,.018];break}}let T=e/t,c=1,u=(1-e-t)/t,s=o/i,l=1,x=(1-o-i)/i,a=m/n,R=1,N=(1-m-n)/n,v=P(r),W=v[0],h=v[1],Y=v[2],[H,g,w]=_.multiply_3x3_times_triple(_.inv([[T,s,a],[c,l,R],[u,x,N]]),[W,h,Y]);return _.transpose([[H*T,g*s,w*a],[H*c,g*l,w*R],[H*u,g*x,w*N]])};var Z=r=>Q[r]||1,Q={"1.0":1,"1.8":1.8,"2.2":2.2,sRGB:-2.2,"L*":0};var K=(r,e)=>{let t=Z(e);if(t>0)return r>=0?Math.pow(r,1/t):-Math.pow(-r,1/t);if(t<0){let o=1;return r<0&&(o=-1,r=-r),o*(r<=.0031308?r*12.92:1.055*Math.pow(r,1/2.4)-.055)}else{let o=1;return r<0&&(o=-1,r=-r),o*(r<=216/24389?r*24389/2700:1.16*Math.pow(r,1/3)-.16)}};var C=r=>{let[e,t,o]=r,i=180/Math.PI*Math.atan2(o,t);return[e,Math.sqrt(Math.pow(t,2)+Math.pow(o,2)),i+(i>=0?0:360)]},D=(r,{refWhite:e=p.REF_WHITE}={})=>{let[t,o,i]=r,m=t>E*L?Math.pow((t+16)/116,3):t/E,n=G(e),T=n[0],c=n[1],u=n[2],s=T+15*c+3*u,l=9*c/s,x=4*T/s,a=m*(39*t/(i+13*t*l)-5),R=-1/3,N=-5*m,v=1/3*(52*t/(o+13*t*x)-1),W=(a-N)/(v-R),h=W*v+N;return[W,m,h]},vr=(r,{refWhite:e=p.REF_WHITE}={})=>B(D(r,{refWhite:e}),{refWhite:e}),$=(r,{refWhite:e=p.REF_WHITE}={})=>O(D(r,{refWhite:e}),{refWhite:e}),Cr=(r,{refWhite:e=p.REF_WHITE}={})=>y($(r,{refWhite:e})),Or=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>b(D(r,{refWhite:t}),{adaptation:e,refWhite:t,rgbModel:o,gammaModel:i});var O=(r,{refWhite:e=p.REF_WHITE}={})=>{let t=r[0],o=r[1],i=r[2],m=G(e),n=m[0],T=m[1],c=m[2],u=t/n,s=o/T,l=i/c,x=u>L?Math.pow(u,1/3):(E*u+16)/116,a=s>L?Math.pow(s,1/3):(E*s+16)/116,R=l>L?Math.pow(l,1/3):(E*l+16)/116;return[116*a-16,500*(x-a),200*(a-R)]},A=(r,{refWhite:e=p.REF_WHITE}={})=>{let[t,o,i]=r,m=G(e),n=m[0],T=m[1],c=m[2],u=t+15*o+3*i,s=u>0?4*t/u:0,l=u>0?9*o/u:0,x=4*n/(n+15*T+3*c),a=9*T/(n+15*T+3*c),R=o/T,N=R>L?116*Math.pow(R,1/3)-16:E*R;return[N,13*N*(s-x),13*N*(l-a)]},b=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>{let m=r,n=F(e);if(e!="None"){let[c,u,s]=_.multiply_triple_times_3x3(G(t),n),[l,x,a]=_.multiply_triple_times_3x3(P(o),n);m=_.multiply_triple_times_3x3(r,_.multiply_3x3_times_3x3(n,_.multiply_3x3_times_3x3([[l/c,0,0],[0,x/u,0],[0,0,a/s]],_.inv(n))))}return _.multiply_triple_times_3x3(m,_.inv(X(o))).map(c=>255*K(c,i))},B=(r,{refWhite:e=p.REF_WHITE}={})=>{let[t,o,i]=r,m=t+o+i;if(m>0)return[t/m,o/m,o];{let[n,T,c]=G(e),u=n+T+c;return[n/u,T/u,o]}},kr=(r,{refWhite:e=p.REF_WHITE}={})=>y(O(r,{refWhite:e})),Fr=(r,{refWhite:e=p.REF_WHITE}={})=>C(A(r,{refWhite:e}));var y=r=>{let[e,t,o]=r,i=180/Math.PI*Math.atan2(o,t);return[e,Math.sqrt(Math.pow(t,2)+Math.pow(o,2)),i+(i>=0?0:360)]},Sr=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>b(I(r,{refWhite:t}),{adaptation:e,refWhite:t,rgbModel:o,gammaModel:i}),I=(r,{refWhite:e=p.REF_WHITE}={})=>{let t=r[0],o=r[1],i=r[2],m=(t+16)/116,n=o/500+m,T=m-i/200,c=Math.pow(n,3)>L?Math.pow(n,3):(116*n-16)/E,u=t>E*L?Math.pow((t+16)/116,3):t/E,s=Math.pow(T,3)>L?Math.pow(T,3):(116*T-16)/E,l=G(e);return[c*l[0],u*l[1],s*l[2]]},Ur=(r,{refWhite:e=p.REF_WHITE}={})=>B(I(r,{refWhite:e}),{refWhite:e}),rr=(r,{refWhite:e=p.REF_WHITE}={})=>A(I(r,{refWhite:e}),{refWhite:e}),zr=(r,{refWhite:e=p.REF_WHITE}={})=>C(rr(r,{refWhite:e}));var d=r=>{let[e,t,o]=r;return[e,t*Math.cos(o*Math.PI/180),t*Math.sin(o*Math.PI/180)]},er=(r,{refWhite:e=p.REF_WHITE}={})=>I(d(r),{refWhite:e}),Qr=(r,{refWhite:e=p.REF_WHITE}={})=>B(I(d(r),{refWhite:e}),{refWhite:e}),tr=(r,{refWhite:e=p.REF_WHITE}={})=>A(I(d(r),{refWhite:e}),{refWhite:e}),$r=(r,{refWhite:e=p.REF_WHITE}={})=>C(tr(r,{refWhite:e})),re=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>b(er(r,{refWhite:t}),{adaptation:e,refWhite:t,rgbModel:o,gammaModel:i});var or=r=>{let[e,t,o]=r;return[e,t*Math.cos(o*Math.PI/180),t*Math.sin(o*Math.PI/180)]},S=(r,{refWhite:e=p.REF_WHITE}={})=>D(or(r),{refWhite:e}),me=(r,{refWhite:e=p.REF_WHITE}={})=>B(S(r,{refWhite:e}),{refWhite:e}),ir=(r,{refWhite:e=p.REF_WHITE}={})=>O(S(r,{refWhite:e}),{refWhite:e}),ne=(r,{refWhite:e=p.REF_WHITE}={})=>y(ir(r,{refWhite:e})),Te=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>b(S(r,{refWhite:t}),{adaptation:e,refWhite:t,rgbModel:o,gammaModel:i});var j=(r,e)=>{let t=Z(e);if(t>0)return r>=0?Math.pow(r,t):-Math.pow(-r,t);if(t<0){let o=1;return r<0&&(o=-1,r=-r),o*(r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4))}else{let o=1;return r<0&&(o=-1,r=-r),o*(r<=.08?2700*r/24389:(((1e6*r+48e4)*r+76800)*r+4096)/1560896)}};var U=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>{let m=F(e),n=P(t),T=G(i),c=X(t);r=r.map(s=>j(s/255,o));let u=_.multiply_triple_times_3x3(r,c);if(e!="None"){let[s,l,x]=_.multiply_triple_times_3x3(n,m),[a,R,N]=_.multiply_triple_times_3x3(T,m);return _.multiply_triple_times_3x3(u,_.multiply_3x3_times_3x3(m,_.multiply_3x3_times_3x3([[a/s,0,0],[0,R/l,0],[0,0,N/x]],_.inv(m))))}else return u},pr=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>O(U(r,{adaptation:e,rgbModel:t,gammaModel:o,refWhite:i}),{refWhite:i}),ve=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>B(U(r,{adaptation:e,rgbModel:t,refWhite:i,gammaModel:o}),{refWhite:i}),Ce=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>y(pr(r,{adaptation:e,rgbModel:t,refWhite:i,gammaModel:o})),mr=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>A(U(r,{adaptation:e,rgbModel:t,refWhite:i,gammaModel:o}),{refWhite:i}),Oe=(r,{adaptation:e=p.ADAPTION,rgbModel:t=p.RGB_MODEL,gammaModel:o=p.GAMMA_MODEL,refWhite:i=p.REF_WHITE}={})=>C(mr(r,{adaptation:e,rgbModel:t,refWhite:i,gammaModel:o}));var k=r=>{let[e,t,o]=r;return t<1e-6?[0,0,0]:[e*o/t,o,(1-e-t)*o/t]},Ie=(r,{refWhite:e=p.REF_WHITE}={})=>O(k(r),{refWhite:e}),Pe=(r,{refWhite:e=p.REF_WHITE}={})=>y(O(k(r),{refWhite:e})),Ye=(r,{refWhite:e=p.REF_WHITE}={})=>A(k(r),{refWhite:e}),De=(r,{refWhite:e=p.REF_WHITE}={})=>C(A(k(r),{refWhite:e})),ke=(r,{adaptation:e=p.ADAPTION,refWhite:t=p.REF_WHITE,rgbModel:o=p.RGB_MODEL,gammaModel:i=p.GAMMA_MODEL}={})=>b(k(r),{adaptation:e,rgbModel:o,refWhite:t,gammaModel:i});export{$r as LCHabToLCHuv,d as LCHabToLab,tr as LCHabToLuv,re as LCHabToRGB,er as LCHabToXYZ,Qr as LCHabToxyY,ne as LCHuvToLCHab,ir as LCHuvToLab,or as LCHuvToLuv,Te as LCHuvToRGB,S as LCHuvToXYZ,me as LCHuvToxyY,y as LabToLCHab,zr as LabToLCHuv,rr as LabToLuv,Sr as LabToRGB,I as LabToXYZ,Ur as LabToxyY,Cr as LuvToLCHab,C as LuvToLCHuv,$ as LuvToLab,Or as LuvToRGB,D as LuvToXYZ,vr as LuvToxyY,Ce as RGBToLCHab,Oe as RGBToLCHuv,pr as RGBToLab,mr as RGBToLuv,U as RGBToXYZ,ve as RGBToxyY,kr as XYZToLCHab,Fr as XYZToLCHuv,O as XYZToLab,A as XYZToLuv,b as XYZToRGB,B as XYZToxyY,Pe as xyYToLCHab,De as xyYToLCHuv,Ie as xyYToLab,Ye as xyYToLuv,ke as xyYToRGB,k as xyYToXYZ};
//# sourceMappingURL=index.mjs.map