@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.72 kB
JavaScript
import{create as e}from"../../../../geometry/support/aaBoundingRect.js";import{getWorldWidth as s}from"../../viewpointUtils.js";import t from"./BrushRasterBitmap.js";import{RasterTile as r}from"./RasterTile.js";import{WGLDrawPhase as i}from"../webgl/enums.js";import n from"../webgl/TileContainer.js";class o extends n{constructor(){super(...arguments),this.isCustomTilingScheme=!1}createTile(e){const s=this._getTileBounds(e),[t,i]=this._tileInfoView.tileInfo.size,n=this._tileInfoView.getTileResolution(e.level);return new r(e,n,s[0],s[3],t,i)}prepareRenderPasses(e){const s=e.registerRenderPass({name:"imagery (tile)",brushes:[t],target:()=>this.children.map((e=>e.bitmap)),drawPhase:i.MAP});return[...super.prepareRenderPasses(e),s]}doRender(e){if(!this.visible||e.drawPhase!==i.MAP)return;const{rasterFunctionChain:s}=this;if(!s)return e.renderPass="raster-bitmap",void super.doRender(e);const[t,r]=this._tileInfoView.tileInfo.size;if(e.renderPass="raster",e.rasterFunction={name:"Reproject",parameters:{targetImageSize:[t,r]},pixelType:"f32",id:0,isNoopProcess:!1},super.doRender(e),s?.functions.length){const{functions:t,hasBranches:r}=s;for(let s=0;s<t.length;s++){const i=t[s];"Constant"!==i.name&&"Identity"!==i.name&&(e.renderPass="raster",e.rasterFunction=i,e.hasBranches=r,super.doRender(e))}}e.rasterFunction=null,e.renderPass="bitmap",super.doRender(e)}_getTileBounds(t){const r=this._tileInfoView.getTileBounds(e(),t);if(this.isCustomTilingScheme&&t.world){const{tileInfo:e}=this._tileInfoView,i=s(e.spatialReference);if(i){const s=e.lodAt(t.level);if(!s)return r;const{resolution:n}=s,o=i/n%e.size[0],a=o?(e.size[0]-o)*n:0;r[0]-=a*t.world,r[2]-=a*t.world}}return r}}export{o as RasterTileContainer};