UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 2.98 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{BucketType as t}from"../enums.js";import{isCircleOverlapingRect as e}from"../GeometryUtils.js";import{VTLSymbol as s}from"./core.js";function o(t,e,s,o,i,l){const r=s-i;if(r>=0)return(e>>r)+(o-(l<<r))*(t>>r);const n=-r;return e-(l-(o<<n))*(t>>n)<<n}class i{constructor(t,e,s){this._rows=Math.ceil(e/s),this._columns=Math.ceil(t/s),this._cellSize=s,this.cells=new Array(this._rows);for(let o=0;o<this._rows;o++){this.cells[o]=new Array(this._columns);for(let t=0;t<this._columns;t++)this.cells[o][t]=[]}}getCell(t,e){const s=Math.min(Math.max(Math.floor(e/this._cellSize),0),this._rows-1),o=Math.min(Math.max(Math.floor(t/this._cellSize),0),this._columns-1);return this.cells[s]&&this.cells[s][o]||null}getCellSpan(t,e,s,o){return[Math.min(Math.max(Math.floor(t/this._cellSize),0),this.columns-1),Math.min(Math.max(Math.floor(e/this._cellSize),0),this.rows-1),Math.min(Math.max(Math.floor(s/this._cellSize),0),this.columns-1),Math.min(Math.max(Math.floor(o/this._cellSize),0),this.rows-1)]}get cellSize(){return this._cellSize}get columns(){return this._columns}get rows(){return this._rows}}function l(t,e,o,i,l,r,n){const c=e[i++];for(let a=0;a<c;a++){const c=new s(r,n);c.xTile=e[i++],c.yTile=e[i++],c.hash=e[i++],c.priority=e[i++],c.featureIndex=e[i++];const a=e[i++];for(let t=0;t<a;t++){const t=e[i++],s=e[i++],l=e[i++],r=e[i++],n=!!e[i++],a=e[i++],h=o[i++],u=o[i++],f=e[i++],m=e[i++];c.colliders.push({xTile:t,yTile:s,dxPixels:l,dyPixels:r,hard:n,partIndex:a,width:f,height:m,minLod:h,maxLod:u})}const h=t[i++];for(let e=0;e<h;e++)c.textVertexRanges.push([t[i++],t[i++]]);const u=t[i++];for(let e=0;e<u;e++)c.iconVertexRanges.push([t[i++],t[i++]]);l.push(c)}return i}function r(t,e,s){for(const[o,i]of t.symbols)n(t,e,s,i,o)}function n(e,s,o,i,l){const r=e.layerData.get(l);if(r.type===t.SYMBOL){for(const t of i){const s=t.unique;let i;if(t.selectedForRendering){const t=s.parts[0],l=t.startOpacity,r=t.targetOpacity;e.allSymbolsFadingOut=e.allSymbolsFadingOut&&0===r;const n=o?Math.floor(127*l)|r<<7:r?255:0;i=n<<24|n<<16|n<<8|n}else i=0;for(const[e,o]of t.iconVertexRanges)for(let t=e;t<e+o;t+=4)r.iconOpacity[t/4]=i;if(t.selectedForRendering){const t=s.parts[1],l=t.startOpacity,r=t.targetOpacity;e.allSymbolsFadingOut=e.allSymbolsFadingOut&&0===r;const n=o?Math.floor(127*l)|r<<7:r?255:0;i=n<<24|n<<16|n<<8|n}else i=0;for(const[e,o]of t.textVertexRanges)for(let t=e;t<e+o;t+=4)r.textOpacity[t/4]=i}r.lastOpacityUpdate=s,r.opacityChanged=!0}}function c(t,s,o,i){const l=t.colliders;let r,n,c,a;for(const h of l){if(t.unique.show&&t.unique.parts[h.partIndex].show&&(r=h.xScreen-i[0]+h.dxScreen,n=h.yScreen-i[1]+h.dyScreen,c=r+h.width,a=n+h.height,e(o,s.x,s.y,r,n,c,a)))return!0}return!1}export{i as GridIndex,l as deserializeSymbols,c as isSearchCircleOverlapingSymbol,o as tileCoordChange,r as writeOpacityToBuffers};