rlayers
Version:
React Components for OpenLayers
1 lines • 2.33 kB
JavaScript
;(self.webpackChunkrlayers=self.webpackChunkrlayers||[]).push([[6568],{2132(e,t,r){function n(e,t){let r=e.length-t,n=0;do{for(let r=t;r>0;r--)e[n+t]+=e[n],n++;r-=t}while(r>0)}function a(e,t,r){let n=0,a=e.length;const o=a/r;for(;a>t;){for(let r=t;r>0;--r)e[n+t]+=e[n],++n;a-=t}const i=e.slice();for(let t=0;t<o;++t)for(let n=0;n<r;++n)e[r*t+n]=i[(r-n-1)*o+t]}r.d(t,{A:()=>o});class o{constructor(e){this.parameters=e}decodeBlock(e){throw new Error("decodeBlock not implemented")}async decode(e){const t=await this.decodeBlock(e),{tileWidth:r,tileHeight:o,predictor:i,bitsPerSample:s,planarConfiguration:l}=this.parameters;return 1!==i?function(e,t,r,o,i,s){if(!t||1===t)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 l=i[0]/8,c=2===s?1:i.length;for(let s=0;s<o&&!(s*c*r*l>=e.byteLength);++s){let o;if(2===t){switch(i[0]){case 8:o=new Uint8Array(e,s*c*r*l,c*r*l);break;case 16:o=new Uint16Array(e,s*c*r*l,c*r*l/2);break;case 32:o=new Uint32Array(e,s*c*r*l,c*r*l/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}n(o,c)}else 3===t&&(o=new Uint8Array(e,s*c*r*l,c*r*l),a(o,c,l))}return e}(t,i,r,o,s,l):t}}},6568(e,t,r){r.d(t,{default:()=>a});var n=r(2132);class a extends n.A{constructor(e){if(super(e),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(e){const t=new Blob([e]),r=await createImageBitmap(t);let n;"undefined"!=typeof document?(n=document.createElement("canvas"),n.width=r.width,n.height=r.height):n=new OffscreenCanvas(r.width,r.height);const a=n.getContext("2d");a.drawImage(r,0,0);const o=a.getImageData(0,0,r.width,r.height).data,i=this.parameters.samplesPerPixel||4;if(4===i)return o.buffer;if(3===i){const e=new Uint8ClampedArray(r.width*r.height*3);for(let t=0,r=0;t<e.length;t+=3,r+=4)e[t]=o[r],e[t+1]=o[r+1],e[t+2]=o[r+2];return e.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${i}`)}}}}]);