UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.02 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{create as e}from"../../../../geometry/support/aaBoundingRect.js";import{getWorldWidth as i}from"../../viewpointUtils.js";import{RasterTile as t}from"./RasterTile.js";import{WGLDrawPhase as s}from"../webgl/enums.js";import o from"../webgl/TileContainer.js";import{RasterColorizerTechnique as r}from"../webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js";import{RasterProcessorTechnique as n}from"../webgl/shaderGraph/techniques/raster/RasterProcessorTechnique.js";class c extends o{constructor(){super(...arguments),this.isCustomTilingScheme=!1}createTile(e){const i=this._getTileBounds(e),[s,o]=this.tileInfoView.tileInfo.size,r=this.tileInfoView.getTileResolution(e.level);return new t(e,r,i[0],i[3],s,o)}onAttach(){super.onAttach(),this._colorizerTechnique=new r,this._processorTechnique=new n}onDetach(){super.onDetach(),this._colorizerTechnique?.shutdown(),this._colorizerTechnique=void 0,this._processorTechnique?.shutdown(),this._processorTechnique=void 0}doRender(e){if(!this.visible||e.drawPhase!==s.MAP||!this._colorizerTechnique)return;const{rasterFunctionChain:i}=this;if(i?.functions?.length){if(!this._processorTechnique)return;const{functions:t,hasBranches:s}=i;for(const i of t){if("Constant"===i.name||"Identity"===i.name)continue;e.rasterFunction=i,e.hasBranches=s,super.doRender(e);const t=this.children.map((e=>e.bitmap));this._processorTechnique.render(e,{bitmaps:t})}}e.rasterFunction=null,super.doRender(e);const t=this.children.map((e=>e.bitmap));this._colorizerTechnique.render(e,{bitmaps:t})}_getTileBounds(t){const s=this.tileInfoView.getTileBounds(e(),t);if(this.isCustomTilingScheme&&t.world){const{tileInfo:e}=this.tileInfoView,o=i(e.spatialReference);if(o){const i=e.lodAt(t.level);if(!i)return s;const{resolution:r}=i,n=r*e.size[0];s[0]=o*t.world+e.origin.x+t.col*n,s[2]=s[0]+n}}return s}}export{c as RasterTileContainer};