dwv
Version:
DICOM Web Viewer.
2 lines • 11.8 kB
JavaScript
var e=function(){var e=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),n=4017,r=799,a=3406,t=2276,o=1567,i=3784,s=5793,c=2896,f=-2056,l=2024,u=255;function h(){}function v(e,n){for(var r,a,t=0,o=[],i=16;i>0&&!e[i-1];)i--;o.push({children:[],index:0});var s,c=o[0];for(r=0;r<i;r++){for(a=0;a<e[r];a++){for((c=o.pop()).children[c.index]=n[t];c.index>0;)c=o.pop();for(c.index++,o.push(c);o.length<=r;)o.push(s={children:[],index:0}),c.children[c.index]=s.children,c=s;t++}r+1<i&&(o.push(s={children:[],index:0}),c.children[c.index]=s.children,c=s)}return o[0].children}function m(e,n,r){return 64*((e.blocksPerLine+1)*n+r)}function b(n,r,a,t,o,i,s,c,f){var l=a.mcusPerLine,u=a.progressive,h=r,v=0,b=0;function d(){if(b>0)return b--,v>>b&1;if(255===(v=n[r++])){var e=n[r++];if(e)throw"unexpected marker: "+(v<<8|e).toString(16)}return b=7,v>>>7}function p(e){for(var n=e;;){if("number"==typeof(n=n[d()]))return n;if("object"!=typeof n)throw"invalid huffman sequence"}}function k(e){for(var n=0;e>0;)n=n<<1|d(),e--;return n}function g(e){if(1===e)return 1===d()?1:-1;var n=k(e);return n>=1<<e-1?n:n+(-1<<e)+1}var C,w=0,y=0;function D(e,n,r,a,t){var o=r%l;n(e,m(e,(r/l|0)*e.v+a,o*e.h+t))}function P(e,n,r){n(e,m(e,r/e.blocksPerLine|0,r%e.blocksPerLine))}var T,L,A,x,_,I,U=t.length;I=u?0===i?0===c?function(e,n){var r=p(e.huffmanTableDC),a=0===r?0:g(r)<<f;e.blockData[n]=e.pred+=a}:function(e,n){e.blockData[n]|=d()<<f}:0===c?function(n,r){if(w>0)w--;else for(var a=i,t=s;a<=t;){var o=p(n.huffmanTableAC),c=15&o,l=o>>4;if(0!==c){var u=e[a+=l];n.blockData[r+u]=g(c)*(1<<f),a++}else{if(l<15){w=k(l)+(1<<l)-1;break}a+=16}}}:function(n,r){for(var a,t,o=i,c=s,l=0;o<=c;){var u=e[o];switch(y){case 0:if(l=(t=p(n.huffmanTableAC))>>4,0==(a=15&t))l<15?(w=k(l)+(1<<l),y=4):(l=16,y=1);else{if(1!==a)throw"invalid ACn encoding";C=g(a),y=l?2:3}continue;case 1:case 2:n.blockData[r+u]?n.blockData[r+u]+=d()<<f:0==--l&&(y=2===y?3:0);break;case 3:n.blockData[r+u]?n.blockData[r+u]+=d()<<f:(n.blockData[r+u]=C<<f,y=0);break;case 4:n.blockData[r+u]&&(n.blockData[r+u]+=d()<<f)}o++}4===y&&0==--w&&(y=0)}:function(n,r){var a=p(n.huffmanTableDC),t=0===a?0:g(a);n.blockData[r]=n.pred+=t;for(var o=1;o<64;){var i=p(n.huffmanTableAC),s=15&i,c=i>>4;if(0!==s){var f=e[o+=c];n.blockData[r+f]=g(s),o++}else{if(c<15)break;o+=16}}};var z,q,Y,M,R=0;for(q=1===U?t[0].blocksPerLine*t[0].blocksPerColumn:l*a.mcusPerColumn,o||(o=q);R<q;){for(L=0;L<U;L++)t[L].pred=0;if(w=0,1===U)for(T=t[0],_=0;_<o;_++)P(T,I,R),R++;else for(_=0;_<o;_++){for(L=0;L<U;L++)for(Y=(T=t[L]).h,M=T.v,A=0;A<M;A++)for(x=0;x<Y;x++)D(T,I,R,A,x);R++}if(b=0,(z=n[r]<<8|n[r+1])<=65280)throw"marker was not found";if(!(z>=65488&&z<=65495))break;r+=2}return r-h}function d(e,h,v){for(var m,b,d,p,k,g,C,w,y,D,P,T,L,A,x,_,I,U=e.quantizationTable,z=e.blockData,q=0;q<64;q+=8)y=z[h+q],D=z[h+q+1],P=z[h+q+2],T=z[h+q+3],L=z[h+q+4],A=z[h+q+5],x=z[h+q+6],_=z[h+q+7],y*=U[q],D|P|T|L|A|x|_?(D*=U[q+1],P*=U[q+2],T*=U[q+3],L*=U[q+4],A*=U[q+5],x*=U[q+6],_*=U[q+7],b=(m=(m=s*y+128>>8)+(b=s*L+128>>8)+1>>1)-b,I=(d=P)*i+(p=x)*o+128>>8,d=d*o-p*i+128>>8,C=(k=(k=c*(D-_)+128>>8)+(C=A<<4)+1>>1)-C,g=(w=(w=c*(D+_)+128>>8)+(g=T<<4)+1>>1)-g,p=(m=m+(p=I)+1>>1)-p,d=(b=b+d+1>>1)-d,I=k*t+w*a+2048>>12,k=k*a-w*t+2048>>12,w=I,I=g*r+C*n+2048>>12,g=g*n-C*r+2048>>12,C=I,v[q]=m+w,v[q+7]=m-w,v[q+1]=b+C,v[q+6]=b-C,v[q+2]=d+g,v[q+5]=d-g,v[q+3]=p+k,v[q+4]=p-k):(I=s*y+512>>10,v[q]=I,v[q+1]=I,v[q+2]=I,v[q+3]=I,v[q+4]=I,v[q+5]=I,v[q+6]=I,v[q+7]=I);for(var Y=0;Y<8;++Y)y=v[Y],(D=v[Y+8])|(P=v[Y+16])|(T=v[Y+24])|(L=v[Y+32])|(A=v[Y+40])|(x=v[Y+48])|(_=v[Y+56])?(b=(m=(m=s*y+2048>>12)+(b=s*L+2048>>12)+1>>1)-b,I=(d=P)*i+(p=x)*o+2048>>12,d=d*o-p*i+2048>>12,p=I,C=(k=(k=c*(D-_)+2048>>12)+(C=A)+1>>1)-C,g=(w=(w=c*(D+_)+2048>>12)+(g=T)+1>>1)-g,I=k*t+w*a+2048>>12,k=k*a-w*t+2048>>12,w=I,I=g*r+C*n+2048>>12,g=g*n-C*r+2048>>12,y=(y=(m=m+p+1>>1)+w)<=f?0:y>=l?u:y-f>>4,D=(D=(b=b+d+1>>1)+(C=I))<=f?0:D>=l?u:D-f>>4,P=(P=(d=b-d)+g)<=f?0:P>=l?u:P-f>>4,T=(T=(p=m-p)+k)<=f?0:T>=l?u:T-f>>4,L=(L=p-k)<=f?0:L>=l?u:L-f>>4,A=(A=d-g)<=f?0:A>=l?u:A-f>>4,x=(x=b-C)<=f?0:x>=l?u:x-f>>4,_=(_=m-w)<=f?0:_>=l?u:_-f>>4,z[h+Y]=y,z[h+Y+8]=D,z[h+Y+16]=P,z[h+Y+24]=T,z[h+Y+32]=L,z[h+Y+40]=A,z[h+Y+48]=x,z[h+Y+56]=_):(I=(I=s*y+8192>>14)<=f?0:I>=l?u:I-f>>4,z[h+Y]=I,z[h+Y+8]=I,z[h+Y+16]=I,z[h+Y+24]=I,z[h+Y+32]=I,z[h+Y+40]=I,z[h+Y+48]=I,z[h+Y+56]=I)}function p(e,n){for(var r=n.blocksPerLine,a=n.blocksPerColumn,t=new Int32Array(64),o=0;o<a;o++)for(var i=0;i<r;i++)d(n,m(n,o,i),t);return n.blockData}function k(e){return e<=0?0:e>=255?255:e}return h.prototype={parse:function(n){function r(){var e=n[c]<<8|n[c+1];return c+=2,e}function a(e){for(var n=Math.ceil(e.samplesPerLine/8/e.maxH),r=Math.ceil(e.scanLines/8/e.maxV),a=0;a<e.components.length;a++){E=e.components[a];var t=Math.ceil(Math.ceil(e.samplesPerLine/8)*E.h/e.maxH),o=Math.ceil(Math.ceil(e.scanLines/8)*E.v/e.maxV),i=n*E.h,s=r*E.v*64*(i+1);E.blockData=new Int16Array(s),E.blocksPerLine=t,E.blocksPerColumn=o}e.mcusPerLine=n,e.mcusPerColumn=r}var t,o,i,s,c=0,h=null,m=null,d=[],k=[],g=[],C=r();if(65496!==C)throw"SOI not found";for(C=r();65497!==C;){var w,y,D;switch(C){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var P=(void 0,void 0,i=r(),s=n.subarray(c,c+i-2),c+=s.length,s);65504===C&&74===P[0]&&70===P[1]&&73===P[2]&&70===P[3]&&0===P[4]&&(h={version:{major:P[5],minor:P[6]},densityUnits:P[7],xDensity:P[8]<<8|P[9],yDensity:P[10]<<8|P[11],thumbWidth:P[12],thumbHeight:P[13],thumbData:P.subarray(14,14+3*P[12]*P[13])}),65518===C&&65===P[0]&&100===P[1]&&111===P[2]&&98===P[3]&&101===P[4]&&(m={version:P[5]<<8|P[6],flags0:P[7]<<8|P[8],flags1:P[9]<<8|P[10],transformCode:P[11]});break;case 65499:for(var T=r()+c-2;c<T;){var L=n[c++],A=new Uint16Array(64);if(L>>4){if(L>>4!=1)throw"DQT: invalid table spec";for(y=0;y<64;y++)A[e[y]]=r()}else for(y=0;y<64;y++)A[e[y]]=n[c++];d[15&L]=A}break;case 65472:case 65473:case 65474:if(t)throw"Only single frame JPEGs supported";r(),(t={}).extended=65473===C,t.progressive=65474===C,t.precision=n[c++];var x=255/((1<<t.precision)-1);f/=x,l/=x,u/=x,t.scanLines=r(),t.samplesPerLine=r(),t.components=[],t.componentIds={};var _,I=n[c++],U=0,z=0;for(w=0;w<I;w++){_=n[c];var q=n[c+1]>>4,Y=15&n[c+1];U<q&&(U=q),z<Y&&(z=Y);var M=n[c+2];D=t.components.push({h:q,v:Y,quantizationTable:d[M],quantizationTableId:M}),t.componentIds[_]=D-1,c+=3}t.maxH=U,t.maxV=z,a(t);break;case 65476:var R=r();for(w=2;w<R;){var H=n[c++],S=new Uint8Array(16),V=0;for(y=0;y<16;y++,c++)V+=S[y]=n[c];var j=new Uint8Array(V);for(y=0;y<V;y++,c++)j[y]=n[c];w+=17+V,(H>>4?k:g)[15&H]=v(S,j)}break;case 65501:r(),o=r();break;case 65498:r();var E,B=n[c++],G=[];for(w=0;w<B;w++){var J=t.componentIds[n[c++]];E=t.components[J];var N=n[c++];E.huffmanTableDC=g[N>>4],E.huffmanTableAC=k[15&N],G.push(E)}var O=n[c++],X=n[c++],Q=n[c++],W=b(n,c,t,G,o,O,X,Q>>4,15&Q);c+=W;break;case 65535:255!==n[c]&&c--;break;default:if(255===n[c-3]&&n[c-2]>=192&&n[c-2]<=254){c-=3;break}throw"unknown JPEG marker "+C.toString(16)}C=r()}for(this.width=t.samplesPerLine,this.height=t.scanLines,this.jfif=h,this.adobe=m,this.components=[],w=0;w<t.components.length;w++)(E=t.components[w]).quantizationTable||null==E.quantizationTableId||(E.quantizationTable=d[E.quantizationTableId]),this.components.push({output:p(0,E),scaleX:E.h/t.maxH,scaleY:E.v/t.maxV,blocksPerLine:E.blocksPerLine,blocksPerColumn:E.blocksPerColumn});this.numComponents=this.components.length},_getLinearizedBlockData:function(e,n){var r,a,t,o,i,s,c,f,l,u,h,v=this.width/e,m=this.height/n,b=0,d=this.components.length,p=e*n*d,k=new Uint16Array(p),g=new Uint32Array(e),C=4294967288;for(c=0;c<d;c++){for(a=(r=this.components[c]).scaleX*v,t=r.scaleY*m,b=c,h=r.output,o=r.blocksPerLine+1<<3,i=0;i<e;i++)f=0|i*a,g[i]=(f&C)<<3|7&f;for(s=0;s<n;s++)for(u=o*((f=0|s*t)&C)|(7&f)<<3,i=0;i<e;i++)k[b]=h[u+g[i]],b+=d}var w=this.decodeTransform;if(w)for(c=0;c<p;)for(f=0,l=0;f<d;f++,c++,l+=2)k[c]=(k[c]*w[l]>>8)+w[l+1];return k},_isColorConversionNeeded:function(){return!(!this.adobe||!this.adobe.transformCode)||3===this.numComponents},_convertYccToRgb:function(e){for(var n,r,a,t=0,o=e.length;t<o;t+=3)n=e[t],r=e[t+1],a=e[t+2],e[t]=k(n-179.456+1.402*a),e[t+1]=k(n+135.459-.344*r-.714*a),e[t+2]=k(n-226.816+1.772*r);return e},_convertYcckToRgb:function(e){for(var n,r,a,t,o=0,i=0,s=e.length;i<s;i+=4){n=e[i];var c=(r=e[i+1])*(-660635669420364e-19*r+.000437130475926232*(a=e[i+2])-54080610064599e-18*n+.00048449797120281*(t=e[i+3])-.154362151871126)-122.67195406894+a*(-.000957964378445773*a+.000817076911346625*n-.00477271405408747*t+1.53380253221734)+n*(.000961250184130688*n-.00266257332283933*t+.48357088451265)+t*(-.000336197177618394*t+.484791561490776),f=107.268039397724+r*(219927104525741e-19*r-.000640992018297945*a+.000659397001245577*n+.000426105652938837*t-.176491792462875)+a*(-.000778269941513683*a+.00130872261408275*n+.000770482631801132*t-.151051492775562)+n*(.00126935368114843*n-.00265090189010898*t+.25802910206845)+t*(-.000318913117588328*t-.213742400323665),l=r*(-.000570115196973677*r-263409051004589e-19*a+.0020741088115012*n-.00288260236853442*t+.814272968359295)-20.810012546947+a*(-153496057440975e-19*a-.000132689043961446*n+.000560833691242812*t-.195152027534049)+n*(.00174418132927582*n-.00255243321439347*t+.116935020465145)+t*(-.000343531996510555*t+.24165260232407);e[o++]=k(c),e[o++]=k(f),e[o++]=k(l)}return e},_convertYcckToCmyk:function(e){for(var n,r,a,t=0,o=e.length;t<o;t+=4)n=e[t],r=e[t+1],a=e[t+2],e[t]=k(434.456-n-1.402*a),e[t+1]=k(119.541-n+.344*r+.714*a),e[t+2]=k(481.816-n-1.772*r);return e},_convertCmykToRgb:function(e){for(var n,r,a,t,o=0,i=-16581375,s=1/255/255,c=0,f=e.length;c<f;c+=4){var l=(n=e[c])*(-4.387332384609988*n+54.48615194189176*(r=e[c+1])+18.82290502165302*(a=e[c+2])+212.25662451639585*(t=e[c+3])-72734.4411664936)+r*(1.7149763477362134*r-5.6096736904047315*a-17.873870861415444*t-1401.7366389350734)+a*(-2.5217340131683033*a-21.248923337353073*t+4465.541406466231)-t*(21.86122147463605*t+48317.86113160301),u=n*(8.841041422036149*n+60.118027045597366*r+6.871425592049007*a+31.159100130055922*t-20220.756542821975)+r*(-15.310361306967817*r+17.575251261109482*a+131.35250912493976*t-48691.05921601825)+a*(4.444339102852739*a+9.8632861493405*t-6341.191035517494)-t*(20.737325471181034*t+47890.15695978492),h=n*(.8842522430003296*n+8.078677503112928*r+30.89978309703729*a-.23883238689178934*t-3616.812083916688)+r*(10.49593273432072*r+63.02378494754052*a+50.606957656360734*t-28620.90484698408)+a*(.03296041114873217*a+115.60384449646641*t-49363.43385999684)-t*(22.33816807309886*t+45932.16563550634);e[o++]=l>=0?255:l<=i?0:255+l*s|0,e[o++]=u>=0?255:u<=i?0:255+u*s|0,e[o++]=h>=0?255:h<=i?0:255+h*s|0}return e},getData:function(e,n,r){if(this.numComponents>4)throw"Unsupported color mode";var a=this._getLinearizedBlockData(e,n);if(1===this.numComponents&&r){for(var t=a.length,o=new Uint16Array(3*t),i=0,s=0;s<t;s++){var c=a[s];o[i++]=c,o[i++]=c,o[i++]=c}return o}if(3===this.numComponents)return this._convertYccToRgb(a);if(4===this.numComponents){if(this._isColorConversionNeeded())return r?this._convertYcckToRgb(a):this._convertYcckToCmyk(a);if(r)return this._convertCmykToRgb(a)}return a}},h}();self.addEventListener("message",(function(n){const r=new e;r.parse(n.data.buffer);const a=r.getData(r.width,r.height);let t=null;8===n.data.meta.bitsAllocated?t=n.data.meta.isSigned?new Int8Array(a):new Uint8Array(a):16===n.data.meta.bitsAllocated&&(t=n.data.meta.isSigned?new Int16Array(a):new Uint16Array(a)),self.postMessage([t])}),!1);
//# sourceMappingURL=jpegbaseline.worker.min.js.map