@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.6 kB
JavaScript
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Graphic.js";import i from"../../../../core/Accessor.js";import r from"../../../../core/Logger.js";import{isSome as s}from"../../../../core/maybe.js";import{isAbortError as a}from"../../../../core/promiseUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import{subclass as p}from"../../../../core/accessorSupport/decorators/subclass.js";import{mosaicPixelData as n}from"../../../../layers/support/rasterFunctions/pixelUtils.js";import{BitmapContainer as l}from"../../engine/BitmapContainer.js";import{Container as c}from"../../engine/Container.js";import h from"../../engine/ImageryBitmapSource.js";import m from"../support/ExportStrategy.js";let d=class extends i{constructor(){super(...arguments),this.attached=!1,this.container=new c,this.updateRequested=!1,this.type="imagery",this._bitmapView=new l}destroy(){this.attached&&(this.detach(),this.attached=!1),this.updateRequested=!1}get updating(){return!this.attached||this.isUpdating()}update(e){this.strategy.update(e).catch((e=>{a(e)||r.getLogger(this.declaredClass).error(e)}))}hitTest(e){return new t({attributes:{},geometry:e.clone(),layer:this.layer})}attach(){this.container.addChild(this._bitmapView);const e=this.layer.version>=10,t=this.layer.version>=10.1?this.layer.imageMaxHeight:2048,i=this.layer.version>=10.1?this.layer.imageMaxWidth:2048;this.strategy=new m({container:this._bitmapView,imageNormalizationSupported:e,imageMaxHeight:t,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 e=>{const{source:t}=e;if(!t||t instanceof ImageBitmap)return;const i=await this.layer.applyRenderer({extent:t.extent,pixelBlock:t.originalPixelBlock??t.pixelBlock});t.filter=e=>this.layer.pixelFilter?this.layer.applyFilter(e):{...i,extent:t.extent}})).catch((e=>{a(e)||r.getLogger(this.declaredClass).error(e)}))}requestUpdate(){this.updateRequested||(this.updateRequested=!0,this.view.requestUpdate())}isUpdating(){return this.strategy.updating||this.updateRequested}getPixelData(){if(this.updating)return null;const e=this.strategy.bitmaps;if(1===e.length&&e[0].source)return{extent:e[0].source.extent,pixelBlock:e[0].source.originalPixelBlock};if(e.length>1){const t=this.view.extent,i=e.map((e=>e.source)).filter((e=>e.extent&&e.extent.intersects(t))).map((e=>({extent:e.extent,pixelBlock:e.originalPixelBlock}))),r=n(i,t);return s(r)?{extent:r.extent,pixelBlock:r.pixelBlock}:null}return null}async _fetchImage(e,t,i,r){(r=r||{}).timeExtent=this.timeExtent,r.requestAsImageElement=!0,r.returnImageBitmap=!0;const s=await this.layer.fetchImage(e,t,i,r);if(s.imageBitmap)return s.imageBitmap;const a=await this.layer.applyRenderer(s.pixelData,{signal:r.signal}),o=new h(a.pixelBlock,a.extent?.clone(),s.pixelData.pixelBlock);return o.filter=e=>this.layer.applyFilter(e),o}};e([o()],d.prototype,"attached",void 0),e([o()],d.prototype,"container",void 0),e([o()],d.prototype,"layer",void 0),e([o()],d.prototype,"strategy",void 0),e([o()],d.prototype,"timeExtent",void 0),e([o()],d.prototype,"view",void 0),e([o()],d.prototype,"updateRequested",void 0),e([o()],d.prototype,"updating",null),e([o()],d.prototype,"type",void 0),d=e([p("esri.views.2d.layers.imagery.ImageryView2D")],d);const u=d;export{u as default};