UNPKG

rlayers

Version:

React Components for OpenLayers

1 lines 10.9 kB
"use strict";(self.webpackChunkrlayers=self.webpackChunkrlayers||[]).push([[6457],{2132(e,n,t){function r(e,n){let t=e.length-n,r=0;do{for(let t=n;t>0;t--)e[r+n]+=e[r],r++;t-=n}while(t>0)}function o(e,n,t){let r=0,o=e.length;const s=o/t;for(;o>n;){for(let t=n;t>0;--t)e[r+n]+=e[r],++r;o-=n}const i=e.slice();for(let n=0;n<s;++n)for(let r=0;r<t;++r)e[t*n+r]=i[(t-r-1)*s+n]}t.d(n,{A:()=>s});class s{constructor(e){this.parameters=e}decodeBlock(e){throw new Error("decodeBlock not implemented")}async decode(e){const n=await this.decodeBlock(e),{tileWidth:t,tileHeight:s,predictor:i,bitsPerSample:c,planarConfiguration:a}=this.parameters;return 1!==i?function(e,n,t,s,i,c){if(!n||1===n)return e;for(let e=0;e<i.length;++e){if(i[e]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(i[e]!==i[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const a=i[0]/8,f=2===c?1:i.length;for(let c=0;c<s&&!(c*f*t*a>=e.byteLength);++c){let s;if(2===n){switch(i[0]){case 8:s=new Uint8Array(e,c*f*t*a,f*t*a);break;case 16:s=new Uint16Array(e,c*f*t*a,f*t*a/2);break;case 32:s=new Uint32Array(e,c*f*t*a,f*t*a/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}r(s,f)}else 3===n&&(s=new Uint8Array(e,c*f*t*a,f*t*a),o(s,f,a))}return e}(n,i,t,s,c,a):n}}},6457(e,n,t){t.d(n,{default:()=>b});var r=t(2132);const o=new Int32Array([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]),s=4017,i=799,c=3406,a=2276,f=1567,l=3784,h=5793,d=2896;function u(e,n){let t=0;const r=[];let o=16;for(;o>0&&!e[o-1];)--o;r.push({children:[],index:0});let s,i=r[0];for(let c=0;c<o;c++){for(let o=0;o<e[c];o++){if(i=r.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.children[i.index]=n[t];i.index>0;)if(i=r.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.index++,r.push(i);r.length<=c;)r.push(s={children:[],index:0}),i.children[i.index]=s.children,i=s;t++}c+1<o&&(r.push(s={children:[],index:0}),i.children[i.index]=s.children,i=s)}return r[0].children}function m(e,n,t,r,s,i,c,a,f){const{mcusPerLine:l,progressive:h}=t,d=n;let u=n,m=0,p=0;function w(){if(p>0)return p--,m>>p&1;if(m=e[u++],255===m){const n=e[u++];if(n)throw new Error(`unexpected marker: ${(m<<8|n).toString(16)}`)}return p=7,m>>>7}function b(e){let n,t=e;for(;null!==(n=w());){if(t=t[n],"number"==typeof t)return t;if("object"!=typeof t)throw new Error("invalid huffman sequence")}return null}function k(e){let n=e,t=0;for(;n>0;){const e=w();if(null===e)return;t=t<<1|e,--n}return t}function g(e){const n=k(e);if(void 0!==n)return n>=1<<e-1?n:n+(-1<<e)+1}let y,A=0,C=0;function x(e,n,t,r,o){const s=t%l,i=(t/l|0)*e.v+r,c=s*e.h+o;n(e,e.blocks[i][c])}function v(e,n,t){const r=t/e.blocksPerLine|0,o=t%e.blocksPerLine;n(e,e.blocks[r][o])}const E=r.length;let P,T,L,U,D,I;I=h?0===i?0===a?function(e,n){const t=b(e.huffmanTableDC),r=g(t);if(void 0===r)throw new Error("Unexpected end of data in DC coefficient decoding");const o=0===t?0:r<<f;e.pred+=o,n[0]=e.pred}:function(e,n){n[0]|=w()<<f}:0===a?function(e,n){if(A>0)return void A--;let t=i;const r=c;for(;t<=r;){const r=b(e.huffmanTableAC);if(null===r)throw new Error("Unexpected end of data in AC coefficient decoding");const s=15&r,i=r>>4;if(0===s){if(i<15){const e=k(i);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");A=e+(1<<i)-1;break}t+=16}else{t+=i;const e=o[t],r=g(s);if(void 0===r)throw new Error("Unexpected end of data in AC coefficient decoding");n[e]=r*(1<<f),t++}}}:function(e,n){let t=i;const r=c;let s=0;for(;t<=r;){const r=o[t],i=n[r]<0?-1:1;switch(C){case 0:{const n=b(e.huffmanTableAC);if(null===n)throw new Error("Unexpected end of data in AC coefficient decoding");const t=15&n;if(s=n>>4,0===t)if(s<15){const e=k(s);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");A=e+(1<<s),C=4}else s=16,C=1;else{if(1!==t)throw new Error("invalid ACn encoding");y=g(t),C=s?2:3}continue}case 1:case 2:n[r]?n[r]+=(w()<<f)*i:(s--,0===s&&(C=2===C?3:0));break;case 3:n[r]?n[r]+=(w()<<f)*i:(n[r]=y<<f,C=0);break;case 4:n[r]&&(n[r]+=(w()<<f)*i)}t++}4===C&&(A--,0===A&&(C=0))}:function(e,n){const t=b(e.huffmanTableDC),r=0===t?0:g(t);e.pred+=r,n[0]=e.pred;let s=1;for(;s<64;){const t=b(e.huffmanTableAC);if(null===t)throw new Error("Unexpected end of data in AC coefficient decoding");const r=15&t,i=t>>4;if(0===r){if(i<15)break;s+=16}else s+=i,n[o[s]]=g(r),s++}};let q,z,O=0;z=1===E?r[0].blocksPerLine*r[0].blocksPerColumn:l*t.mcusPerColumn;const H=s||z;for(;O<z;){for(T=0;T<E;T++)r[T].pred=0;if(A=0,1===E)for(P=r[0],D=0;D<H;D++)v(P,I,O),O++;else for(D=0;D<H;D++){for(T=0;T<E;T++){P=r[T];const{h:e,v:n}=P;for(L=0;L<n;L++)for(U=0;U<e;U++)x(P,I,O,L,U)}if(O++,O===z)break}if(p=0,q=e[u]<<8|e[u+1],q<65280)throw new Error("marker was not found");if(!(q>=65488&&q<=65495))break;u+=2}return u-d}function p(e,n){const t=[],{blocksPerLine:r,blocksPerColumn:o}=n,u=r<<3,m=new Int32Array(64),p=new Uint8Array(64);function w(e,t,r){const o=n.quantizationTable;let u,m,p,w,b,k,g,y,A;const C=r;let x;for(x=0;x<64;x++)C[x]=e[x]*o[x];for(x=0;x<8;++x){const e=8*x;0!==C[1+e]||0!==C[2+e]||0!==C[3+e]||0!==C[4+e]||0!==C[5+e]||0!==C[6+e]||0!==C[7+e]?(u=h*C[0+e]+128>>8,m=h*C[4+e]+128>>8,p=C[2+e],w=C[6+e],b=d*(C[1+e]-C[7+e])+128>>8,y=d*(C[1+e]+C[7+e])+128>>8,k=C[3+e]<<4,g=C[5+e]<<4,A=u-m+1>>1,u=u+m+1>>1,m=A,A=p*l+w*f+128>>8,p=p*f-w*l+128>>8,w=A,A=b-g+1>>1,b=b+g+1>>1,g=A,A=y+k+1>>1,k=y-k+1>>1,y=A,A=u-w+1>>1,u=u+w+1>>1,w=A,A=m-p+1>>1,m=m+p+1>>1,p=A,A=b*a+y*c+2048>>12,b=b*c-y*a+2048>>12,y=A,A=k*i+g*s+2048>>12,k=k*s-g*i+2048>>12,g=A,C[0+e]=u+y,C[7+e]=u-y,C[1+e]=m+g,C[6+e]=m-g,C[2+e]=p+k,C[5+e]=p-k,C[3+e]=w+b,C[4+e]=w-b):(A=h*C[0+e]+512>>10,C[0+e]=A,C[1+e]=A,C[2+e]=A,C[3+e]=A,C[4+e]=A,C[5+e]=A,C[6+e]=A,C[7+e]=A)}for(x=0;x<8;++x){const e=x;0!==C[8+e]||0!==C[16+e]||0!==C[24+e]||0!==C[32+e]||0!==C[40+e]||0!==C[48+e]||0!==C[56+e]?(u=h*C[0+e]+2048>>12,m=h*C[32+e]+2048>>12,p=C[16+e],w=C[48+e],b=d*(C[8+e]-C[56+e])+2048>>12,y=d*(C[8+e]+C[56+e])+2048>>12,k=C[24+e],g=C[40+e],A=u-m+1>>1,u=u+m+1>>1,m=A,A=p*l+w*f+2048>>12,p=p*f-w*l+2048>>12,w=A,A=b-g+1>>1,b=b+g+1>>1,g=A,A=y+k+1>>1,k=y-k+1>>1,y=A,A=u-w+1>>1,u=u+w+1>>1,w=A,A=m-p+1>>1,m=m+p+1>>1,p=A,A=b*a+y*c+2048>>12,b=b*c-y*a+2048>>12,y=A,A=k*i+g*s+2048>>12,k=k*s-g*i+2048>>12,g=A,C[0+e]=u+y,C[56+e]=u-y,C[8+e]=m+g,C[48+e]=m-g,C[16+e]=p+k,C[40+e]=p-k,C[24+e]=w+b,C[32+e]=w-b):(A=h*r[x+0]+8192>>14,C[0+e]=A,C[8+e]=A,C[16+e]=A,C[24+e]=A,C[32+e]=A,C[40+e]=A,C[48+e]=A,C[56+e]=A)}for(x=0;x<64;++x){const e=128+(C[x]+8>>4);t[x]=e<0?0:e>255?255:e}}for(let e=0;e<o;e++){const o=e<<3;for(let e=0;e<8;e++)t.push(new Uint8Array(u));for(let s=0;s<r;s++){w(n.blocks[e][s],p,m);let r=0;const i=s<<3;for(let e=0;e<8;e++){const n=t[o+e];for(let e=0;e<8;e++)n[i+e]=p[r++]}}}return t}class w{constructor(){this.jfif=null,this.adobe=null,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(e){let n=0;function t(){const t=e[n]<<8|e[n+1];return n+=2,t}function r(){const r=t(),o=e.subarray(n,n+r-2);return n+=o.length,o}function s(e){let n,t,r=0,o=0;for(t in e.components)e.components.hasOwnProperty(t)&&(n=e.components[t],r<n.h&&(r=n.h),o<n.v&&(o=n.v));const s=Math.ceil(e.samplesPerLine/8/r),i=Math.ceil(e.scanLines/8/o);for(t in e.components)if(e.components.hasOwnProperty(t)){n=e.components[t];const c=Math.ceil(Math.ceil(e.samplesPerLine/8)*n.h/r),a=Math.ceil(Math.ceil(e.scanLines/8)*n.v/o),f=s*n.h,l=i*n.v,h=[];for(let e=0;e<l;e++){const e=[];for(let n=0;n<f;n++)e.push(new Int32Array(64));h.push(e)}n.blocksPerLine=c,n.blocksPerColumn=a,n.blocks=h}e.maxH=r,e.maxV=o,e.mcusPerLine=s,e.mcusPerColumn=i}let i=t();if(65496!==i)throw new Error("SOI not found");for(i=t();65497!==i;){switch(i){case 65280:break;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:{const e=r();65504===i&&74===e[0]&&70===e[1]&&73===e[2]&&70===e[3]&&0===e[4]&&(this.jfif={version:{major:e[5],minor:e[6]},densityUnits:e[7],xDensity:e[8]<<8|e[9],yDensity:e[10]<<8|e[11],thumbWidth:e[12],thumbHeight:e[13],thumbData:e.subarray(14,14+3*e[12]*e[13])}),65518===i&&65===e[0]&&100===e[1]&&111===e[2]&&98===e[3]&&101===e[4]&&0===e[5]&&(this.adobe={version:e[6],flags0:e[7]<<8|e[8],flags1:e[9]<<8|e[10],transformCode:e[11]});break}case 65499:{const r=t()+n-2;for(;n<r;){const r=e[n++],s=new Int32Array(64);if(r>>4){if(r>>4!=1)throw new Error("DQT: invalid table spec");for(let e=0;e<64;e++)s[o[e]]=t()}else for(let t=0;t<64;t++)s[o[t]]=e[n++];this.quantizationTables[15&r]=s}break}case 65472:case 65473:case 65474:{t();const r={extended:65473===i,progressive:65474===i,precision:e[n++],scanLines:t(),samplesPerLine:t(),components:{},componentsOrder:[]},o=e[n++];let c;for(let t=0;t<o;t++){c=e[n];const t=e[n+1]>>4,o=15&e[n+1],s=e[n+2];r.componentsOrder.push(c),r.components[c]={h:t,v:o,quantizationIdx:s},n+=3}s(r),this.frames.push(r);break}case 65476:{const r=t();for(let t=2;t<r;){const r=e[n++],o=new Uint8Array(16);let s=0;for(let t=0;t<16;t++,n++)o[t]=e[n],s+=o[t];const i=new Uint8Array(s);for(let t=0;t<s;t++,n++)i[t]=e[n];t+=17+s,r>>4?this.huffmanTablesAC[15&r]=u(o,i):this.huffmanTablesDC[15&r]=u(o,i)}break}case 65501:t(),this.resetInterval=t();break;case 65498:{t();const r=e[n++],o=[],s=this.frames[0];for(let t=0;t<r;t++){const t=s.components[e[n++]],r=e[n++];t.huffmanTableDC=this.huffmanTablesDC[r>>4],t.huffmanTableAC=this.huffmanTablesAC[15&r],o.push(t)}const i=e[n++],c=e[n++],a=e[n++],f=m(e,n,s,o,this.resetInterval,i,c,a>>4,15&a);n+=f;break}case 65535:255!==e[n]&&n--;break;default:if(255===e[n-3]&&e[n-2]>=192&&e[n-2]<=254){n-=3;break}throw new Error(`unknown JPEG marker ${i.toString(16)}`)}i=t()}}getResult(){const{frames:e}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let e=0;e<this.frames.length;e++){const n=this.frames[e].components;for(const e of Object.keys(n))n[e].quantizationTable=this.quantizationTables[n[e].quantizationIdx],delete n[e].quantizationIdx}const n=e[0],{components:t,componentsOrder:r}=n,o=[],s=n.samplesPerLine,i=n.scanLines;for(let e=0;e<r.length;e++){const s=t[r[e]];o.push({lines:p(0,s),scaleX:s.h/n.maxH,scaleY:s.v/n.maxV})}const c=new Uint8Array(s*i*o.length);let a=0;for(let e=0;e<i;++e)for(let n=0;n<s;++n)for(let t=0;t<o.length;++t){const r=o[t];c[a]=r.lines[0|e*r.scaleY][0|n*r.scaleX],++a}return c}}class b extends r.A{constructor(e){super(e),this.reader=new w,e.JPEGTables&&this.reader.parse(e.JPEGTables)}decodeBlock(e){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(e)),this.reader.getResult().buffer}}}}]);