@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.79 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{removeUnordered as e}from"../../../core/arrayUtils.js";import t from"../../../core/Handles.js";import{makeHandle as s}from"../../../core/handleUtils.js";import"../../../core/has.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{watch as i,sync as n}from"../../../core/reactiveUtils.js";import{getReferenceEllipsoid as c}from"../../../geometry/ellipsoidUtils.js";import{ObjectResourceCache as a}from"../layers/graphics/ObjectResourceCache.js";import{ClientType as o}from"./index.js";import{StreamTextureCollection as p}from"./StreamTextureCollection.js";import{getSettings as l,getLabelSettings as h}from"../webgl-engine/lib/screenSizePerspectiveUtils.js";class S{constructor(e){this.streamDataRequester=null,this._graphicsOwners=[],this._screenSizePerspectiveHandles=null,this.cimSymbolRasterizer=null,this._viewState=e.viewState,this._view=e.view,this._pointsOfInterest=e.pointsOfInterest,this.streamDataRequester=e.resourceController.createStreamDataRequester(o.SYMBOLOGY),this.objectResourceCache=new a(((t,s)=>e.resourceController.memoryController.newCache(t,s))),this.textures=new p(this.streamDataRequester,e.view.stage,e.resourceController.scheduler);const t=c(this._view.spatialReference).radius;this.screenSizePerspectiveSettings=l(e.viewingMode,t),this.screenSizePerspectiveSettingsLabels=h(e.viewingMode,t)}destroy(){this.textures.destroy(),this.streamDataRequester=null}addGraphicsOwner(t){if(!t)return s();this._graphicsOwners.push(t);const r=i((()=>t.layer?.screenSizePerspectiveEnabled),(()=>this._updateScreenSizePerspectiveEnabled()));return this._updateScreenSizePerspectiveEnabled(),s((()=>{r.remove(),e(this._graphicsOwners,t),this._updateScreenSizePerspectiveEnabled()}))}_updateScreenSizePerspectiveEnabled(){const e=this._graphicsOwners.some((e=>!0===e.layer?.screenSizePerspectiveEnabled));if(e&&!this._screenSizePerspectiveHandles){this._screenSizePerspectiveHandles=new t;const e=()=>this._updateScreenSizePerspectiveSettings();this._screenSizePerspectiveHandles.add([i((()=>this._pointsOfInterest.centerOnSurfaceInfrequent.distance),e,n),this._viewState.events.on("camera-projection-changed",e)]),this._updateScreenSizePerspectiveSettings()}else e||(this._screenSizePerspectiveHandles=r(this._screenSizePerspectiveHandles))}_updateScreenSizePerspectiveSettings(){const e=this._pointsOfInterest;d.distance=e.centerOnSurfaceInfrequent.distance,d.fovY=this._viewState.camera.fovY,this.screenSizePerspectiveSettings.update(d),this.screenSizePerspectiveSettingsLabels.update(d),this._view.stage.renderView.requestRender()}get test(){}}const d={distance:0,fovY:0};export{S as SharedSymbolResources};