@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.43 kB
JavaScript
import e from"../../../../core/Logger.js";import{f as r}from"../../../../chunks/vec4f64.js";import{BufferViewVec4u8 as t}from"../../../../geometry/support/buffer/BufferView.js";class o{constructor(){this.declaredClass="esri.views.3d.webgl-engine.lib.ObjectAndLayerIdRenderHelper",this.colorZero=new t(new ArrayBuffer(4)),this._uidToRenderColor=new Map,this._colorToUID=new Map,this._layerUidToGraphicsUidToObjectId=new Map,this._layerUidToId=new Map,this._layerUidToPopupEnabled=new Map}setUidToObjectAndLayerId(e,r,t,o,i,d=null,a=null,s=null){if(!(e&&r&&t&&o))return;if(this._layerUidToId.set(o,t),this._layerUidToPopupEnabled.set(o,i),!i)return;let n=this._layerUidToGraphicsUidToObjectId.get(o);n||(n=new Map,this._layerUidToGraphicsUidToObjectId.set(o,n)),n.set(r,{objectId:e,attributeNodeId:d,attributeIndex:a,subLayerId:s})}getObjectAndLayerIdColor(e){const t=this.getObjectAndLayerIdColorArray(e);return r(t.get(0,1),t.get(0,2),t.get(0,3),255)}getObjectAndLayerIdColorArray(r){if(!r.layerUid||!r.graphicUid)return this.colorZero;const o=this._layerUidToPopupEnabled.get(r.layerUid);if(void 0===o)return e.getLogger(this.declaredClass).warn("popupEnabled is undefined for layerUid "+r.layerUid),this.colorZero;if(!1===o)return this.colorZero;let i=this._uidToRenderColor.get(r.layerUid);i||(i=new Map,this._uidToRenderColor.set(r.layerUid,i));let d=i.get(r.graphicUid);if(!d){for(;!d;){const e=Math.floor(16777214*Math.random())+1;this._colorToUID.has(e)||(d=e)}if(d>16777215)throw new Error("Object ID Overflow");i.set(r.graphicUid,d),this._colorToUID.set(d,r)}const a=new ArrayBuffer(4);new DataView(a).setUint32(0,d,!1);return new t(a)}getColorToObjectAndLayerIdMapping(){const r=new Map;for(const[t,o]of this._colorToUID.entries()){const i=this._layerUidToGraphicsUidToObjectId.get(o.layerUid);let d=null;i?(d=i.get(o.graphicUid),d||e.getLogger(this.declaredClass).warn("getColorMapping: no entry found for graphicsId "+o.graphicUid)):e.getLogger(this.declaredClass).warn("getColorMapping: no entry found for layerUid "+o.layerUid);const a=this._layerUidToId.get(o.layerUid);a||e.getLogger(this.declaredClass).warn("no layerId found for uid "+o.layerUid),d&&a&&r.set(t,d.attributeNodeId?{type:"object-and-layer-and-i3s-id",oid:d.objectId,lid:a,attrId:d.attributeNodeId,attrIdx:d.attributeIndex,subLayerId:d.subLayerId}:{type:"object-and-layer-id",oid:d.objectId,lid:a})}return r}}export{o as ObjectAndLayerIdRenderHelper};