@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3.04 kB
JavaScript
import{create as e,offset as t,copy as r}from"../../../geometry/support/aaBoundingRect.js";import{RenderTargetType as s,OverlayIndex as i}from"./interfaces.js";import{ValidationState as a}from"../webgl-engine/lib/basicInterfaces.js";import{fromValues as o}from"../webgl-engine/lib/LocalOriginFactory.js";var n;!function(e){e[e.None=0]="None",e[e.ColorAndWater=1]="ColorAndWater",e[e.Highlight=2]="Highlight",e[e.Occluded=3]="Occluded",e[e.ObjectAndLayerIdColor=4]="ObjectAndLayerIdColor"}(n||(n={}));class h{get extent(){return this._extent}constructor(t,r){this.index=t,this.renderTargets=r,this._extent=e(),this.resolution=0,this.renderLocalOrigin=o(0,0,0,"O"),this.pixelRatio=1,this.mapUnitsPerPixel=1,this.canvasGeometries=new g,this.hasDrapedFeatureSource=!1,this.hasDrapedRasterSource=!1,this.hasTargetWithoutRasterImage=!1,this.index=t,this.validTargets=new Array(r.renderTargets.length).fill(!1)}getValidTexture(e){return this.validTargets[e]?this.renderTargets.getTarget(e).getTexture():null}get _needsColorWithoutRasterImage(){return this.hasDrapedRasterSource&&this.hasDrapedFeatureSource&&this.hasTargetWithoutRasterImage}getColorTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Color):e===n.Highlight?this.renderTargets.getTarget(s.Highlight):e===n.ObjectAndLayerIdColor?this.renderTargets.getTarget(s.ObjectAndLayerIdColor):this.renderTargets.getTarget(s.Occluded);return t?t.getTexture():null}getColorTextureNoRasterImage(){return this._needsColorWithoutRasterImage?this.getValidTexture(s.ColorNoRasterImage):this.hasDrapedFeatureSource?this.getValidTexture(s.Color):null}getNormalTexture(e){const t=e===n.ColorAndWater?this.renderTargets.getTarget(s.Water):null;return t?t.getTexture():null}draw(e,t){const r=this.computeRenderTargetValidityBitfield();for(const i of this.renderTargets.renderTargets)i.type!==s.ColorNoRasterImage||this._needsColorWithoutRasterImage?this.validTargets[i.type]=e.drawTarget(this,i,t):this.validTargets[i.type]=!1;return r^this.computeRenderTargetValidityBitfield()?a.CHANGED:a.UNCHANGED}computeRenderTargetValidityBitfield(){const e=this.validTargets;return+e[s.Color]|+e[s.ColorNoRasterImage]<<1|+e[s.Highlight]<<2|+e[s.Water]<<3|+e[s.Occluded]<<4}setupGeometryViewsCyclical(e){this.setupGeometryViewsDirect();const r=.001*e.range;if(this._extent[0]-r<=e.min){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,e.range,0,r)}if(this._extent[2]+r>=e.max){const r=this.canvasGeometries.extents[this.canvasGeometries.numViews++];t(this._extent,-e.range,0,r)}}setupGeometryViewsDirect(){this.canvasGeometries.numViews=1,r(this.canvasGeometries.extents[0],this._extent)}hasSomeSizedView(){for(let e=0;e<this.canvasGeometries.numViews;e++){const t=this.canvasGeometries.extents[e];if(t[0]!==t[2]&&t[1]!==t[3])return!0}return!1}applyViewport(e){e.setViewport(this.index===i.INNER?0:this.resolution,0,this.resolution,this.resolution)}}class g{constructor(){this.extents=[e(),e(),e()],this.numViews=0}}export{h as Overlay,n as OverlaySource};