1 |
- define(["./Rectangle-bab7abf0","./EllipsoidTangentPlane-53184efd","./buildModuleUrl-3d15f25c","./Cartesian2-6033fa5d","./Cartographic-67e73ef9","./when-92c6cf3c","./Check-52a7d806","./TerrainEncoding-5d55ad09","./Math-92c3b5f7","./PrimitiveType-cdfe443e","./OrientedBoundingBox-513cf61d","./GeometryAttribute-ef657318","./WebMercatorProjection-39906b85","./RuntimeError-c6a62a80","./createTaskProcessorWorker","./Intersect-b97e930a","./Cartesian4-ad128b5d","./IntersectionTests-a42760d9","./Plane-f8d22530","./Event-3390cd7d","./AttributeCompression-49f7b62a","./ComponentDatatype-81047f82","./WebGLConstants-71f10989","./PolygonPipeline-b86e8785","./WindingOrder-1b9c8a87","./EllipsoidRhumbLine-8847d1a1","./Buffer-1d0f8963","./IndexDatatype-4c0e98b8","./RenderState-94064c70","./BoundingRectangle-418864a2","./Color-45274500","./FeatureDetection-067cb23c"],(function(e,t,i,r,a,n,s,o,l,f,u,c,h,d,m,g,p,w,x,y,k,I,b,v,U,T,M,A,V,D,B,S){"use strict";var P=Object.freeze({NONE:0,LERC:1}),E={};E.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var F=new a.t,C=new f.y,L=new a.t,N=new a.t;E.computeVertices=function(d){if(!n.e(d)||!n.e(d.heightmap))throw new s.t("options.heightmap is required.");if(!n.e(d.width)||!n.e(d.height))throw new s.t("options.width and options.height are required.");if(!n.e(d.nativeRectangle))throw new s.t("options.nativeRectangle is required.");if(!n.e(d.skirtHeight))throw new s.t("options.skirtHeight is required.");var m,g,p,w,x=Math.cos,y=Math.sin,k=Math.sqrt,I=Math.atan,b=Math.exp,v=l.e.PI_OVER_TWO,U=l.e.toRadians,T=d.heightmap,M=d.width,A=d.height,V=d.skirtHeight,D=n.u(d.isGeographic,!0),B=n.u(d.ellipsoid,e.t.WGS84),S=1/B.maximumRadius,P=d.nativeRectangle,O=d.rectangle;n.e(O)?(m=O.west,g=O.south,p=O.east,w=O.north):D?(m=U(P.west),g=U(P.south),p=U(P.east),w=U(P.north)):(m=P.west*S,g=v-2*I(b(-P.south*S)),p=P.east*S,w=v-2*I(b(-P.north*S)));var R=d.relativeToCenter,z=n.e(R);R=z?R:a.t.ZERO;var H=n.u(d.exaggeration,1),_=n.u(d.includeWebMercatorT,!1),Y=n.u(d.structure,E.DEFAULT_STRUCTURE),X=n.u(Y.heightScale,E.DEFAULT_STRUCTURE.heightScale),W=n.u(Y.heightOffset,E.DEFAULT_STRUCTURE.heightOffset),Z=n.u(Y.elementsPerHeight,E.DEFAULT_STRUCTURE.elementsPerHeight),G=n.u(Y.stride,E.DEFAULT_STRUCTURE.stride),q=n.u(Y.elementMultiplier,E.DEFAULT_STRUCTURE.elementMultiplier),j=n.u(Y.isBigEndian,E.DEFAULT_STRUCTURE.isBigEndian),Q=e.h.computeWidth(P),J=e.h.computeHeight(P),K=Q/(M-1),$=J/(A-1);D||(Q*=S,J*=S);var ee,te,ie=B.radiiSquared,re=ie.x,ae=ie.y,ne=ie.z,se=65536,oe=-65536,le=c.m.eastNorthUpToFixedFrame(R,B),fe=f.y.inverseTransformation(le,C);_&&(ee=h.t.geodeticLatitudeToMercatorAngle(g),te=1/(h.t.geodeticLatitudeToMercatorAngle(w)-ee));var ue=L;ue.x=Number.POSITIVE_INFINITY,ue.y=Number.POSITIVE_INFINITY,ue.z=Number.POSITIVE_INFINITY;var ce=N;ce.x=Number.NEGATIVE_INFINITY,ce.y=Number.NEGATIVE_INFINITY,ce.z=Number.NEGATIVE_INFINITY;var he=Number.POSITIVE_INFINITY,de=M*A,me=de+(V>0?2*M+2*A:0),ge=new Array(me),pe=new Array(me),we=new Array(me),xe=_?new Array(me):[],ye=0,ke=A,Ie=0,be=M;V>0&&(--ye,++ke,--Ie,++be);for(var ve=1e-5,Ue=ye;Ue<ke;++Ue){var Te=Ue;Te<0&&(Te=0),Te>=A&&(Te=A-1);var Me=P.north-$*Te,Ae=((Me=D?U(Me):v-2*I(b(-Me*S)))-g)/(w-g);Ae=l.e.clamp(Ae,0,1);var Ve=Ue===ye,De=Ue===ke-1;V>0&&(Ve?Me+=ve*J:De&&(Me-=ve*J));var Be,Se=x(Me),Pe=y(Me),Ee=ne*Pe;_&&(Be=(h.t.geodeticLatitudeToMercatorAngle(Me)-ee)*te);for(var Fe=Ie;Fe<be;++Fe){var Ce=Fe;Ce<0&&(Ce=0),Ce>=M&&(Ce=M-1);var Le,Ne,Oe=Te*(M*G)+Ce*G;if(1===Z)Le=T[Oe];else if(Le=0,j)for(Ne=0;Ne<Z;++Ne)Le=Le*q+T[Oe+Ne];else for(Ne=Z-1;Ne>=0;--Ne)Le=Le*q+T[Oe+Ne];Le=(Le*X+W)*H,oe=Math.max(oe,Le),se=Math.min(se,Le);var Re=P.west+K*Ce;D?Re=U(Re):Re*=S;var ze=(Re-m)/(p-m);ze=l.e.clamp(ze,0,1);var He=Te*M+Ce;if(V>0){var _e=Fe===Ie,Ye=Fe===be-1,Xe=Ve||De||_e||Ye;if((Ve||De)&&(_e||Ye))continue;Xe&&(Le-=V,_e?(He=de+(A-Te-1),Re-=ve*Q):De?He=de+A+(M-Ce-1):Ye?(He=de+A+M+Te,Re+=ve*Q):Ve&&(He=de+A+M+A+Ce))}var We=Se*x(Re),Ze=Se*y(Re),Ge=re*We,qe=ae*Ze,je=1/k(Ge*We+qe*Ze+Ee*Pe),Qe=Ge*je,Je=qe*je,Ke=Ee*je,$e=new a.t;$e.x=Qe+We*Le,$e.y=Je+Ze*Le,$e.z=Ke+Pe*Le,ge[He]=$e,pe[He]=Le,we[He]=new r.o(ze,Ae),_&&(xe[He]=Be),f.y.multiplyByPoint(fe,$e,F),a.t.minimumByComponent(F,ue,ue),a.t.maximumByComponent(F,ce,ce),he=Math.min(he,Le)}}var et,tt,it=i.i.fromPoints(ge);(n.e(O)&&(et=u.x.fromRectangle(O,se,oe,B)),z)&&(tt=new o.s(B).computeHorizonCullingPointPossiblyUnderEllipsoid(R,ge,se));for(var rt=new t.e(ue,ce,R),at=new o.h(rt,he,oe,le,!1,_),nt=new Float32Array(me*at.getStride()),st=0,ot=0;ot<me;++ot)st=at.encode(nt,st,ge[ot],we[ot],pe[ot],void 0,xe[ot]);return{vertices:nt,maximumHeight:oe,minimumHeight:se,encoding:at,boundingSphere3D:it,orientedBoundingBox:et,occludeePointInScaledSpace:tt}};var O,R,z,H,_,Y,X,W,Z,G,q,j,Q,J={};G=function(){var e={defaultNoDataValue:-34027999387901484e22,decode:function(n,s){var o=(s=s||{}).encodedMaskData||null===s.encodedMaskData,l=a(n,s.inputOffset||0,o),f=null!==s.noDataValue?s.noDataValue:e.defaultNoDataValue,u=t(l,s.pixelType||Float32Array,s.encodedMaskData,f,s.returnMask),c={width:l.width,height:l.height,pixelData:u.resultPixels,minValue:u.minValue,maxValue:l.pixels.maxValue,noDataValue:f};return u.resultMask&&(c.maskData=u.resultMask),s.returnEncodedMask&&l.mask&&(c.encodedMaskData=l.mask.bitset?l.mask.bitset:null),s.returnFileInfo&&(c.fileInfo=i(l),s.computeUsedBitDepths&&(c.fileInfo.bitDepths=r(l))),c}},t=function(e,t,i,r,a){var s,o,l,f=0,u=e.pixels.numBlocksX,c=e.pixels.numBlocksY,h=Math.floor(e.width/u),d=Math.floor(e.height/c),m=2*e.maxZError,g=Number.MAX_VALUE;i=i||(e.mask?e.mask.bitset:null),o=new t(e.width*e.height),a&&i&&(l=new Uint8Array(e.width*e.height));for(var p,w,x=new Float32Array(h*d),y=0;y<=c;y++){var k=y!==c?d:e.height%c;if(0!==k)for(var I=0;I<=u;I++){var b=I!==u?h:e.width%u;if(0!==b){var v,U,T,M,A=y*e.width*d+I*h,V=e.width-b,D=e.pixels.blocks[f];if(D.encoding<2?(0===D.encoding?v=D.rawData:(n(D.stuffedData,D.bitsPerPixel,D.numValidPixels,D.offset,m,x,e.pixels.maxValue),v=x),U=0):T=2===D.encoding?0:D.offset,i)for(w=0;w<k;w++){for(7&A&&(M=i[A>>3],M<<=7&A),p=0;p<b;p++)7&A||(M=i[A>>3]),128&M?(l&&(l[A]=1),g=g>(s=D.encoding<2?v[U++]:T)?s:g,o[A++]=s):(l&&(l[A]=0),o[A++]=r),M<<=1;A+=V}else if(D.encoding<2)for(w=0;w<k;w++){for(p=0;p<b;p++)g=g>(s=v[U++])?s:g,o[A++]=s;A+=V}else for(g=g>T?T:g,w=0;w<k;w++){for(p=0;p<b;p++)o[A++]=T;A+=V}if(1===D.encoding&&U!==D.numValidPixels)throw"Block and Mask do not match";f++}}}return{resultPixels:o,resultMask:l,minValue:g}},i=function(e){return{fileIdentifierString:e.fileIdentifierString,fileVersion:e.fileVersion,imageType:e.imageType,height:e.height,width:e.width,maxZError:e.maxZError,eofOffset:e.eofOffset,mask:e.mask?{numBlocksX:e.mask.numBlocksX,numBlocksY:e.mask.numBlocksY,numBytes:e.mask.numBytes,maxValue:e.mask.maxValue}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,numBytes:e.pixels.numBytes,maxValue:e.pixels.maxValue,noDataValue:e.noDataValue}}},r=function(e){for(var t=e.pixels.numBlocksX*e.pixels.numBlocksY,i={},r=0;r<t;r++){var a=e.pixels.blocks[r];0===a.encoding?i.float32=!0:1===a.encoding?i[a.bitsPerPixel]=!0:i[0]=!0}return Object.keys(i)},a=function(e,t,i){var r={},a=new Uint8Array(e,t,10);if(r.fileIdentifierString=String.fromCharCode.apply(null,a),"CntZImage"!==r.fileIdentifierString.trim())throw"Unexpected file identifier string: "+r.fileIdentifierString;t+=10;var n=new DataView(e,t,24);if(r.fileVersion=n.getInt32(0,!0),r.imageType=n.getInt32(4,!0),r.height=n.getUint32(8,!0),r.width=n.getUint32(12,!0),r.maxZError=n.getFloat64(16,!0),t+=24,!i)if(n=new DataView(e,t,16),r.mask={},r.mask.numBlocksY=n.getUint32(0,!0),r.mask.numBlocksX=n.getUint32(4,!0),r.mask.numBytes=n.getUint32(8,!0),r.mask.maxValue=n.getFloat32(12,!0),t+=16,r.mask.numBytes>0){var s=new Uint8Array(Math.ceil(r.width*r.height/8)),o=(n=new DataView(e,t,r.mask.numBytes)).getInt16(0,!0),l=2,f=0;do{if(o>0)for(;o--;)s[f++]=n.getUint8(l++);else{var u=n.getUint8(l++);for(o=-o;o--;)s[f++]=u}o=n.getInt16(l,!0),l+=2}while(l<r.mask.numBytes);if(-32768!==o||f<s.length)throw"Unexpected end of mask RLE encoding";r.mask.bitset=s,t+=r.mask.numBytes}else 0==(r.mask.numBytes|r.mask.numBlocksY|r.mask.maxValue)&&(r.mask.bitset=new Uint8Array(Math.ceil(r.width*r.height/8)));n=new DataView(e,t,16),r.pixels={},r.pixels.numBlocksY=n.getUint32(0,!0),r.pixels.numBlocksX=n.getUint32(4,!0),r.pixels.numBytes=n.getUint32(8,!0),r.pixels.maxValue=n.getFloat32(12,!0),t+=16;var c=r.pixels.numBlocksX,h=r.pixels.numBlocksY,d=c+(r.width%c>0?1:0),m=h+(r.height%h>0?1:0);r.pixels.blocks=new Array(d*m);for(var g=0,p=0;p<m;p++)for(var w=0;w<d;w++){var x=0,y=e.byteLength-t;n=new DataView(e,t,Math.min(10,y));var k={};r.pixels.blocks[g++]=k;var I=n.getUint8(0);if(x++,k.encoding=63&I,k.encoding>3)throw"Invalid block encoding ("+k.encoding+")";if(2!==k.encoding){if(0!==I&&2!==I){if(I>>=6,k.offsetType=I,2===I)k.offset=n.getInt8(1),x++;else if(1===I)k.offset=n.getInt16(1,!0),x+=2;else{if(0!==I)throw"Invalid block offset type";k.offset=n.getFloat32(1,!0),x+=4}if(1===k.encoding)if(I=n.getUint8(x),x++,k.bitsPerPixel=63&I,I>>=6,k.numValidPixelsType=I,2===I)k.numValidPixels=n.getUint8(x),x++;else if(1===I)k.numValidPixels=n.getUint16(x,!0),x+=2;else{if(0!==I)throw"Invalid valid pixel count type";k.numValidPixels=n.getUint32(x,!0),x+=4}}var b;if(t+=x,3!==k.encoding)if(0===k.encoding){var v=(r.pixels.numBytes-1)/4;if(v!==Math.floor(v))throw"uncompressed block has invalid length";b=new ArrayBuffer(4*v),new Uint8Array(b).set(new Uint8Array(e,t,4*v));var U=new Float32Array(b);k.rawData=U,t+=4*v}else if(1===k.encoding){var T=Math.ceil(k.numValidPixels*k.bitsPerPixel/8),M=Math.ceil(T/4);b=new ArrayBuffer(4*M),new Uint8Array(b).set(new Uint8Array(e,t,T)),k.stuffedData=new Uint32Array(b),t+=T}}else t++}return r.eofOffset=t,r},n=function(e,t,i,r,a,n,s){var o,l,f,u=(1<<t)-1,c=0,h=0,d=Math.ceil((s-r)/a),m=4*e.length-Math.ceil(t*i/8);for(e[e.length-1]<<=8*m,o=0;o<i;o++){if(0===h&&(f=e[c++],h=32),h>=t)l=f>>>h-t&u,h-=t;else{var g=t-h;l=(f&u)<<g&u,l+=(f=e[c++])>>>(h=32-g)}n[o]=l<d?r+l*a:s}return n};return e}(),O=function(e,t,i,r,a,n,s,o){var l,f,u,c,h,d=(1<<i)-1,m=0,g=0,p=4*e.length-Math.ceil(i*r/8);if(e[e.length-1]<<=8*p,a)for(l=0;l<r;l++)0===g&&(u=e[m++],g=32),g>=i?(f=u>>>g-i&d,g-=i):(f=(u&d)<<(c=i-g)&d,f+=(u=e[m++])>>>(g=32-c)),t[l]=a[f];else for(h=Math.ceil((o-n)/s),l=0;l<r;l++)0===g&&(u=e[m++],g=32),g>=i?(f=u>>>g-i&d,g-=i):(f=(u&d)<<(c=i-g)&d,f+=(u=e[m++])>>>(g=32-c)),t[l]=f<h?n+f*s:o},R=function(e,t,i,r,a,n){var s,o=(1<<t)-1,l=0,f=0,u=0,c=0,h=0,d=[],m=4*e.length-Math.ceil(t*i/8);e[e.length-1]<<=8*m;var g=Math.ceil((n-r)/a);for(f=0;f<i;f++)0===c&&(s=e[l++],c=32),c>=t?(h=s>>>c-t&o,c-=t):(h=(s&o)<<(u=t-c)&o,h+=(s=e[l++])>>>(c=32-u)),d[f]=h<g?r+h*a:n;return d.unshift(r),d},z=function(e,t,i,r,a,n,s,o){var l,f,u,c,h=(1<<i)-1,d=0,m=0,g=0;if(a)for(l=0;l<r;l++)0===m&&(u=e[d++],m=32,g=0),m>=i?(f=u>>>g&h,m-=i,g+=i):(f=u>>>g&h,m=32-(c=i-m),f|=((u=e[d++])&(1<<c)-1)<<i-c,g=c),t[l]=a[f];else{var p=Math.ceil((o-n)/s);for(l=0;l<r;l++)0===m&&(u=e[d++],m=32,g=0),m>=i?(f=u>>>g&h,m-=i,g+=i):(f=u>>>g&h,m=32-(c=i-m),f|=((u=e[d++])&(1<<c)-1)<<i-c,g=c),t[l]=f<p?n+f*s:o}return t},H=function(e,t,i,r,a,n){var s,o=(1<<t)-1,l=0,f=0,u=0,c=0,h=0,d=0,m=[],g=Math.ceil((n-r)/a);for(f=0;f<i;f++)0===c&&(s=e[l++],c=32,d=0),c>=t?(h=s>>>d&o,c-=t,d+=t):(h=s>>>d&o,c=32-(u=t-c),h|=((s=e[l++])&(1<<u)-1)<<t-u,d=u),m[f]=h<g?r+h*a:n;return m.unshift(r),m},_=function(e,t,i,r){var a,n,s,o,l=(1<<i)-1,f=0,u=0,c=4*e.length-Math.ceil(i*r/8);for(e[e.length-1]<<=8*c,a=0;a<r;a++)0===u&&(s=e[f++],u=32),u>=i?(n=s>>>u-i&l,u-=i):(n=(s&l)<<(o=i-u)&l,n+=(s=e[f++])>>>(u=32-o)),t[a]=n;return t},Y=function(e,t,i,r){var a,n,s,o,l=(1<<i)-1,f=0,u=0,c=0;for(a=0;a<r;a++)0===u&&(s=e[f++],u=32,c=0),u>=i?(n=s>>>c&l,u-=i,c+=i):(n=s>>>c&l,u=32-(o=i-u),n|=((s=e[f++])&(1<<o)-1)<<i-o,c=o),t[a]=n;return t},X={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(e){for(var t=65535,i=65535,r=e.length,a=Math.floor(r/2),n=0;a;){var s=a>=359?359:a;a-=s;do{t+=e[n++]<<8,i+=t+=e[n++]}while(--s);t=(65535&t)+(t>>>16),i=(65535&i)+(i>>>16)}return 1&r&&(i+=t+=e[n]<<8),((i=(65535&i)+(i>>>16))<<16|(t=(65535&t)+(t>>>16)))>>>0},readHeaderInfo:function(e,t){var i=t.ptr,r=new Uint8Array(e,i,6),a={};if(a.fileIdentifierString=String.fromCharCode.apply(null,r),0!==a.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+a.fileIdentifierString;i+=6;var n,s=new DataView(e,i,8),o=s.getInt32(0,!0);if(a.fileVersion=o,i+=4,o>=3&&(a.checksum=s.getUint32(4,!0),i+=4),s=new DataView(e,i,12),a.height=s.getUint32(0,!0),a.width=s.getUint32(4,!0),i+=8,o>=4?(a.numDims=s.getUint32(8,!0),i+=4):a.numDims=1,s=new DataView(e,i,40),a.numValidPixel=s.getUint32(0,!0),a.microBlockSize=s.getInt32(4,!0),a.blobSize=s.getInt32(8,!0),a.imageType=s.getInt32(12,!0),a.maxZError=s.getFloat64(16,!0),a.zMin=s.getFloat64(24,!0),a.zMax=s.getFloat64(32,!0),i+=40,t.headerInfo=a,t.ptr=i,o>=3&&(n=o>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(e,i-n,a.blobSize-14))!==a.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(e,t){var i=t.headerInfo,r=this.getDataTypeArray(i.imageType),a=i.numDims*this.getDataTypeSize(i.imageType),n=this.readSubArray(e,t.ptr,r,a),s=this.readSubArray(e,t.ptr+a,r,a);t.ptr+=2*a;var o,l=!0;for(o=0;o<i.numDims;o++)if(n[o]!==s[o]){l=!1;break}return i.minValues=n,i.maxValues=s,l},readSubArray:function(e,t,i,r){var a;if(i===Uint8Array)a=new Uint8Array(e,t,r);else{var n=new ArrayBuffer(r);new Uint8Array(n).set(new Uint8Array(e,t,r)),a=new i(n)}return a},readMask:function(e,t){var i,r,a=t.ptr,n=t.headerInfo,s=n.width*n.height,o=n.numValidPixel,l=new DataView(e,a,4),f={};if(f.numBytes=l.getUint32(0,!0),a+=4,(0===o||s===o)&&0!==f.numBytes)throw"invalid mask";if(0===o)i=new Uint8Array(Math.ceil(s/8)),f.bitset=i,r=new Uint8Array(s),t.pixels.resultMask=r,a+=f.numBytes;else if(f.numBytes>0){i=new Uint8Array(Math.ceil(s/8));var u=(l=new DataView(e,a,f.numBytes)).getInt16(0,!0),c=2,h=0,d=0;do{if(u>0)for(;u--;)i[h++]=l.getUint8(c++);else for(d=l.getUint8(c++),u=-u;u--;)i[h++]=d;u=l.getInt16(c,!0),c+=2}while(c<f.numBytes);if(-32768!==u||h<i.length)throw"Unexpected end of mask RLE encoding";r=new Uint8Array(s);var m=0,g=0;for(g=0;g<s;g++)7&g?(m=i[g>>3],m<<=7&g):m=i[g>>3],128&m&&(r[g]=1);t.pixels.resultMask=r,f.bitset=i,a+=f.numBytes}return t.ptr=a,t.mask=f,!0},readDataOneSweep:function(e,t,i){var r,a=t.ptr,n=t.headerInfo,s=n.numDims,o=n.width*n.height,l=n.imageType,f=n.numValidPixel*X.getDataTypeSize(l)*s,u=t.pixels.resultMask;if(i===Uint8Array)r=new Uint8Array(e,a,f);else{var c=new ArrayBuffer(f);new Uint8Array(c).set(new Uint8Array(e,a,f)),r=new i(c)}if(r.length===o*s)t.pixels.resultPixels=r;else{t.pixels.resultPixels=new i(o*s);var h=0,d=0,m=0,g=0;if(s>1)for(m=0;m<s;m++)for(g=m*o,d=0;d<o;d++)u[d]&&(t.pixels.resultPixels[g+d]=r[h++]);else for(d=0;d<o;d++)u[d]&&(t.pixels.resultPixels[d]=r[h++])}return a+=f,t.ptr=a,!0},readHuffmanTree:function(e,t){var i=this.HUFFMAN_LUT_BITS_MAX,r=new DataView(e,t.ptr,16);if(t.ptr+=16,r.getInt32(0,!0)<2)throw"unsupported Huffman version";var a=r.getInt32(4,!0),n=r.getInt32(8,!0),s=r.getInt32(12,!0);if(n>=s)return!1;var o=new Uint32Array(s-n);X.decodeBits(e,t,o);var l,f,u,c,h=[];for(l=n;l<s;l++)h[f=l-(l<a?0:a)]={first:o[l-n],second:null};var d=e.byteLength-t.ptr,m=Math.ceil(d/4),g=new ArrayBuffer(4*m);new Uint8Array(g).set(new Uint8Array(e,t.ptr,d));var p,w=new Uint32Array(g),x=0,y=0;for(p=w[0],l=n;l<s;l++)(c=h[f=l-(l<a?0:a)].first)>0&&(h[f].second=p<<x>>>32-c,32-x>=c?32===(x+=c)&&(x=0,p=w[++y]):(x+=c-32,p=w[++y],h[f].second|=p>>>32-x));var k=0,I=0,b=new W;for(l=0;l<h.length;l++)void 0!==h[l]&&(k=Math.max(k,h[l].first));I=k>=i?i:k,k>=30&&console.log("WARning, large NUM LUT BITS IS "+k);var v,U,T,M,A,V=[];for(l=n;l<s;l++)if((c=h[f=l-(l<a?0:a)].first)>0)if(v=[c,f],c<=I)for(U=h[f].second<<I-c,T=1<<I-c,u=0;u<T;u++)V[U|u]=v;else for(U=h[f].second,A=b,M=c-1;M>=0;M--)U>>>M&1?(A.right||(A.right=new W),A=A.right):(A.left||(A.left=new W),A=A.left),0===M&&!A.val&&(A.val=v[1]);return{decodeLut:V,numBitsLUTQick:I,numBitsLUT:k,tree:b,stuffedData:w,srcPtr:y,bitPos:x}},readHuffman:function(e,t,i){var r,a,n,s,o,l,f,u,c,h=t.headerInfo,d=h.numDims,m=t.headerInfo.height,g=t.headerInfo.width,p=g*m,w=this.readHuffmanTree(e,t),x=w.decodeLut,y=w.tree,k=w.stuffedData,I=w.srcPtr,b=w.bitPos,v=w.numBitsLUTQick,U=w.numBitsLUT,T=0===t.headerInfo.imageType?128:0,M=t.pixels.resultMask,A=0;b>0&&(I++,b=0);var V,D=k[I],B=1===t.encodeMode,S=new i(p*d),P=S;for(V=0;V<h.numDims;V++){if(d>1&&(P=new i(S.buffer,p*V,p),A=0),t.headerInfo.numValidPixel===g*m)for(u=0,l=0;l<m;l++)for(f=0;f<g;f++,u++){if(a=0,o=s=D<<b>>>32-v,32-b<v&&(o=s|=k[I+1]>>>64-b-v),x[o])a=x[o][1],b+=x[o][0];else for(o=s=D<<b>>>32-U,32-b<U&&(o=s|=k[I+1]>>>64-b-U),r=y,c=0;c<U;c++)if(!(r=s>>>U-c-1&1?r.right:r.left).left&&!r.right){a=r.val,b=b+c+1;break}b>=32&&(b-=32,D=k[++I]),n=a-T,B?(n+=f>0?A:l>0?P[u-g]:A,n&=255,P[u]=n,A=n):P[u]=n}else for(u=0,l=0;l<m;l++)for(f=0;f<g;f++,u++)if(M[u]){if(a=0,o=s=D<<b>>>32-v,32-b<v&&(o=s|=k[I+1]>>>64-b-v),x[o])a=x[o][1],b+=x[o][0];else for(o=s=D<<b>>>32-U,32-b<U&&(o=s|=k[I+1]>>>64-b-U),r=y,c=0;c<U;c++)if(!(r=s>>>U-c-1&1?r.right:r.left).left&&!r.right){a=r.val,b=b+c+1;break}b>=32&&(b-=32,D=k[++I]),n=a-T,B?(f>0&&M[u-1]?n+=A:l>0&&M[u-g]?n+=P[u-g]:n+=A,n&=255,P[u]=n,A=n):P[u]=n}t.ptr=t.ptr+4*(I+1)+(b>0?4:0)}t.pixels.resultPixels=S},decodeBits:function(e,t,i,r,a){var n=t.headerInfo,s=n.fileVersion,o=0,l=e.byteLength-t.ptr>=5?5:e.byteLength-t.ptr,f=new DataView(e,t.ptr,l),u=f.getUint8(0);o++;var c=u>>6,h=0===c?4:3-c,d=(32&u)>0,m=31&u,g=0;if(1===h)g=f.getUint8(o),o++;else if(2===h)g=f.getUint16(o,!0),o+=2;else{if(4!==h)throw"Invalid valid pixel count type";g=f.getUint32(o,!0),o+=4}var p,w,x,y,k,I,b,v,U,T=2*n.maxZError,M=n.numDims>1?n.maxValues[a]:n.zMax;if(d){for(t.counter.lut++,v=f.getUint8(o),o++,y=Math.ceil((v-1)*m/8),k=Math.ceil(y/4),w=new ArrayBuffer(4*k),x=new Uint8Array(w),t.ptr+=o,x.set(new Uint8Array(e,t.ptr,y)),b=new Uint32Array(w),t.ptr+=y,U=0;v-1>>>U;)U++;y=Math.ceil(g*U/8),k=Math.ceil(y/4),w=new ArrayBuffer(4*k),(x=new Uint8Array(w)).set(new Uint8Array(e,t.ptr,y)),p=new Uint32Array(w),t.ptr+=y,I=s>=3?H(b,m,v-1,r,T,M):R(b,m,v-1,r,T,M),s>=3?z(p,i,U,g,I):O(p,i,U,g,I)}else t.counter.bitstuffer++,U=m,t.ptr+=o,U>0&&(y=Math.ceil(g*U/8),k=Math.ceil(y/4),w=new ArrayBuffer(4*k),(x=new Uint8Array(w)).set(new Uint8Array(e,t.ptr,y)),p=new Uint32Array(w),t.ptr+=y,s>=3?null===r?Y(p,i,U,g):z(p,i,U,g,!1,r,T,M):null===r?_(p,i,U,g):O(p,i,U,g,!1,r,T,M))},readTiles:function(e,t,i){var r=t.headerInfo,a=r.width,n=r.height,s=r.microBlockSize,o=r.imageType,l=X.getDataTypeSize(o),f=Math.ceil(a/s),u=Math.ceil(n/s);t.pixels.numBlocksY=u,t.pixels.numBlocksX=f,t.pixels.ptr=0;var c,h,d,m,g,p,w,x,y=0,k=0,I=0,b=0,v=0,U=0,T=0,M=0,A=0,V=0,D=0,B=0,S=0,P=0,E=0,F=new i(s*s),C=n%s||s,L=a%s||s,N=r.numDims,O=t.pixels.resultMask,R=t.pixels.resultPixels;for(I=0;I<u;I++)for(v=I!==u-1?s:C,b=0;b<f;b++)for(V=I*a*s+b*s,D=a-(U=b!==f-1?s:L),x=0;x<N;x++){if(N>1&&(R=new i(t.pixels.resultPixels.buffer,a*n*x*l,a*n)),T=e.byteLength-t.ptr,h={},E=0,E++,A=(M=(c=new DataView(e,t.ptr,Math.min(10,T))).getUint8(0))>>6&255,(M>>2&15)!=(b*s>>3&15))throw"integrity issue";if((g=3&M)>3)throw t.ptr+=E,"Invalid block encoding ("+g+")";if(2!==g)if(0===g){if(t.counter.uncompressed++,t.ptr+=E,B=(B=v*U*l)<(S=e.byteLength-t.ptr)?B:S,d=new ArrayBuffer(B%l==0?B:B+l-B%l),new Uint8Array(d).set(new Uint8Array(e,t.ptr,B)),m=new i(d),P=0,O)for(y=0;y<v;y++){for(k=0;k<U;k++)O[V]&&(R[V]=m[P++]),V++;V+=D}else for(y=0;y<v;y++){for(k=0;k<U;k++)R[V++]=m[P++];V+=D}t.ptr+=P*l}else if(p=X.getDataTypeUsed(o,A),w=X.getOnePixel(h,E,p,c),E+=X.getDataTypeSize(p),3===g)if(t.ptr+=E,t.counter.constantoffset++,O)for(y=0;y<v;y++){for(k=0;k<U;k++)O[V]&&(R[V]=w),V++;V+=D}else for(y=0;y<v;y++){for(k=0;k<U;k++)R[V++]=w;V+=D}else if(t.ptr+=E,X.decodeBits(e,t,F,w,x),E=0,O)for(y=0;y<v;y++){for(k=0;k<U;k++)O[V]&&(R[V]=F[E++]),V++;V+=D}else for(y=0;y<v;y++){for(k=0;k<U;k++)R[V++]=F[E++];V+=D}else t.counter.constant++,t.ptr+=E}},formatFileInfo:function(e){return{fileIdentifierString:e.headerInfo.fileIdentifierString,fileVersion:e.headerInfo.fileVersion,imageType:e.headerInfo.imageType,height:e.headerInfo.height,width:e.headerInfo.width,numValidPixel:e.headerInfo.numValidPixel,microBlockSize:e.headerInfo.microBlockSize,blobSize:e.headerInfo.blobSize,maxZError:e.headerInfo.maxZError,pixelType:X.getPixelType(e.headerInfo.imageType),eofOffset:e.eofOffset,mask:e.mask?{numBytes:e.mask.numBytes}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,maxValue:e.headerInfo.zMax,minValue:e.headerInfo.zMin,noDataValue:e.noDataValue}}},constructConstantSurface:function(e){var t=e.headerInfo.zMax,i=e.headerInfo.numDims,r=e.headerInfo.height*e.headerInfo.width,a=r*i,n=0,s=0,o=0,l=e.pixels.resultMask;if(l)if(i>1)for(n=0;n<i;n++)for(o=n*r,s=0;s<r;s++)l[s]&&(e.pixels.resultPixels[o+s]=t);else for(s=0;s<r;s++)l[s]&&(e.pixels.resultPixels[s]=t);else if(e.pixels.resultPixels.fill)e.pixels.resultPixels.fill(t);else for(s=0;s<a;s++)e.pixels.resultPixels[s]=t},getDataTypeArray:function(e){var t;switch(e){case 0:t=Int8Array;break;case 1:t=Uint8Array;break;case 2:t=Int16Array;break;case 3:t=Uint16Array;break;case 4:t=Int32Array;break;case 5:t=Uint32Array;break;case 6:default:t=Float32Array;break;case 7:t=Float64Array}return t},getPixelType:function(e){var t;switch(e){case 0:t="S8";break;case 1:t="U8";break;case 2:t="S16";break;case 3:t="U16";break;case 4:t="S32";break;case 5:t="U32";break;case 6:default:t="F32";break;case 7:t="F64"}return t},isValidPixelValue:function(e,t){if(null===t)return!1;var i;switch(e){case 0:i=t>=-128&&t<=127;break;case 1:i=t>=0&&t<=255;break;case 2:i=t>=-32768&&t<=32767;break;case 3:i=t>=0&&t<=65536;break;case 4:i=t>=-2147483648&&t<=2147483647;break;case 5:i=t>=0&&t<=4294967296;break;case 6:i=t>=-34027999387901484e22&&t<=34027999387901484e22;break;case 7:i=t>=5e-324&&t<=17976931348623157e292;break;default:i=!1}return i},getDataTypeSize:function(e){var t=0;switch(e){case 0:case 1:t=1;break;case 2:case 3:t=2;break;case 4:case 5:case 6:t=4;break;case 7:t=8;break;default:t=e}return t},getDataTypeUsed:function(e,t){var i=e;switch(e){case 2:case 4:i=e-t;break;case 3:case 5:i=e-2*t;break;case 6:i=0===t?e:1===t?2:1;break;case 7:i=0===t?e:e-2*t+1;break;default:i=e}return i},getOnePixel:function(e,t,i,r){var a=0;switch(i){case 0:a=r.getInt8(t);break;case 1:a=r.getUint8(t);break;case 2:a=r.getInt16(t,!0);break;case 3:a=r.getUint16(t,!0);break;case 4:a=r.getInt32(t,!0);break;case 5:a=r.getUInt32(t,!0);break;case 6:a=r.getFloat32(t,!0);break;case 7:a=r.getFloat64(t,!0);break;default:throw"the decoder does not understand this pixel type"}return a}},W=function(e,t,i){this.val=e,this.left=t,this.right=i},Z={decode:function(e,t){var i=(t=t||{}).noDataValue,r=0,a={};if(a.ptr=t.inputOffset||0,a.pixels={},X.readHeaderInfo(e,a)){var n=a.headerInfo,s=n.fileVersion,o=X.getDataTypeArray(n.imageType);X.readMask(e,a),n.numValidPixel!==n.width*n.height&&!a.pixels.resultMask&&(a.pixels.resultMask=t.maskData);var l,f=n.width*n.height;if(a.pixels.resultPixels=new o(f*n.numDims),a.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},0!==n.numValidPixel)if(n.zMax===n.zMin)X.constructConstantSurface(a);else if(s>=4&&X.checkMinMaxRanges(e,a))X.constructConstantSurface(a);else{var u=new DataView(e,a.ptr,2),c=u.getUint8(0);if(a.ptr++,c)X.readDataOneSweep(e,a,o);else if(s>1&&n.imageType<=1&&Math.abs(n.maxZError-.5)<1e-5){var h=u.getUint8(1);if(a.ptr++,a.encodeMode=h,h>2||s<4&&h>1)throw"Invalid Huffman flag "+h;h?X.readHuffman(e,a,o):X.readTiles(e,a,o)}else X.readTiles(e,a,o)}a.eofOffset=a.ptr,t.inputOffset?(l=a.headerInfo.blobSize+t.inputOffset-a.ptr,Math.abs(l)>=1&&(a.eofOffset=t.inputOffset+a.headerInfo.blobSize)):(l=a.headerInfo.blobSize-a.ptr,Math.abs(l)>=1&&(a.eofOffset=a.headerInfo.blobSize));var d={width:n.width,height:n.height,pixelData:a.pixels.resultPixels,minValue:n.zMin,maxValue:n.zMax,validPixelCount:n.numValidPixel,dimCount:n.numDims,dimStats:{minValues:n.minValues,maxValues:n.maxValues},maskData:a.pixels.resultMask};if(a.pixels.resultMask&&X.isValidPixelValue(n.imageType,i)){var m=a.pixels.resultMask;for(r=0;r<f;r++)m[r]||(d.pixelData[r]=i);d.noDataValue=i}return a.noDataValue=i,t.returnFileInfo&&(d.fileInfo=X.formatFileInfo(a)),d}},getBandCount:function(e){for(var t=0,i=0,r={ptr:0,pixels:{}};i<e.byteLength-58;)X.readHeaderInfo(e,r),i+=r.headerInfo.blobSize,t++,r.ptr=i;return t}},q=Z,j=function(){var e=new ArrayBuffer(4),t=new Uint8Array(e);return new Uint32Array(e)[0]=1,1===t[0]}(),Q={decode:function(e,t){if(!j)throw"Big endian system is not supported.";var i,r,a,n,s,o=(t=t||{}).inputOffset||0,l=new Uint8Array(e,o,10),f=String.fromCharCode.apply(null,l);if("CntZImage"===f.trim())i=G,r=1;else{if("Lerc2"!==f.substring(0,5))throw"Unexpected file identifier string: "+f;i=q,r=2}for(var u,c,h,d=0,m=e.byteLength-10,g=[],p={width:0,height:0,pixels:[],pixelType:t.pixelType,mask:null,statistics:[]};o<m;){var w=i.decode(e,{inputOffset:o,encodedMaskData:u,maskData:h,returnMask:0===d,returnEncodedMask:0===d,returnFileInfo:!0,pixelType:t.pixelType||null,noDataValue:t.noDataValue||null});o=w.fileInfo.eofOffset,0===d&&(u=w.encodedMaskData,h=w.maskData,p.width=w.width,p.height=w.height,p.dimCount=w.dimCount||1,p.pixelType=w.pixelType||w.fileInfo.pixelType,p.mask=w.maskData),r>1&&w.fileInfo.mask&&w.fileInfo.mask.numBytes>0&&g.push(w.maskData),d++,p.pixels.push(w.pixelData),p.statistics.push({minValue:w.minValue,maxValue:w.maxValue,noDataValue:w.noDataValue,dimStats:w.dimStats})}if(r>1&&g.length>1){for(s=p.width*p.height,p.bandMasks=g,(h=new Uint8Array(s)).set(g[0]),a=1;a<g.length;a++)for(c=g[a],n=0;n<s;n++)h[n]=h[n]&c[n];p.maskData=h}return p}},J.Lerc=Q;var K=J.Lerc;return m((function(t,i){if(t.encoding===P.LERC){var r;try{r=K.decode(t.heightmap)}catch(e){throw new d.t(e)}if(r.statistics[0].minValue===Number.MAX_VALUE)throw new d.t("Invalid tile data");t.heightmap=r.pixels[0],t.width=r.width,t.height=r.height}t.ellipsoid=e.t.clone(t.ellipsoid),t.rectangle=e.h.clone(t.rectangle);var a=E.computeVertices(t),n=a.vertices;return i.push(n.buffer),{vertices:n.buffer,numberOfAttributes:a.encoding.getStride(),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight,gridWidth:t.width,gridHeight:t.height,boundingSphere3D:a.boundingSphere3D,orientedBoundingBox:a.orientedBoundingBox,occludeePointInScaledSpace:a.occludeePointInScaledSpace,encoding:a.encoding,westIndicesSouthToNorth:a.westIndicesSouthToNorth,southIndicesEastToWest:a.southIndicesEastToWest,eastIndicesNorthToSouth:a.eastIndicesNorthToSouth,northIndicesWestToEast:a.northIndicesWestToEast}}))}));
|