UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 3.65 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Graphic.js";import i from"../../../../core/Accessor.js";import r from"../../../../core/Logger.js";import{isAbortError as a}from"../../../../core/promiseUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/RandomLCG.js";import{subclass as o}from"../../../../core/accessorSupport/decorators/subclass.js";import{mosaicPixelData as p}from"../../../../layers/support/rasterFunctions/pixelUtils.js";import{BitmapContainer as n}from"../../engine/BitmapContainer.js";import{Container as l}from"../../engine/Container.js";import c from"../../engine/ImageryBitmapSource.js";import h from"../support/ExportStrategy.js";let m=class extends i{constructor(){super(...arguments),this.attached=!1,this.container=new l,this.updateRequested=!1,this.type="imagery",this._bitmapView=new n}destroy(){this.attached&&(this.detach(),this.attached=!1),this.updateRequested=!1}get updating(){return!this.attached||this.isUpdating()}update(t){this.strategy.update(t).catch((t=>{a(t)||r.getLogger(this).error(t)}))}hitTest(t){return new e({attributes:{},geometry:t.clone(),layer:this.layer})}attach(){this.container.addChild(this._bitmapView);const t=this.layer.version>=10,e=this.layer.version>=10.1?this.layer.imageMaxHeight:2048,i=this.layer.version>=10.1?this.layer.imageMaxWidth:2048;this.strategy=new h({container:this._bitmapView,imageNormalizationSupported:t,imageMaxHeight:e,imageMaxWidth:i,fetchSource:this._fetchImage.bind(this),requestUpdate:()=>this.requestUpdate()})}detach(){this.strategy.destroy(),this._bitmapView.removeAllChildren(),this.container.removeAllChildren(),this.updateRequested=!1}redraw(){this.strategy.updateExports((async t=>{const{source:e}=t;if(!e||e instanceof ImageBitmap)return;const i=await this.layer.applyRenderer({extent:e.extent,pixelBlock:e.originalPixelBlock??e.pixelBlock});e.filter=t=>this.layer.pixelFilter?this.layer.applyFilter(t):{...i,extent:e.extent}})).catch((t=>{a(t)||r.getLogger(this).error(t)}))}requestUpdate(){this.updateRequested||(this.updateRequested=!0,this.view.requestUpdate())}isUpdating(){return this.strategy.updating||this.updateRequested}getPixelData(){if(this.updating)return null;const t=this.strategy.bitmaps;if(1===t.length&&t[0].source)return{extent:t[0].source.extent,pixelBlock:t[0].source.originalPixelBlock};if(t.length>1){const e=this.view.extent,i=t.map((t=>t.source)).filter((t=>t.extent&&t.extent.intersects(e))).map((t=>({extent:t.extent,pixelBlock:t.originalPixelBlock}))),r=p(i,e);return null!=r?{extent:r.extent,pixelBlock:r.pixelBlock}:null}return null}async _fetchImage(t,e,i,r){(r=r||{}).timeExtent=this.timeExtent,r.requestAsImageElement=!0,r.returnImageBitmap=!0;const a=await this.layer.internalFetchImage(t,e,i,r);if(a.imageBitmap)return a.imageBitmap;const s=await this.layer.applyRenderer(a.pixelData,{signal:r.signal}),o=new c(s.pixelBlock,s.extent?.clone(),a.pixelData.pixelBlock);return o.filter=t=>this.layer.applyFilter(t),o}};t([s()],m.prototype,"attached",void 0),t([s()],m.prototype,"container",void 0),t([s()],m.prototype,"layer",void 0),t([s()],m.prototype,"strategy",void 0),t([s()],m.prototype,"timeExtent",void 0),t([s()],m.prototype,"view",void 0),t([s()],m.prototype,"updateRequested",void 0),t([s()],m.prototype,"updating",null),t([s()],m.prototype,"type",void 0),m=t([o("esri.views.2d.layers.imagery.ImageryView2D")],m);export{m as default};