{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/IMesri/tools/side.worker.ts","./src/IMesri/esri-main.ts","./src/IMesri/events/event-Management.ts","./src/IMesri/events/event-Manager.ts","./src/IMesri/events/hub.ts","./src/IMesri/events/prop.ts","./src/IMesri/graphics/engine-off-screen.ts","./src/IMesri/graphics/gl-tools.ts","./src/IMesri/graphics/webgl-setup-atlas.ts","./src/IMesri/graphics/webgl-setup-graphic.ts","./src/IMesri/layers/layer-setup.ts","./src/IMesri/map-object/locus.ts","./src/IMesri/map-object/map-base-object.ts","./src/IMesri/map-object/pole.ts","./src/IMesri/map-object/radar.ts","./src/IMesri/textures/basic-texture.ts","./src/IMesri/textures/shader.ts","./src/IMesri/tools/gis-compute.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/esri-map/esri-map.component.ts","./src/app/esri-map/esri-map.component.html","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","module.exports = __webpack_public_path__ + \"0-es2015.worker.js\"","// demo datas\r\n\r\n\r\nimport esri = __esri;\r\n\r\nimport { LayerSetup, LayersObject } from './layers/layer-setup';\r\nimport { MapBaseObject, PointInfo } from './map-object/map-base-object';\r\nimport { Compute } from './tools/gis-compute';\r\nimport { WebglSetupAtlas } from './graphics/webgl-setup-atlas';\r\nimport { EventManager } from './events/event-Manager';\r\nimport { Hub } from './events/hub';\r\nimport { Radar } from './map-object/radar';\r\nimport { Locus } from './map-object/locus';\r\nimport { Prop } from './events/prop';\r\n\r\n\r\nexport class EsriMain extends Hub {\r\n\r\n private __BaseLayerViewGL2D: any;\r\n private __webMercatorUtils: any;\r\n private __watchUtils: any;\r\n private __promiseUtils: any;\r\n private __GraphicsLayer: any;\r\n\r\n private _view: esri.MapView = null;\r\n private _esrimap: esri.Map = null;\r\n\r\n\r\n zoomLevel: number;\r\n layerSetup: LayerSetup;\r\n eventManager: EventManager;\r\n layers: LayersObject[] = [];\r\n polesData: any;\r\n\r\n // worker setup\r\n workerEnable = false;\r\n worker: Worker;\r\n sharedPositionBuffer: SharedArrayBuffer;\r\n data_sharedPositionBuffer: Float32Array;\r\n sharedBoundBuffer: SharedArrayBuffer;\r\n data_sharedBoundBuffer: Float32Array;\r\n sharedPoleIndexBuffer: SharedArrayBuffer;\r\n data_sharedPoleIndexBuffer: Int32Array;\r\n sharedIndexBuffer: SharedArrayBuffer;\r\n data_sharedIndexBuffer: Int32Array;\r\n w_getVisiblePoles = 'getVisiblePoles';\r\n radar: Radar[];\r\n locuses: Locus[];\r\n newDiv: HTMLDivElement;\r\n currentDiv: HTMLElement;\r\n\r\n\r\n constructor(__GraphicsLayer, __BaseLayerViewGL2D, __webMercatorUtils, __watchUtils, __promiseUtils, ) {\r\n super();\r\n this.__webMercatorUtils = __webMercatorUtils;\r\n this.__watchUtils = __watchUtils;\r\n this.__promiseUtils = __promiseUtils;\r\n this.__BaseLayerViewGL2D = __BaseLayerViewGL2D;\r\n this.__GraphicsLayer = __GraphicsLayer;\r\n\r\n this.eventManager = EventManager.getInstance();\r\n\r\n this.setWorker();\r\n\r\n // pass needed esri needed object or proporties\r\n // this.layerSetup = new LayerSetup(this.__GraphicsLayer, this.__BaseLayerViewGL2D, this.__webMercatorUtils, this.__watchUtils, this.__promiseUtils,this._view);\r\n }\r\n\r\n public viewinstanceIsSync() {\r\n this.layerSetup = new LayerSetup(this.__GraphicsLayer, this.__BaseLayerViewGL2D, this.__webMercatorUtils, this.__watchUtils, this.__promiseUtils, this._view);\r\n this.addListeners();\r\n \r\n \r\n }\r\n\r\n private addListeners() {\r\n\r\n this._view.on('click', (event) => this.clicOnMap(event));\r\n this._view.on('pointer-move', (event) => this.moveOnMap(event));\r\n\r\n\r\n\r\n this.__watchUtils.whenTrue(this._view, 'stationary', () => this.watchMap(true));\r\n this.__watchUtils.whenFalse(this._view, 'stationary', () => this.watchMap(false));\r\n // update view on drag\r\n // this._view.on('drag', (event) => this.watchMap());\r\n\r\n }\r\n\r\n private moveOnMap(event) {\r\n const devicePixelRatio = window.devicePixelRatio;\r\n Prop.X = event.x * devicePixelRatio;\r\n Prop.Y = event.y * devicePixelRatio;\r\n // for hoover cursor, etc ...\r\n const id = WebglSetupAtlas. SyncRenderBuffer() ;\r\n if (id === 0) {\r\n // receive pure black, so no relevant click\r\n return;\r\n }\r\n const pointInfo: PointInfo = MapBaseObject.HooverItem(id);\r\n\r\n if(!pointInfo) {\r\n return ; \r\n }\r\n\r\n if (this.newDiv) {\r\n this.currentDiv.removeChild(this.newDiv);\r\n this.newDiv = null;\r\n }\r\n this.newDiv = document.createElement('div');\r\n this.newDiv.style.position = 'absolute';\r\n this.newDiv.style.fontFamily='arial' ; \r\n this.newDiv.style.fontSize = '20px'\r\n this.newDiv.style.color = '#FFFFFF'\r\n const w =-200+ this._view.width / 2 + 'px'; \r\n \r\n\r\n this.newDiv.style.left = w ; \r\n this.newDiv.style.top = '0px';\r\n\r\n\r\n this.newDiv.style.backgroundColor = 'rgba(50, 50, 50, 0.9)'; \r\n // et lui donne un peu de contenu\r\n const st = pointInfo.lat + '\\r ' + pointInfo.lon + ' pop.' + pointInfo.index + ' name: ' + pointInfo.uuid;\r\n const newContent = document.createTextNode(st);\r\n // ajoute le nœud texte au nouveau div créé\r\n this.newDiv.appendChild(newContent);\r\n\r\n this.currentDiv = document.getElementById('viewDiv');\r\n this.currentDiv.appendChild(this.newDiv);\r\n\r\n\r\n }\r\n\r\n\r\n private clicOnMap(event) {\r\n // retrieve uniq welgl id from renderbuffer\r\n\r\n\r\n const devicePixelRatio = window.devicePixelRatio;\r\n const id = WebglSetupAtlas.OnDemandRenderBuffer();\r\n if (id === 0) {\r\n // receive pure black, so no relevant click\r\n return;\r\n }\r\n const pointInfo: PointInfo = MapBaseObject.SelectAndReturnClickInfo(id);\r\n\r\n console.log(pointInfo);\r\n\r\n // translate radar if a pole was clicked\r\n if (pointInfo.type === 'Locus') {\r\n // this.radar[0].setPosition(pointInfo.x, pointInfo.y);\r\n }\r\n\r\n \r\n if (this.newDiv) {\r\n this.currentDiv.removeChild(this.newDiv);\r\n this.newDiv = null;\r\n }\r\n this.newDiv = document.createElement('div');\r\n this.newDiv.style.position = 'absolute';\r\n this.newDiv.style.fontFamily='arial' ; \r\n this.newDiv.style.fontSize = '20px'\r\n this.newDiv.style.color = '#FFFFFF'\r\n const w =-200+ this._view.width / 2 + 'px'; \r\n \r\n\r\n this.newDiv.style.left = w ; \r\n this.newDiv.style.top = '0px';\r\n\r\n\r\n this.newDiv.style.backgroundColor = 'rgba(50, 50, 50, 0.9)'; \r\n // et lui donne un peu de contenu\r\n const st = pointInfo.lat + '\\r ' + pointInfo.lon + ' pop.' + pointInfo.index + ' name: ' + pointInfo.uuid;\r\n const newContent = document.createTextNode(st);\r\n // ajoute le nœud texte au nouveau div créé\r\n this.newDiv.appendChild(newContent);\r\n\r\n this.currentDiv = document.getElementById('viewDiv');\r\n this.currentDiv.appendChild(this.newDiv);\r\n\r\n\r\n // const newContent = document.createTextNode('Hi there and greeti lllllllllllllllllllngs!');\r\n\r\n\r\n this.sendClickItem(pointInfo);\r\n this.translateMap(pointInfo.lat, pointInfo.lon);\r\n\r\n // this.selectLocus('5e86616c46e0fb00012737d2') ;\r\n }\r\n\r\n public selectLocus(uuid: string) {\r\n for (let i = 0; i < this.locuses.length; i++) {\r\n if (uuid === this.locuses[i].uuid) {\r\n console.log('log find locus', i, this.locuses[i].uuid)\r\n this.translateMap(this.locuses[i]._x, this.locuses[i]._y)\r\n }\r\n }\r\n }\r\n\r\n\r\n public translateMap(lat: number, lon: number, _duration = 1000) {\r\n\r\n console.log('translate',lat,lon)\r\n const opts = {\r\n duration: _duration // Duration of animation will be 5 seconds\r\n };\r\n this._view.goTo({\r\n center: [lon, lat]\r\n }, opts).catch((error) => {\r\n if (error.name !== 'AbortError') {\r\n // console.log(error);\r\n }\r\n });\r\n }\r\n\r\n public setEsriMap(_esrimap) {\r\n this._esrimap = _esrimap;\r\n }\r\n\r\n public setEsriView(_view) {\r\n this._view = _view;\r\n }\r\n\r\n public addPoles(polesData, esriGraphicLayerID?: string): string {\r\n\r\n this.polesData = polesData;\r\n let j = 0;\r\n if (this.workerEnable) {\r\n for (let i = 0; i < polesData.length; i++) {\r\n this.data_sharedPositionBuffer[j++] = polesData[i]._x;\r\n this.data_sharedPositionBuffer[j++] = polesData[i]._y;\r\n }\r\n }\r\n\r\n if (esriGraphicLayerID === undefined) {\r\n // so no id provided so create a new layer\r\n const layer: LayersObject = this.layerSetup.addLayer(LayerSetup.Pole, this.polesData);\r\n // store layer\r\n this.layers[layer.esriGraphicLayer.id] = layer;\r\n // add layer to esrimap\r\n this._esrimap.add(layer.esriGraphicLayer);\r\n return layer.esriGraphicLayer.id;\r\n } else {\r\n // we have an id, layer exists, so only update pole data\r\n const layer: LayersObject = this.layers[esriGraphicLayerID];\r\n if (layer) {\r\n layer.webGLGraphicLayer.data = this.polesData;\r\n this.eventManager.dispatchEvent('renderNeedUpdateAll', 'ALL');\r\n // update poles count\r\n // this.watchMap();\r\n if (this.workerEnable) {\r\n this.worker.postMessage([this.w_getVisiblePoles]);\r\n }\r\n\r\n return layer.esriGraphicLayer.id;\r\n } else {\r\n console.error('unknown layer :', esriGraphicLayerID);\r\n }\r\n }\r\n }\r\n\r\n public addLocus(locus: Locus[]) {\r\n console.log(locus);\r\n this.locuses = locus;\r\n const layer = this.layerSetup.addLayer(LayerSetup.Locus, locus);\r\n this._esrimap.add(layer.esriGraphicLayer);\r\n\r\n }\r\n\r\n\r\n public addTarget(target_datas) {\r\n // const layer = this.layerSetup.addLayer(LayerSetup.Target, target_datas);\r\n // this._esrimap.add(layer.esriGraphicLayer);\r\n }\r\n\r\n public addRadar() {\r\n this.radar = [new Radar(40.79, -74.34, null, LayerSetup.Radar, null, null)];\r\n const layer = this.layerSetup.addLayer(LayerSetup.Radar, this.radar);\r\n this._esrimap.add(layer.esriGraphicLayer);\r\n\r\n }\r\n\r\n\r\n private watchMap(isStationnary) {\r\n\r\n if (isStationnary) {\r\n // map is stationary\r\n const view = this._view;\r\n this.zoomLevel = view.zoom;\r\n\r\n\r\n if (view.center) {\r\n // quadkey at center\r\n\r\n // boundingbox aabb in !WARNING! longitude,latitude\r\n const aabb: number[][] = [\r\n this.__webMercatorUtils.xyToLngLat(view.extent.xmin, view.extent.ymin),\r\n this.__webMercatorUtils.xyToLngLat(view.extent.xmax, view.extent.ymax)\r\n ];\r\n // quadkeys on screen\r\n const quadkeys = Compute.GetVisibleQuadkesy(aabb, this.zoomLevel);\r\n const quadkey = Compute.LatLongToQuadKey(view.center.latitude, view.center.longitude, Math.floor(view.zoom));\r\n\r\n const bound = [aabb[1][0], aabb[1][1], aabb[0][0], aabb[0][1]];\r\n\r\n if (this.workerEnable) {\r\n this.data_sharedBoundBuffer[0] = bound[0];\r\n this.data_sharedBoundBuffer[1] = bound[1];\r\n this.data_sharedBoundBuffer[2] = bound[2];\r\n this.data_sharedBoundBuffer[3] = bound[3];\r\n }\r\n\r\n if (this.workerEnable) {\r\n // this.worker.postMessage([this.w_getVisiblePoles]);\r\n } else {\r\n // this.getVisiblePoles(bound);\r\n }\r\n\r\n this.sendQuadkeys(quadkeys);\r\n }\r\n } else {\r\n // start moving\r\n \r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n private workerResponse(data) {\r\n switch (data) {\r\n case this.w_getVisiblePoles:\r\n this.sendVisiblePole(this.data_sharedIndexBuffer[0]);\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n private setWorker() {\r\n // set buffer and view\r\n if (typeof Worker !== 'undefined' && typeof SharedArrayBuffer !== 'undefined') {\r\n this.workerEnable = true;\r\n const arrayLength = 2 * 1048576;\r\n\r\n this.sharedPositionBuffer = new SharedArrayBuffer(arrayLength * Float32Array.BYTES_PER_ELEMENT);\r\n this.data_sharedPositionBuffer = new Float32Array(this.sharedPositionBuffer);\r\n\r\n this.sharedBoundBuffer = new SharedArrayBuffer(4 * Float32Array.BYTES_PER_ELEMENT);\r\n this.data_sharedBoundBuffer = new Float32Array(this.sharedBoundBuffer);\r\n\r\n this.sharedPoleIndexBuffer = new SharedArrayBuffer(arrayLength * Int32Array.BYTES_PER_ELEMENT);\r\n this.data_sharedPoleIndexBuffer = new Int32Array(this.sharedPoleIndexBuffer);\r\n\r\n this.sharedIndexBuffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT);\r\n this.data_sharedIndexBuffer = new Int32Array(this.sharedIndexBuffer);\r\n\r\n\r\n\r\n\r\n\r\n // Create a new\r\n this.worker = new Worker('../IMesri/tools/side.worker', { type: 'module' });\r\n this.worker.onmessage = ({ data }) => this.workerResponse(data);\r\n\r\n this.worker.postMessage(['fill',\r\n this.sharedPositionBuffer,\r\n this.sharedBoundBuffer,\r\n this.sharedPoleIndexBuffer,\r\n this.sharedIndexBuffer]);\r\n\r\n } else {\r\n this.workerEnable = false;\r\n console.log('worker not avalable, are you using safari, or Apple related thing ?');\r\n }\r\n }\r\n\r\n private getVisiblePoles(bound: number[]) {\r\n const uuidPolesArray = [];\r\n let count = 0;\r\n for (let i = 0; i < this.polesData.length; i++) {\r\n if (this.isInFustrum(this.polesData[i]._y, this.polesData[i]._x, bound)) {\r\n uuidPolesArray[count++] = this.polesData[i].uuid;\r\n\r\n }\r\n }\r\n console.log('in frustrum classic', count);\r\n this.emit('visiblePoles', uuidPolesArray);\r\n }\r\n\r\n private isInFustrum(x: number, y: number, bound: number[]): boolean {\r\n return (x < bound[0] && x > bound[2] && y < bound[1] && y > bound[3]);\r\n }\r\n\r\n private sendClickItem(pointInfo: PointInfo) {\r\n if (pointInfo.type === 'Pole') {\r\n this.emit('poleClick', pointInfo.uuid);\r\n }\r\n\r\n if (pointInfo.type === 'Locus') {\r\n this.emit('locusClick', pointInfo.uuid);\r\n }\r\n }\r\n\r\n private sendQuadkeys(quadkeys: string[]) {\r\n this.emit('visibleQaudkeys', quadkeys);\r\n }\r\n\r\n private sendVisiblePole(n) {\r\n const uuidPolesArray = new Array(n);\r\n if (this.workerEnable) {\r\n for (let i = 0; i < n; i++) {\r\n uuidPolesArray[i] = this.polesData[this.data_sharedPoleIndexBuffer[i]].uuid;\r\n }\r\n this.emit('visiblePoles', uuidPolesArray);\r\n } else {\r\n\r\n }\r\n }\r\n\r\n public addPolesArray(polesData: MapBaseObject[][]) {\r\n // array of array of poles , deprecated\r\n /* for (let i = 0; i < polesData.length; i++) {\r\n const layer: esri.GraphicsLayer = this.layerSetup.addLayer(LayerSetup.Pole, polesData[i], 'name')[0];\r\n this._esrimap.add(layer);\r\n return layer.id;\r\n }*/\r\n }\r\n\r\n public addLocusArray(locusData: MapBaseObject[][]) {\r\n // array of array of locus deprecated\r\n /* for (let i = 0; i < locusData.length; i++) {\r\n const layer = this.layerSetup.addLayer(LayerSetup.Locus, locusData[i], 'name')[0];\r\n this._esrimap.add(layer);\r\n }*/\r\n }\r\n\r\n private ab2str(buf) {\r\n return String.fromCharCode.apply(null, new Uint16Array(buf));\r\n }\r\n private str2ab(str) {\r\n const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char\r\n const bufView = new Uint16Array(buf);\r\n for (let i = 0, strLen = str.length; i < strLen; i++) {\r\n bufView[i] = str.charCodeAt(i);\r\n }\r\n return buf;\r\n }\r\n}","\r\n\r\nexport class EventManagement {\r\n\r\n public _events: any;\r\n\r\n public bind(event, fct) {\r\n\r\n this._events = this._events || {};\r\n this._events[event] = this._events[event] || [];\r\n this._events[event].push(fct);\r\n }\r\n\r\n public unbind(event, fct) {\r\n\r\n this._events = this._events || {};\r\n if (event in this._events === false) { return; }\r\n\r\n this._events[event].splice(this._events[event].indexOf(fct), 1);\r\n }\r\n public unbindEvent(event) {\r\n\r\n this._events = this._events || {};\r\n this._events[event] = [];\r\n }\r\n public unbindAll() {\r\n\r\n this._events = this._events || {};\r\n // for (let event in this._events) this._events[event] = false;\r\n for (const event in this._events) {\r\n if (event) {\r\n this._events[event] = null;\r\n }\r\n }\r\n this._events = [];\r\n this._events = null;\r\n }\r\n public trigger(event, ...args: any[]) {\r\n\r\n this._events = this._events || {};\r\n if (event in this._events === false) { return; }\r\n for (let i = 0; i < this._events[event].length; i++) {\r\n this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1))\r\n }\r\n }\r\n\r\n public registerEvent(evtname) {\r\n\r\n this[evtname] = function (callback, replace) {\r\n\r\n if (typeof callback == 'function') {\r\n if (replace) { this.unbindEvent(evtname); }\r\n\r\n this.bind(evtname, callback);\r\n }\r\n\r\n return this;\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n","import { EventManagement } from './event-Management';\r\n\r\n\r\n export class EventManager extends EventManagement {\r\n\r\n public static _instance: EventManager ;\r\n\r\n public event_startframe = 0;\r\n\r\n constructor() {\r\n super();\r\n\r\n if (EventManager._instance) {\r\n throw new Error('Error: Instantiation failed: Use EventManager.getInstance() instead of new.');\r\n }\r\n\r\n EventManager._instance = this;\r\n }\r\n\r\n public static getInstance(): EventManager {\r\n if (EventManager._instance == null) {\r\n EventManager._instance = new EventManager();\r\n }\r\n return EventManager._instance;\r\n }\r\n\r\n public dispatchEvent(event: any, value?: any): void {\r\n this.trigger(event, value);\r\n }\r\n }\r\n\r\n\r\n","export class Hub {\r\n\r\n public __events;\r\n\r\n public addEventListener(event: any, fn: any) {\r\n const eventMap = this.__events = this.__events || {};\r\n const handlerList = eventMap[event] = eventMap[event] || [];\r\n handlerList.push(fn);\r\n\r\n }\r\n\r\n /**\r\n * {String} event\r\n * {Function} fn Handler function\r\n */\r\n public removeEventListener(event: any, fn: any) {\r\n const eventMap = this.__events = this.__events || {};\r\n const handlerList = eventMap[event];\r\n if (handlerList) {\r\n const index = handlerList.indexOf(fn);\r\n if (index >= 0) {\r\n handlerList.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n\r\n public hasListener(): void {\r\n console.log('esrimap has listener event Map', this.__events);\r\n }\r\n\r\n\r\n /**\r\n * Emit an event\r\n */\r\n public emit(...malak: any) {\r\n const eventMap = this.__events = this.__events || {};\r\n const event = arguments[0];\r\n const handlerList = eventMap[event];\r\n if (handlerList) {\r\n for (let i = 0; i < handlerList.length; i++) {\r\n const fn = handlerList[i];\r\n fn.apply(this, arguments);\r\n }\r\n }\r\n }\r\n}","export class Prop {\r\n\r\n static X: number;\r\n static Y: number;\r\n\r\n}","\r\n\r\nexport class EngineOffScreen {\r\n\r\n // offscreen rendering use to speed up click with fake rendering color\r\n public static _instance: EngineOffScreen = null ; \r\n\r\n private texture: WebGLTexture;\r\n private renderbuffer: WebGLRenderbuffer;\r\n private framebuffer: WebGLFramebuffer;\r\n private readPixel: Uint8Array = new Uint8Array(4);\r\n\r\n private gl: WebGLRenderingContext;\r\n private height: number;\r\n private width: number;\r\n\r\n private offscreenNeedConf = true ;\r\n canvasOff: OffscreenCanvas;\r\n glOff: WebGLRenderingContext;\r\n\r\n constructor(gl: WebGLRenderingContext, width: number, height: number) {\r\n\r\n if (EngineOffScreen._instance) {\r\n throw new Error('Error: Instantiation failed: Use EngineOffScreen.getInstance() instead of new.');\r\n }\r\n\r\n\r\n\r\n // try so set offscreenCanvas\r\n /* if (typeof OffscreenCanvas !== 'undefined') {\r\n this.canvasOff = new OffscreenCanvas(width, height);\r\n // const ctx = canvas.getContext('2d');\r\n this.glOff = this.canvasOff.getContext('webgl');\r\n }*/\r\n\r\n \r\n\r\n this.gl = gl;\r\n this.height = height;\r\n this.width = width;\r\n this.configureOffScreenRendering();\r\n console.log('configure offscreen only once');\r\n console.log('context size',this.height,this.width)\r\n\r\n EngineOffScreen._instance = this;\r\n\r\n\r\n\r\n }\r\n\r\n public static GetInstance(gl: WebGLRenderingContext, width: number, height: number): EngineOffScreen {\r\n\r\n // we need engine, to have one singleton by instance\r\n // we have a kind of array of singleton, each elements link\r\n // to its engine instance\r\n\r\n if (EngineOffScreen._instance == null) {\r\n EngineOffScreen._instance = new EngineOffScreen(gl, width, height);\r\n }\r\n return EngineOffScreen._instance;\r\n }\r\n\r\n public static setParameter(width: number, height: number) {\r\n EngineOffScreen._instance.width = width;\r\n EngineOffScreen._instance.height = height;\r\n }\r\n\r\n public read(offSetX: number, offSetY: number): number {\r\n\r\n // read the pixel color on th e renderer buffer, nomore in use now\r\n this.gl.readPixels(offSetX, this.gl.drawingBufferHeight - offSetY, 1, 1, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.readPixel);\r\n return this.readPixel[0] + this.readPixel[1] * 256 +this.readPixel[2] * 256 * 256;\r\n }\r\n\r\n public cleanAfterReading(): void {\r\n this.gl.bindTexture(this.gl.TEXTURE_2D, null);\r\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, null);\r\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);\r\n }\r\n\r\n\r\n\r\n public updateOffScreen(): void {\r\n\r\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);\r\n // tslint:disable-next-line:max-line-length\r\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, null);\r\n\r\n // renderbuffer\r\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, this.renderbuffer);\r\n this.gl.renderbufferStorage(this.gl.RENDERBUFFER, this.gl.DEPTH_COMPONENT16, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\r\n\r\n // render into the new framebuffer not the default one\r\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.framebuffer);\r\n\r\n\r\n }\r\n\r\n private configureOffScreenRendering(): void {\r\n\r\n // texture to store color\r\n this.texture = this.gl.createTexture();\r\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);\r\n \r\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, null);\r\n\r\n // renderbuffer\r\n this.renderbuffer = this.gl.createRenderbuffer();\r\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, this.renderbuffer);\r\n this.gl.renderbufferStorage(this.gl.RENDERBUFFER, this.gl.DEPTH_COMPONENT16, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\r\n\r\n // offscreen rendering\r\n this.framebuffer = this.gl.createFramebuffer();\r\n\r\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.framebuffer);\r\n this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER, this.gl.COLOR_ATTACHMENT0, this.gl.TEXTURE_2D, this.texture, 0);\r\n this.gl.framebufferRenderbuffer(this.gl.FRAMEBUFFER, this.gl.DEPTH_ATTACHMENT, this.gl.RENDERBUFFER, this.renderbuffer);\r\n\r\n // this._gl.clearColor(1, 1, 1, 1);\r\n\r\n /* this.gl.bindTexture(this.gl.TEXTURE_2D, null);\r\n this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, null);\r\n this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null);*/\r\n\r\n }\r\n}","export class GLTools {\r\n static T__webMercatorUtils = null;\r\n static ObjectPickingIndex = 1024;\r\n static AtlasUV: any[] = [] ;\r\n static AtlasUV_: any[] = [] ;\r\n static GetPickingColor(): number[] {\r\n\r\n const r = (GLTools.ObjectPickingIndex & 0x000000FF) >> 0;\r\n const g = (GLTools.ObjectPickingIndex & 0x0000FF00) >> 8;\r\n const b = (GLTools.ObjectPickingIndex & 0x00FF0000) >> 16;\r\n return [r / 255.0, g / 255.0, b / 255.0, GLTools.ObjectPickingIndex++];\r\n }\r\n\r\n static MakeAtlasUV(cx: number, cy: number, n: number): number[] {\r\n\r\n // cx as row, cy as col, n case\r\n // todo @samuelgirardin precompute uv\r\n // and reorder to get a proper uv[1,2,3,..]\r\n\r\n const uvs = GLTools.AtlasUV;\r\n if (uvs[cx] === undefined) {\r\n\r\n uvs[cx] = new Array(n);\r\n }\r\n if (uvs[cx][cy] === undefined) {\r\n\r\n const width = 1 / n;\r\n uvs[cx][cy] = [\r\n width * (cx + 1),\r\n 1 - width * (cy + 1),\r\n cx * width,\r\n 1 - width * (cy + 1),\r\n cx * width,\r\n 1 - cy * width,\r\n width * (cx + 1),\r\n 1 - cy * width,\r\n ];\r\n }\r\n return uvs[cx][cy];\r\n\r\n\r\n }\r\n\r\n static MakeBasicUV(cx: number, cy: number, n: number): number[] {\r\n\r\n // cx as row, cy as col, n case\r\n // todo @samuelgirardin precompute uv\r\n // and reorder to get a proper uv[1,2,3,..]\r\n\r\n const uvs = GLTools.AtlasUV_;\r\n if (uvs[cx] === undefined) {\r\n\r\n uvs[cx] = new Array(n);\r\n }\r\n if (uvs[cx][cy] === undefined) {\r\n\r\n const width = 1 / n;\r\n uvs[cx][cy] = [\r\n width * (cx + 1),\r\n 1 - width * (cy + 1),\r\n cx * width,\r\n 1 - width * (cy + 1),\r\n cx * width,\r\n 1 - cy * width,\r\n width * (cx + 1),\r\n 1 - cy * width,\r\n ];\r\n }\r\n return uvs[cx][cy];\r\n\r\n\r\n }\r\n\r\n\r\n\r\n}","import esri = __esri; // Esri TypeScript Types\r\nimport { mat3, vec2, vec3 } from 'gl-matrix';\r\nimport { BasicTexure } from '../textures/basic-texture';\r\nimport { Shader } from '../textures/shader';\r\nimport { LayerSetup } from '../layers/layer-setup';\r\nimport { MapBaseObject } from '../map-object/map-base-object';\r\nimport { EngineOffScreen } from './engine-off-screen';\r\nimport { EventManager } from '../events/event-Manager';\r\nimport { Prop } from '../events/prop';\r\n\r\n\r\n\r\nexport class WebglSetupAtlas {\r\n\r\n static Instances: WebglSetupAtlas[] = [];\r\n static N = 0; // number of created instances\r\n\r\n static GL: WebGLRenderingContext;\r\n static Click_id: number;\r\n\r\n private __BaseLayerViewGL2D: any;\r\n private updateRenderBufferEachFrame = false;\r\n\r\n private isReady = false;\r\n\r\n private gl: WebGLRenderingContext;\r\n private type: number;\r\n\r\n private eventManager: EventManager;\r\n\r\n private id: number;\r\n\r\n public data: MapBaseObject[];\r\n\r\n\r\n customLayerView2D: any;\r\n uvData: Float32Array = null;\r\n colorPickingData: Float32Array = null;\r\n\r\n\r\n obj: any; // as this of __BaseLayerViewGL2D subclass\r\n\r\n\r\n\r\n // test\r\n texture: WebGLTexture;\r\n vertexBuffer: WebGLBuffer;\r\n uvBuffer: WebGLBuffer;\r\n pickingColorBuffer: WebGLBuffer;\r\n indexBuffer: WebGLBuffer;\r\n indexBufferSize: number;\r\n transform: mat3;\r\n translationToCenter: vec2;\r\n screenTranslation: vec2;\r\n display: mat3;\r\n screenScaling: vec2;\r\n public needsUpdate: boolean;\r\n program: WebGLProgram;\r\n aPosition = 0;\r\n aOffset = 1;\r\n aTextureCoord = 2;\r\n aPickingColor = 3;\r\n uTransform: WebGLUniformLocation;\r\n uDisplay: WebGLUniformLocation;\r\n uCurrentTime: WebGLUniformLocation;\r\n uSampler: WebGLUniformLocation;\r\n uZoomlevel: WebGLUniformLocation;\r\n uOffscreen: WebGLUniformLocation;\r\n centerAtLastUpdate: any;\r\n pixelRatio: number;\r\n view: any; // as esri.View;\r\n canvasOff: OffscreenCanvas;\r\n glOff: WebGLRenderingContext;\r\n\r\n _needUpdate: (type: number) => void;\r\n _needUpdateAll: (type: number) => void;\r\n pointerEnable: boolean;\r\n\r\n\r\n constructor(__BaseLayerViewGL2D, data: MapBaseObject[], view: any, pointerEnable: boolean) {\r\n\r\n this.__BaseLayerViewGL2D = __BaseLayerViewGL2D;\r\n this.data = data;\r\n this.id = WebglSetupAtlas.Instances.length;\r\n this.eventManager = EventManager.getInstance();\r\n this.pointerEnable = pointerEnable ;\r\n\r\n this.view = view;\r\n\r\n\r\n\r\n // this.pixelRatio = window.devicePixelRatio;\r\n\r\n this.addListeners();\r\n\r\n // Geometrical transformations that must be recomputed\r\n // from scratch at every frame.\r\n this.transform = mat3.create();\r\n this.translationToCenter = vec2.create();\r\n this.screenTranslation = vec2.create();\r\n\r\n this.display = mat3.fromValues(NaN, 0, 0, 0, NaN, 0, -1, 1, 1);\r\n this.screenScaling = vec2.fromValues(NaN, NaN);\r\n // was, not sure why they use vec3, maybe bug\r\n // this.screenScaling = vec3.fromValues(NaN, NaN, 1);\r\n\r\n // try so set offscreenCanvas\r\n /* if (typeof OffscreenCanvas !== 'undefined') {\r\n this.canvasOff = new OffscreenCanvas(this.view.size[0], this.view.size[1]);\r\n this.glOff = this.canvasOff.getContext('webgl');\r\n }*/\r\n WebglSetupAtlas.Instances.push(this);\r\n }\r\n\r\n\r\n\r\n static SyncRenderBuffer(): number {\r\n\r\n // when all layers instances are rendered, we need to do a offline framebuffer renderer pass\r\n // to detect hoover every three move\r\n if (WebglSetupAtlas.N - 1 === 1) {\r\n\r\n const engineOffScreen = EngineOffScreen.GetInstance(WebglSetupAtlas.GL, WebglSetupAtlas.GL.drawingBufferWidth, WebglSetupAtlas.GL.drawingBufferHeight);\r\n engineOffScreen.updateOffScreen();\r\n for (let i = 0; i < WebglSetupAtlas.Instances.length; i++) {\r\n WebglSetupAtlas.Instances[i]._render(true);\r\n }\r\n WebglSetupAtlas.Click_id = engineOffScreen.read(Prop.X, Prop.Y);\r\n engineOffScreen.cleanAfterReading();\r\n WebglSetupAtlas.N = 0;\r\n } else {\r\n WebglSetupAtlas.N++;\r\n }\r\n\r\n return WebglSetupAtlas.Click_id;\r\n }\r\n\r\n static OnDemandRenderBuffer(): number {\r\n\r\n const engineOffScreen = EngineOffScreen.GetInstance(WebglSetupAtlas.GL, WebglSetupAtlas.GL.drawingBufferWidth, WebglSetupAtlas.GL.drawingBufferHeight);\r\n engineOffScreen.updateOffScreen();\r\n for (let i = 0; i < WebglSetupAtlas.Instances.length; i++) {\r\n // console.log('render layer offscreen', i);\r\n WebglSetupAtlas.Instances[i]._render(true);\r\n }\r\n // try to read pixel in frame buffer\r\n WebglSetupAtlas.Click_id = engineOffScreen.read(Prop.X, Prop.Y);\r\n engineOffScreen.cleanAfterReading();\r\n return WebglSetupAtlas.Click_id;\r\n }\r\n\r\n \r\n\r\n private addListeners() {\r\n this._needUpdate = (type) => this.needUpdate(type);\r\n this.eventManager.bind('renderNeedUpdate', this._needUpdate);\r\n\r\n this._needUpdateAll = (type) => this.needUpdateAll(type);\r\n this.eventManager.bind('renderNeedUpdateAll', this._needUpdateAll);\r\n }\r\n\r\n\r\n removeListeners() {\r\n this.eventManager.unbind('renderNeedUpdate', this._needUpdate);\r\n this._needUpdate = null;\r\n this.eventManager.unbind('renderNeedUpdateAll', this._needUpdateAll);\r\n this._needUpdateAll = null;\r\n\r\n\r\n }\r\n\r\n public createWEBGL(type: number) {\r\n this.type = type;\r\n this.customLayerView2D = this.__BaseLayerViewGL2D.createSubclass(\r\n {\r\n // Locations of the two vertex attributes that we use. They\r\n // will be bound to the shader program before linking.\r\n\r\n // webMercatorUtils: this.webMercatorUtils,\r\n // watchUtils: this.watchUtils,\r\n // promiseUtils: this.promiseUtils,\r\n // data: this.data,\r\n _attach: (obj) => this._attach(obj),\r\n _detach: (obj) => this._detach(obj),\r\n _render: (obj, param) => this._render(),\r\n _updatePositions: (obj) => this._updatePositions(),\r\n // _createTexture: (obj, gl) => this._createTexture(obj, gl),\r\n // _hitTest: (obj, x, y) => this._hitTest(obj, x, y),\r\n\r\n constructor() {\r\n },\r\n\r\n // Called once a custom layer is added to the map.layers collection and this layer view is instantiated.\r\n attach() {\r\n this._attach(this);\r\n },\r\n // Called internally from render().\r\n updatePositions() {\r\n this._updatePositions(this);\r\n },\r\n // Called every time a frame is rendered.\r\n render() {\r\n this._render(this);\r\n },\r\n // Called once a custom layer is removed from the map.layers collection and this layer view is destroyed.\r\n detach() {\r\n this._detach(this);\r\n },\r\n\r\n // Called by the map view or the popup view when hit testing is required.\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n public needUpdateAll(type: number) {\r\n\r\n // console.log(type, this.type, type === this.type)\r\n if (type !== this.type) {\r\n\r\n return;\r\n }\r\n\r\n this.needsUpdate = true;\r\n // console.log('need update on all') ;\r\n this.obj.requestRender();\r\n }\r\n\r\n public needUpdate(type: number) {\r\n\r\n if (type !== this.type) {\r\n\r\n return;\r\n }\r\n\r\n this.needsUpdate = true;\r\n // console.log('need update on click') ;\r\n this._render();\r\n }\r\n\r\n\r\n public _updatePositions() {\r\n\r\n\r\n const stationary = this.view.stationary;\r\n\r\n const state_center: any = [this.view.center.x, this.view.center.y];\r\n\r\n // If we are not stationary we simply update the `translationToCenter` vector.\r\n if (!stationary) {\r\n vec2.sub(\r\n this.translationToCenter,\r\n this.centerAtLastUpdate,\r\n state_center\r\n );\r\n this.obj.requestRender();\r\n return;\r\n }\r\n\r\n // If we are stationary, the `layer.graphics` collection has not changed, and\r\n // we are centered on the `centerAtLastUpdate`, we do nothing.\r\n if (\r\n !this.needsUpdate &&\r\n this.translationToCenter[0] === 0 &&\r\n this.translationToCenter[1] === 0\r\n ) {\r\n return;\r\n }\r\n\r\n\r\n\r\n // Otherwise, we record the new encoded center, which imply a reset of the `translationToCenter` vector,\r\n // we record the update time, and we proceed to update the buffers.\r\n this.centerAtLastUpdate.set(state_center);\r\n this.translationToCenter[0] = 0;\r\n this.translationToCenter[1] = 0;\r\n\r\n // Generate vertex data.\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuffer);\r\n const vertexData = new Float32Array(16 * this.data.length);\r\n let i = 0;\r\n const len = this.data.length;\r\n\r\n if(!this.data[0]) {\r\n return ; \r\n }\r\n\r\n \r\n \r\n\r\n for (let j = 0; j < len; j++) {\r\n // const point = graphics[j].geometry;\r\n // The (x, y) position is relative to the encoded center.\r\n const scale = this.data[j].size/5;\r\n const x = this.data[j].geometry.x - this.centerAtLastUpdate[0];\r\n const y = this.data[j].geometry.y - this.centerAtLastUpdate[1];\r\n vertexData[i * 16 + 0] = x;\r\n vertexData[i * 16 + 1] = y;\r\n vertexData[i * 16 + 2] = -scale;\r\n vertexData[i * 16 + 3] = -scale;\r\n vertexData[i * 16 + 4] = x;\r\n vertexData[i * 16 + 5] = y;\r\n vertexData[i * 16 + 6] = scale;\r\n vertexData[i * 16 + 7] = -scale;\r\n vertexData[i * 16 + 8] = x;\r\n vertexData[i * 16 + 9] = y;\r\n vertexData[i * 16 + 10] = -scale;\r\n vertexData[i * 16 + 11] = scale;\r\n vertexData[i * 16 + 12] = x;\r\n vertexData[i * 16 + 13] = y;\r\n vertexData[i * 16 + 14] = scale;\r\n vertexData[i * 16 + 15] = scale;\r\n ++i;\r\n }\r\n\r\n\r\n\r\n this.gl.bufferData(this.gl.ARRAY_BUFFER, vertexData, this.gl.STATIC_DRAW);\r\n\r\n // generate uvdata\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.uvBuffer);\r\n let uvData: Float32Array;\r\n i = 0;\r\n if (this.uvData == null || this.needsUpdate) {\r\n uvData = new Float32Array(8 * this.data.length);\r\n for (let j = 0; j < len; j++) {\r\n uvData[i * 8 + 0] = this.data[j].uvData[4];\r\n uvData[i * 8 + 1] = this.data[j].uvData[5];\r\n uvData[i * 8 + 2] = this.data[j].uvData[6];\r\n uvData[i * 8 + 3] = this.data[j].uvData[7];\r\n uvData[i * 8 + 4] = this.data[j].uvData[2];\r\n uvData[i * 8 + 5] = this.data[j].uvData[3];\r\n uvData[i * 8 + 6] = this.data[j].uvData[0];\r\n uvData[i * 8 + 7] = this.data[j].uvData[1];\r\n ++i;\r\n }\r\n\r\n this.uvData = uvData;\r\n }\r\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.uvData, this.gl.STATIC_DRAW);\r\n\r\n // generate uv picking color\r\n // generate uvdata\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.pickingColorBuffer);\r\n let colorPickingData: Float32Array;\r\n i = 0;\r\n\r\n \r\n\r\n if (this.colorPickingData == null || this.needsUpdate) {\r\n const stride = 16;\r\n colorPickingData = new Float32Array(16 * this.data.length);\r\n\r\n for (let j = 0; j < len; j++) {\r\n // we need to color the 4 vertices\r\n colorPickingData[i * stride + 0] = this.data[j].pickingColor[0];\r\n colorPickingData[i * stride + 1] = this.data[j].pickingColor[1];\r\n colorPickingData[i * stride + 2] = this.data[j].pickingColor[2];\r\n colorPickingData[i * stride + 3] = 1.0;\r\n colorPickingData[i * stride + 4] = this.data[j].pickingColor[0];\r\n colorPickingData[i * stride + 5] = this.data[j].pickingColor[1];\r\n colorPickingData[i * stride + 6] = this.data[j].pickingColor[2];\r\n colorPickingData[i * stride + 7] = 1.0; // as no alpha\r\n\r\n colorPickingData[i * stride + 8] = this.data[j].pickingColor[0];\r\n colorPickingData[i * stride + 9] = this.data[j].pickingColor[1];\r\n colorPickingData[i * stride + 10] = this.data[j].pickingColor[2];\r\n colorPickingData[i * stride + 11] = 1.0; // as no alpha\r\n colorPickingData[i * stride + 12] = this.data[j].pickingColor[0];\r\n colorPickingData[i * stride + 13] = this.data[j].pickingColor[1];\r\n colorPickingData[i * stride + 14] = this.data[j].pickingColor[2];\r\n colorPickingData[i * stride + 15] = 1.0; // as no alpha\r\n ++i;\r\n }\r\n this.colorPickingData = colorPickingData;\r\n }\r\n this.gl.bufferData(this.gl.ARRAY_BUFFER, this.colorPickingData, this.gl.STATIC_DRAW);\r\n\r\n\r\n // Generates index data.\r\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);\r\n const indexData = new Uint32Array(6 * this.data.length);\r\n for (i = 0; i < len; ++i) {\r\n indexData[i * 6 + 0] = i * 4 + 0;\r\n indexData[i * 6 + 1] = i * 4 + 1;\r\n indexData[i * 6 + 2] = i * 4 + 2;\r\n indexData[i * 6 + 3] = i * 4 + 1;\r\n indexData[i * 6 + 4] = i * 4 + 3;\r\n indexData[i * 6 + 5] = i * 4 + 2;\r\n }\r\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, indexData, this.gl.STATIC_DRAW);\r\n\r\n // objects is updated\r\n this.needsUpdate = false;\r\n // Record number of indices.\r\n this.indexBufferSize = indexData.length;\r\n }\r\n\r\n\r\n\r\n public _render(needOfscreenRendering = false) {\r\n\r\n\r\n\r\n // if (!this.isReady || this.obj.view.zoom < 11) { return; }\r\n if (!this.isReady ) { return; }\r\n\r\n // Update vertex positions. This may trigger an update of\r\n // the vertex coordinates contained in the vertex buffer.\r\n // There are three kinds of updates:\r\n // - Modification of the layer.graphics collection ==> Buffer update\r\n // - The view state becomes non-stationary ==> Only view update, no buffer update\r\n // - The view state becomes stationary ==> Buffer update\r\n\r\n if (!needOfscreenRendering) {\r\n this._updatePositions();\r\n }\r\n\r\n // If there is nothing to render we return.\r\n if (this.indexBufferSize === 0) {\r\n // console.log('return cause indexBufferSize === 0 ');\r\n return;\r\n }\r\n\r\n\r\n this.pixelRatio = this.view.state.pixelRatio;\r\n\r\n\r\n // Update view `transform` matrix; it converts from map units to pixels.\r\n mat3.identity(this.transform);\r\n this.screenTranslation[0] = (this.pixelRatio * this.view.size[0]) / 2;\r\n this.screenTranslation[1] = (this.pixelRatio * this.view.size[1]) / 2;\r\n mat3.translate(\r\n this.transform,\r\n this.transform,\r\n this.screenTranslation\r\n );\r\n mat3.rotate(\r\n this.transform,\r\n this.transform,\r\n (Math.PI * this.view.rotation) / 180\r\n );\r\n this.screenScaling[0] = this.pixelRatio / this.view.resolution;\r\n this.screenScaling[1] = -this.pixelRatio / this.view.resolution;\r\n mat3.scale(this.transform, this.transform, this.screenScaling);\r\n mat3.translate(\r\n this.transform,\r\n this.transform,\r\n this.translationToCenter\r\n );\r\n\r\n // Update view `display` matrix; it converts from pixels to normalized device coordinates.\r\n this.display[0] = 2 / (this.pixelRatio * this.view.size[0]);\r\n this.display[4] = -2 / (this.pixelRatio * this.view.size[1]);\r\n\r\n // Draw.\r\n this.gl.useProgram(this.program);\r\n this.gl.uniformMatrix3fv(this.uTransform, false, this.transform);\r\n this.gl.uniformMatrix3fv(this.uDisplay, false, this.display);\r\n\r\n // gl.uniform1f(this.uCurrentTime, 1);\r\n this.gl.uniform1f(this.uCurrentTime, performance.now() / 1000.0);\r\n\r\n // zoom level\r\n this.gl.uniform1f(this.uZoomlevel, this.view.zoom);\r\n\r\n // offscreen rendering or not , if NOT = normal else offscreen to detect ccli\r\n if (!needOfscreenRendering) {\r\n this.gl.uniform1f(this.uOffscreen, 0);\r\n } else {\r\n this.gl.uniform1f(this.uOffscreen, 1);\r\n }\r\n\r\n // texture\r\n this.gl.uniform1i(this.uSampler, 0); // texture unit 0\r\n this.gl.activeTexture(this.gl.TEXTURE0);\r\n this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);\r\n\r\n // vertexbuffer as ESRI wants with offset correction ... weird @samuelgirardin\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuffer);\r\n this.gl.enableVertexAttribArray(this.aPosition);\r\n this.gl.enableVertexAttribArray(this.aOffset);\r\n // from 0 to 8 next stride 8 to 16\r\n this.gl.vertexAttribPointer(this.aPosition, 2, this.gl.FLOAT, false, 16, 0);\r\n this.gl.vertexAttribPointer(this.aOffset, 2, this.gl.FLOAT, false, 16, 8);\r\n\r\n // uv bind\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.uvBuffer);\r\n this.gl.enableVertexAttribArray(this.aTextureCoord);\r\n this.gl.vertexAttribPointer(this.aTextureCoord, 2, this.gl.FLOAT, false, 0, 0);\r\n\r\n // colorpicking bind\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.pickingColorBuffer);\r\n this.gl.enableVertexAttribArray(this.aPickingColor);\r\n this.gl.vertexAttribPointer(this.aPickingColor, 4, this.gl.FLOAT, false, 0, 0);\r\n\r\n\r\n // bind indices\r\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);\r\n\r\n\r\n this.gl.enable(this.gl.BLEND);\r\n this.gl.blendFunc(this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA);\r\n\r\n\r\n if (!needOfscreenRendering) {\r\n this.gl.drawElements(\r\n this.gl.TRIANGLES,\r\n this.indexBufferSize,\r\n this.gl.UNSIGNED_INT,\r\n 0\r\n );\r\n // this is needed if we enable mouse over via mousemove\r\n if (this.updateRenderBufferEachFrame) {\r\n WebglSetupAtlas.SyncRenderBuffer();\r\n }\r\n } else {\r\n // console.log('OFFSCREEN DRAW ELEMENT');\r\n if (this.pointerEnable) {\r\n this.gl.drawElements(\r\n this.gl.TRIANGLES,\r\n this.indexBufferSize,\r\n this.gl.UNSIGNED_INT,\r\n 0\r\n );\r\n }\r\n }\r\n\r\n // Request new render because markers are animated.\r\n // obj.requestRender();\r\n }\r\n\r\n\r\n\r\n private async _attach(obj: any /* as this sublcass*/) {\r\n\r\n\r\n this.obj = obj;\r\n this.gl = WebglSetupAtlas.GL = obj.context;\r\n let url = '';\r\n if (this.type === LayerSetup.Pole || this.type === LayerSetup.Locus) {\r\n url = 'assets/poles1.png';\r\n } else if (this.type === LayerSetup.Radar) {\r\n url = 'assets/radar.png';\r\n }\r\n\r\n\r\n // load texture\r\n const _texture = new BasicTexure(this.gl, url, true);\r\n this.texture = await _texture.load();\r\n\r\n\r\n\r\n let vertexSource = null;\r\n let fragmentSource = null;\r\n\r\n if (this.type === LayerSetup.Pole || this.type === LayerSetup.Locus || this.type === LayerSetup.Radar) {\r\n vertexSource = Shader.BITMAP_VERTEX;\r\n fragmentSource = Shader.BITMAP_FRAGMENT;\r\n } else if (this.type === LayerSetup.Target) {\r\n vertexSource = Shader.ESRI_BASIC_VERTEX;\r\n fragmentSource = Shader.ESRI_BASIC_FRAGEMENT;\r\n }\r\n\r\n\r\n // vertex shader creation\r\n const vertexShader = this.gl.createShader(this.gl.VERTEX_SHADER);\r\n this.gl.shaderSource(vertexShader, vertexSource);\r\n this.gl.compileShader(vertexShader);\r\n\r\n // fragment shader creation\r\n const fragmentShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\r\n this.gl.shaderSource(fragmentShader, fragmentSource);\r\n this.gl.compileShader(fragmentShader);\r\n\r\n // Build the shader program.\r\n this.program = this.gl.createProgram();\r\n this.gl.attachShader(this.program, vertexShader);\r\n this.gl.attachShader(this.program, fragmentShader);\r\n\r\n // Bind attributes - ok if commented or not ?\r\n this.gl.bindAttribLocation(this.program, this.aPosition, 'a_position');\r\n this.gl.bindAttribLocation(this.program, this.aOffset, 'a_offset');\r\n this.gl.bindAttribLocation(this.program, this.aTextureCoord, 'a_textureCoord');\r\n this.gl.bindAttribLocation(this.program, this.aPickingColor, 'a_PickingColor');\r\n\r\n // Link.\r\n this.gl.linkProgram(this.program);\r\n\r\n // Retrieve uniform locations once and for all.\r\n this.uTransform = this.gl.getUniformLocation(this.program, 'u_transform');\r\n this.uDisplay = this.gl.getUniformLocation(this.program, 'u_display');\r\n this.uCurrentTime = this.gl.getUniformLocation(this.program, 'u_current_time');\r\n // texture\r\n this.uSampler = this.gl.getUniformLocation(this.program, 'u_Sampler');\r\n // zoomlevel\r\n this.uZoomlevel = this.gl.getUniformLocation(this.program, 'u_zoomlevel');\r\n // offscreenrendering\r\n this.uOffscreen = this.gl.getUniformLocation(this.program, 'u_Offscreen');\r\n\r\n\r\n // Shader objects are not needed anymore.\r\n this.gl.deleteShader(vertexShader);\r\n this.gl.deleteShader(fragmentShader);\r\n\r\n // Create the vertex and index buffer. They are initially empty. We need to track the\r\n // size of the index buffer because we use indexed drawing.\r\n this.vertexBuffer = this.gl.createBuffer();\r\n this.uvBuffer = this.gl.createBuffer();\r\n this.pickingColorBuffer = this.gl.createBuffer();\r\n this.indexBuffer = this.gl.createBuffer();\r\n\r\n\r\n\r\n // Number of indices in the index buffer.\r\n this.indexBufferSize = 0;\r\n\r\n // When certain conditions occur, we update the buffers and re-compute and re-encode\r\n // all the attributes. When buffer update occurs, we also take note of the current center\r\n // of the view state, and we reset a vector called `translationToCenter` to [0, 0], meaning that the\r\n // current center is the same as it was when the attributes were recomputed.\r\n this.centerAtLastUpdate = vec2.fromValues(\r\n this.view.center.x, this.view.center.y\r\n );\r\n this.isReady = true;\r\n }\r\n\r\n public _detach(obj: any /* as this sublcass*/) {\r\n\r\n // Delete buffers and programs.\r\n this.gl.deleteBuffer(this.vertexBuffer);\r\n this.gl.deleteBuffer(this.indexBuffer);\r\n this.gl.deleteBuffer(this.uvBuffer);\r\n this.gl.deleteProgram(this.program);\r\n\r\n }\r\n}\r\n\r\n","\r\nimport { mat3, vec2, vec3 } from 'gl-matrix';\r\nimport { BasicTexure } from '../textures/basic-texture';\r\nimport { Shader } from '../textures/shader';\r\nimport esri = __esri; // Esri TypeScript Types\r\nimport { LayerSetup } from '../layers/layer-setup';\r\n\r\nexport class WebglSetupGraphic {\r\n\r\n private __BaseLayerViewGL2D: any;\r\n\r\n private isReady = false;\r\n\r\n private gl: WebGLRenderingContext;\r\n private type: number;\r\n private view;\r\n\r\n public data: any;\r\n public customLayerView2D: any;\r\n\r\n constructor(__BaseLayerViewGL2D, data, view: any, pointerEnable: boolean) {\r\n\r\n this.data = data;\r\n this.view = view;\r\n this.__BaseLayerViewGL2D = __BaseLayerViewGL2D;\r\n }\r\n\r\n public createWEBGL(type: number) {\r\n this.type = type;\r\n this.customLayerView2D = this.__BaseLayerViewGL2D.createSubclass(\r\n {\r\n // Locations of the two vertex attributes that we use. They\r\n // will be bound to the shader program before linking.\r\n aPosition: 0,\r\n aOffset: 1,\r\n aTextureCoord: 2,\r\n texture: null,\r\n\r\n\r\n _attach: (obj) => this._attach(obj),\r\n _detach: (obj) => this._detach(obj),\r\n _render: (obj, param) => this._render(obj, param),\r\n _updatePositions: (obj, param) => this._updatePositions(obj, param),\r\n // _createTexture: (obj, gl) => this._createTexture(obj, gl),\r\n\r\n\r\n constructor() {\r\n\r\n // Geometrical transformations that must be recomputed\r\n // from scratch at every frame.\r\n this.transform = mat3.create();\r\n this.translationToCenter = vec2.create();\r\n this.screenTranslation = vec2.create();\r\n\r\n // Geometrical transformations whose only a few elements\r\n // must be updated per frame. Those elements are marked\r\n // with NaN.\r\n this.display = mat3.fromValues(NaN, 0, 0, 0, NaN, 0, -1, 1, 1);\r\n this.screenScaling = vec3.fromValues(NaN, NaN, 1);\r\n\r\n // Whether the vertex and index buffers need to be updated\r\n // due to a change in the layer data.\r\n this.needsUpdate = false;\r\n\r\n // We listen for changes to the graphics collection of the layer\r\n // and trigger the generation of new frames. A frame rendered while\r\n // `needsUpdate` is true may cause an update of the vertex and\r\n // index buffers.\r\n const requestUpdate = () => {\r\n // console.log(this);\r\n this.needsUpdate = true;\r\n this.requestRender();\r\n };\r\n\r\n this.watcher = this.watchUtils.on(\r\n this,\r\n 'layer.graphics',\r\n 'change',\r\n requestUpdate,\r\n requestUpdate,\r\n requestUpdate\r\n );\r\n },\r\n\r\n // Called once a custom layer is added to the map.layers collection and this layer view is instantiated.\r\n attach() {\r\n this._attach(this);\r\n },\r\n // Called internally from render().\r\n updatePositions(renderParameters) {\r\n this._updatePositions(this, renderParameters);\r\n },\r\n // Called every time a frame is rendered.\r\n render(renderParameters) {\r\n this._render(this, renderParameters);\r\n },\r\n // Called once a custom layer is removed from the map.layers collection and this layer view is destroyed.\r\n detach() {\r\n this._detach(this);\r\n },\r\n\r\n // Called by the map view or the popup view when hit testing is required.\r\n\r\n });\r\n }\r\n\r\n\r\n public _updatePositions(obj, renderParameters) {\r\n\r\n if (!this.isReady) { return; }\r\n\r\n\r\n const stationary = renderParameters.stationary;\r\n const state = renderParameters.state;\r\n\r\n // If we are not stationary we simply update the `translationToCenter` vector.\r\n if (!stationary) {\r\n vec2.sub(\r\n obj.translationToCenter,\r\n obj.centerAtLastUpdate,\r\n state.center\r\n );\r\n obj.requestRender();\r\n return;\r\n }\r\n\r\n // If we are stationary, the `layer.graphics` collection has not changed, and\r\n // we are centered on the `centerAtLastUpdate`, we do nothing.\r\n if (\r\n !obj.needsUpdate &&\r\n obj.translationToCenter[0] === 0 &&\r\n obj.translationToCenter[1] === 0\r\n ) {\r\n return;\r\n }\r\n\r\n // Otherwise, we record the new encoded center, which imply a reset of the `translationToCenter` vector,\r\n // we record the update time, and we proceed to update the buffers.\r\n obj.centerAtLastUpdate.set(state.center);\r\n obj.translationToCenter[0] = 0;\r\n obj.translationToCenter[1] = 0;\r\n obj.needsUpdate = false;\r\n\r\n const graphics = this.data;\r\n\r\n // Generate vertex data.\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, obj.vertexBuffer);\r\n const vertexData = new Float32Array(16 * graphics.length);\r\n let i = 0;\r\n const len = graphics.length;\r\n for (let j = 0; j < len; j++) {\r\n // const point = graphics[j].geometry;\r\n // The (x, y) position is relative to the encoded center.\r\n const x = graphics[j].geometry.x - obj.centerAtLastUpdate[0];\r\n const y = graphics[j].geometry.y - obj.centerAtLastUpdate[1];\r\n vertexData[i * 16 + 0] = x;\r\n vertexData[i * 16 + 1] = y;\r\n vertexData[i * 16 + 2] = -0.5;\r\n vertexData[i * 16 + 3] = -0.5;\r\n vertexData[i * 16 + 4] = x;\r\n vertexData[i * 16 + 5] = y;\r\n vertexData[i * 16 + 6] = 0.5;\r\n vertexData[i * 16 + 7] = -0.5;\r\n vertexData[i * 16 + 8] = x;\r\n vertexData[i * 16 + 9] = y;\r\n vertexData[i * 16 + 10] = -0.5;\r\n vertexData[i * 16 + 11] = 0.5;\r\n vertexData[i * 16 + 12] = x;\r\n vertexData[i * 16 + 13] = y;\r\n vertexData[i * 16 + 14] = 0.5;\r\n vertexData[i * 16 + 15] = 0.5;\r\n ++i;\r\n\r\n }\r\n\r\n this.gl.bufferData(this.gl.ARRAY_BUFFER, vertexData, this.gl.STATIC_DRAW);\r\n\r\n // generate uvdata\r\n\r\n\r\n\r\n // Generates index data.\r\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, obj.indexBuffer);\r\n\r\n const indexData = new Uint32Array(6 * graphics.length);\r\n for (let i = 0; i < graphics.length; ++i) {\r\n indexData[i * 6 + 0] = i * 4 + 0;\r\n indexData[i * 6 + 1] = i * 4 + 1;\r\n indexData[i * 6 + 2] = i * 4 + 2;\r\n indexData[i * 6 + 3] = i * 4 + 1;\r\n indexData[i * 6 + 4] = i * 4 + 3;\r\n indexData[i * 6 + 5] = i * 4 + 2;\r\n }\r\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, indexData, this.gl.STATIC_DRAW);\r\n\r\n\r\n\r\n // Record number of indices.\r\n obj.indexBufferSize = indexData.length;\r\n }\r\n\r\n\r\n\r\n public _render(obj: any /* as this sublcass*/, renderParameters) {\r\n\r\n const state = renderParameters.state;\r\n\r\n // Update vertex positions. This may trigger an update of\r\n // the vertex coordinates contained in the vertex buffer.\r\n // There are three kinds of updates:\r\n // - Modification of the layer.graphics collection ==> Buffer update\r\n // - The view state becomes non-stationary ==> Only view update, no buffer update\r\n // - The view state becomes stationary ==> Buffer update\r\n\r\n\r\n this._updatePositions(obj, renderParameters);\r\n // or use that // obj.updatePositions(renderParameters);\r\n\r\n // If there is nothing to render we return.\r\n if (renderParameters.indexBufferSize === 0) {\r\n return;\r\n }\r\n\r\n // Update view `transform` matrix; it converts from map units to pixels.\r\n mat3.identity(obj.transform);\r\n obj.screenTranslation[0] = (state.pixelRatio * state.size[0]) / 2;\r\n obj.screenTranslation[1] = (state.pixelRatio * state.size[1]) / 2;\r\n mat3.translate(\r\n obj.transform,\r\n obj.transform,\r\n obj.screenTranslation\r\n );\r\n mat3.rotate(\r\n obj.transform,\r\n obj.transform,\r\n (Math.PI * state.rotation) / 180\r\n );\r\n\r\n\r\n obj.screenScaling[0] = state.pixelRatio / state.resolution;\r\n obj.screenScaling[1] = -state.pixelRatio / state.resolution;\r\n mat3.scale(obj.transform, obj.transform, obj.screenScaling);\r\n mat3.translate(\r\n obj.transform,\r\n obj.transform,\r\n obj.translationToCenter\r\n );\r\n\r\n // Update view `display` matrix; it converts from pixels to normalized device coordinates.\r\n obj.display[0] = 2 / (state.pixelRatio * state.size[0]);\r\n obj.display[4] = -2 / (state.pixelRatio * state.size[1]);\r\n\r\n // console.log(state.pixelRatio, state.size[0]);\r\n // console.log(window.devicePixelRatio, state.size[1]);\r\n\r\n // Draw.\r\n this.gl.useProgram(obj.program);\r\n this.gl.uniformMatrix3fv(obj.uTransform, false, obj.transform);\r\n this.gl.uniformMatrix3fv(obj.uDisplay, false, obj.display);\r\n\r\n // gl.uniform1f(this.uCurrentTime, 1);\r\n this.gl.uniform1f(obj.uCurrentTime, performance.now() / 1000.0);\r\n\r\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, obj.vertexBuffer);\r\n\r\n this.gl.enableVertexAttribArray(obj.aPosition);\r\n this.gl.enableVertexAttribArray(obj.aOffset);\r\n\r\n this.gl.vertexAttribPointer(obj.aPosition, 2, this.gl.FLOAT, false, 16, 0);\r\n this.gl.vertexAttribPointer(obj.aOffset, 2, this.gl.FLOAT, false, 16, 8);\r\n\r\n\r\n\r\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, obj.indexBuffer);\r\n\r\n\r\n this.gl.enable(this.gl.BLEND);\r\n this.gl.blendFunc(this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA);\r\n\r\n\r\n this.gl.drawElements(\r\n this.gl.TRIANGLES,\r\n obj.indexBufferSize,\r\n this.gl.UNSIGNED_INT,\r\n 0\r\n );\r\n\r\n // Request new render because markers are animated.\r\n // obj.requestRender();\r\n }\r\n\r\n private async _attach(obj: any /* as this sublcass*/) {\r\n\r\n this.gl = obj.context;\r\n\r\n // Define and compile shaders ESRI target\r\n // const vertexSource = Shader.ESRI_BASIC_VERTEX;\r\n // const fragmentSource = Shader.ESRI_BASIC_FRAGEMENT;\r\n\r\n let vertexSource = null;\r\n let fragmentSource = null;\r\n\r\n if (this.type === LayerSetup.Pole || this.type === LayerSetup.Locus) {\r\n vertexSource = Shader.BITMAP_VERTEX;\r\n fragmentSource = Shader.BITMAP_FRAGMENT;\r\n } else if (this.type === LayerSetup.Target) {\r\n console.log('USE ESRI VECTOR');\r\n vertexSource = Shader.ESRI_BASIC_VERTEX;\r\n fragmentSource = Shader.ESRI_BASIC_FRAGEMENT;\r\n }\r\n\r\n\r\n // vertex shader creation\r\n const vertexShader = this.gl.createShader(this.gl.VERTEX_SHADER);\r\n this.gl.shaderSource(vertexShader, vertexSource);\r\n this.gl.compileShader(vertexShader);\r\n\r\n // fragment shader creation\r\n const fragmentShader = this.gl.createShader(this.gl.FRAGMENT_SHADER);\r\n this.gl.shaderSource(fragmentShader, fragmentSource);\r\n this.gl.compileShader(fragmentShader);\r\n\r\n // Build the shader program.\r\n obj.program = this.gl.createProgram();\r\n this.gl.attachShader(obj.program, vertexShader);\r\n this.gl.attachShader(obj.program, fragmentShader);\r\n\r\n // Bind attributes - ok if commented or not ?\r\n this.gl.bindAttribLocation(obj.program, obj.aPosition, 'a_position');\r\n this.gl.bindAttribLocation(obj.program, obj.aOffset, 'a_offset');\r\n\r\n\r\n // Link.\r\n this.gl.linkProgram(obj.program);\r\n\r\n // Retrieve uniform locations once and for all.\r\n obj.uTransform = this.gl.getUniformLocation(obj.program, 'u_transform');\r\n obj.uDisplay = this.gl.getUniformLocation(obj.program, 'u_display');\r\n obj.uCurrentTime = this.gl.getUniformLocation(obj.program, 'u_current_time');\r\n\r\n\r\n\r\n // Shader objects are not needed anymore.\r\n this.gl.deleteShader(vertexShader);\r\n this.gl.deleteShader(fragmentShader);\r\n\r\n // Create the vertex and index buffer. They are initially empty. We need to track the\r\n // size of the index buffer because we use indexed drawing.\r\n obj.vertexBuffer = this.gl.createBuffer();\r\n\r\n obj.indexBuffer = this.gl.createBuffer();\r\n\r\n // Number of indices in the index buffer.\r\n obj.indexBufferSize = 0;\r\n\r\n // When certain conditions occur, we update the buffers and re-compute and re-encode\r\n // all the attributes. When buffer update occurs, we also take note of the current center\r\n // of the view state, and we reset a vector called `translationToCenter` to [0, 0], meaning that the\r\n // current center is the same as it was when the attributes were recomputed.\r\n obj.centerAtLastUpdate = vec2.fromValues(\r\n obj.view.state.center[0],\r\n obj.view.state.center[1]\r\n );\r\n\r\n this.isReady = true;\r\n }\r\n\r\n public _detach(obj: any /* as this sublcass*/) {\r\n // Stop watching the `layer.graphics` collection.\r\n obj.watcher.remove();\r\n\r\n // Delete buffers and programs.\r\n this.gl.deleteBuffer(obj.vertexBuffer);\r\n this.gl.deleteBuffer(obj.indexBuffer);\r\n // this.gl.deleteBuffer(obj.uvBuffer);\r\n this.gl.deleteProgram(obj.program);\r\n\r\n }\r\n\r\n\r\n\r\n public test() {\r\n console.log('test');\r\n }\r\n}\r\n","\r\nimport esri = __esri;\r\nimport { WebglSetupAtlas } from '../graphics/webgl-setup-atlas';\r\nimport { WebglSetupGraphic } from '../graphics/webgl-setup-graphic';\r\nimport { MapBaseObject } from '../map-object/map-base-object';\r\nimport { EsriMapComponent } from 'src/app/esri-map/esri-map.component';\r\n\r\n\r\nexport class LayerSetup {\r\n\r\n static Pole = 0;\r\n static Locus = 1;\r\n static Target = 2;\r\n static Radar = 3;\r\n\r\n private __BaseLayerViewGL2D: any;\r\n private __webMercatorUtils: any;\r\n private __watchUtils: any;\r\n private __promiseUtils: any;\r\n private __GraphicsLayer: any;\r\n\r\n private data: any;\r\n\r\n public name = '';\r\n\r\n layers = [];\r\n view: any;\r\n\r\n\r\n constructor(__GraphicsLayer, __BaseLayerViewGL2D, __webMercatorUtils, __watchUtils, __promiseUtils, view) {\r\n this.__webMercatorUtils = __webMercatorUtils;\r\n this.__watchUtils = __watchUtils;\r\n this.__promiseUtils = __promiseUtils;\r\n this.__BaseLayerViewGL2D = __BaseLayerViewGL2D;\r\n this.__GraphicsLayer = __GraphicsLayer;\r\n\r\n this.view = view;\r\n }\r\n\r\n\r\n public addLayer(type: number, data: MapBaseObject[]) {\r\n if (type === LayerSetup.Pole) {\r\n return this.addGLLayer(WebglSetupAtlas, type, data);\r\n } else if (type === LayerSetup.Locus) {\r\n return this.addGLLayer(WebglSetupAtlas, type, data);\r\n } else if (type === LayerSetup.Target) {\r\n return this.addGLLayer(WebglSetupGraphic, type, data,false);\r\n } else if (type === LayerSetup.Radar) {\r\n return this.addGLLayer(WebglSetupAtlas, type, data,false);\r\n }\r\n }\r\n\r\n public addGLLayer(GL_Layer_Type: typeof WebglSetupGraphic | typeof WebglSetupAtlas, type: number, data, pointerEnalbe: boolean = true): LayersObject {\r\n const gl_layer = new GL_Layer_Type(this.__BaseLayerViewGL2D, data, this.view, pointerEnalbe);\r\n gl_layer.createWEBGL(type);\r\n const cstlay = this.createLayer(gl_layer.customLayerView2D);\r\n\r\n const layer = new cstlay({\r\n popupTemplate: {\r\n title: '{NAME}',\r\n content: 'uuid: {POPULATION}.'\r\n }\r\n });\r\n this.layers.push(layer);\r\n\r\n return {\r\n esriGraphicLayer: layer,\r\n webGLGraphicLayer: gl_layer\r\n };\r\n }\r\n\r\n\r\n\r\n private createLayer(CustomLayerView2D_CLASS): any {\r\n const cstlay = this.__GraphicsLayer.createSubclass({\r\n // tslint:disable-next-line: object-literal-shorthand\r\n createLayerView: (_view) => {\r\n // We only support MapView, so we only need to return a\r\n // custom layer view for the `2d` case.\r\n if (_view.type === '2d') {\r\n return new CustomLayerView2D_CLASS({\r\n view: _view,\r\n layer: this\r\n });\r\n }\r\n }\r\n });\r\n return cstlay;\r\n }\r\n}\r\n\r\nexport interface LayersObject {\r\n // 2 layers, esri main, and sub webgl layer\r\n esriGraphicLayer: esri.GraphicsLayer;\r\n webGLGraphicLayer: WebglSetupAtlas |WebglSetupGraphic ;\r\n}","import { MapBaseObject } from './map-base-object'\r\nimport { GLTools } from '../graphics/gl-tools';\r\n\r\nexport class Locus extends MapBaseObject {\r\n\r\n\r\n \r\n\r\n constructor(posx: number, posy: number, source: string, type: number, uuid: string, size: number) {\r\n super(posx, posy, source, type, uuid, size);\r\n\r\n this.attibutes = {\r\n item1: source,\r\n item2: name,\r\n };\r\n\r\n\r\n\r\n\r\n\r\n // this.computeUV() ; \r\n //this.size = .5 ; \r\n // test for cities\r\n if (size < 5000) {\r\n this.size = 0.3;\r\n this.uvrank = 4;\r\n\r\n } else if (size < 50000) {\r\n this.size = 0.6;\r\n\r\n this.uvrank = 3;\r\n } else if (size < 500000) {\r\n this.size = 2;\r\n\r\n this.uvrank = 2;\r\n } else if (size < 1000000) {\r\n this.size = 3;\r\n\r\n this.uvrank = 1;\r\n } else {\r\n this.size = 4;\r\n\r\n this.uvrank = 0;\r\n }\r\n\r\n this.__computeUV(this.uvrank) ;\r\n\r\n\r\n\r\n this.pop = size ; \r\n\r\n\r\n }\r\n\r\n setHoovered(hoover: boolean) {\r\n \r\n if (this.isSelected) {\r\n return;\r\n }\r\n if (hoover) {\r\n this.__computeUV(this.uvrank, 1);\r\n } else {\r\n this.__computeUV(this.uvrank, 0);\r\n }\r\n this.isHoovered = hoover;\r\n this.eventManager.dispatchEvent('renderNeedUpdateAll', this.type);\r\n }\r\n setSelection(select: boolean) {\r\n \r\n if (select) {\r\n this.__computeUV(this.uvrank, 2);\r\n } else {\r\n this.__computeUV(this.uvrank, 0);\r\n }\r\n this.isSelected = select;\r\n this.eventManager.dispatchEvent('renderNeedUpdate', this.type);\r\n\r\n }\r\n __computeUV(idx, idy = 0) {\r\n this.uvData = GLTools.MakeAtlasUV(idx, idy, 8);\r\n }\r\n}\r\n","import { GLTools } from '../graphics/gl-tools';\r\nimport { EventManager } from '../events/event-Manager';\r\nimport { Locus } from './locus';\r\nimport { Pole } from './pole';\r\n\r\nexport class MapBaseObject {\r\n\r\n static Instances: MapBaseObject[] = [];\r\n static LastLocusSelected: Locus = null;\r\n static LastPoleSelected: Pole = null;\r\n static LastItemHoovered: MapBaseObject = null; \r\n\r\n _x: number = null;\r\n _y: number = null;\r\n\r\n parentLayer: any;\r\n geometry: any;\r\n pointerEnable = true;\r\n isvisible = true;\r\n isSelected = false;\r\n isHoovered = false ; \r\n\r\n uvData = new Array(8);\r\n pickingColor = new Array(4);\r\n id: number = null;\r\n uuid: string = null;\r\n\r\n source: string = null;\r\n\r\n attibutes: { item1: any; item2: any; };\r\n eventManager: EventManager;\r\n type: number;\r\n size ;\r\n uvrank ;\r\n pop: number;\r\n\r\n constructor(posx: number, posy: number, source, type: number, uuid, size: number) {\r\n this.eventManager = EventManager.getInstance();\r\n this._x = posx;\r\n this._y = posy;\r\n this.source = source;\r\n this.type = type;\r\n this.uuid = uuid;\r\n this.size = size ; \r\n\r\n\r\n this.pickingColor = GLTools.GetPickingColor();\r\n this.id = this.pickingColor[3];\r\n\r\n this.geometry = GLTools.T__webMercatorUtils.geographicToWebMercator({\r\n x: this._y,\r\n y: this._x,\r\n type: 'point',\r\n spatialReference: {\r\n wkid: 4326\r\n }\r\n });\r\n\r\n MapBaseObject.Instances.push(this);\r\n this.computeUV();\r\n }\r\n\r\n computeUV() {\r\n // subclass job\r\n }\r\n setSelection(select: boolean) {\r\n // subclass job\r\n }\r\n setHoovered(hoover : boolean) {\r\n // subclass job\r\n }\r\n\r\n __computeUV(idx) {\r\n\r\n }\r\n\r\n // tslint:disable-next-line: member-ordering\r\n static HooverItem(id: number) {\r\n\r\n \r\n\r\n if (id === 0) {\r\n if (MapBaseObject.LastItemHoovered) {\r\n MapBaseObject.LastItemHoovered.setHoovered(false);\r\n MapBaseObject.LastItemHoovered = null;\r\n }\r\n }\r\n\r\n for (let i = 0; i < MapBaseObject.Instances.length; i++) {\r\n if (MapBaseObject.Instances[i].id === id) {\r\n const ins = MapBaseObject.Instances[i];\r\n if (ins.isSelected) {\r\n return;\r\n }\r\n if (MapBaseObject.Instances[i].constructor.name === 'Locus' || MapBaseObject.Instances[i].constructor.name === 'Pole') {\r\n if (MapBaseObject.LastItemHoovered) {\r\n MapBaseObject.LastItemHoovered.setHoovered(false);\r\n }\r\n MapBaseObject.LastItemHoovered = ins;\r\n }\r\n ins.setHoovered(true);\r\n return {\r\n lat: ins._x,\r\n lon: ins._y,\r\n x: ins.geometry.x,\r\n y: ins.geometry.y,\r\n index: ins.pop,\r\n uuid: ins.uuid,\r\n type: MapBaseObject.Instances[i].constructor.name\r\n };\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: member-ordering\r\n static SelectAndReturnClickInfo(id: number): PointInfo {\r\n\r\n for (let i = 0; i < MapBaseObject.Instances.length; i++) {\r\n if (MapBaseObject.Instances[i].id === id) {\r\n const ins = MapBaseObject.Instances[i];\r\n // we have a valid object, try to change uvmap if needed\r\n if (MapBaseObject.Instances[i].constructor.name === 'Locus') {\r\n if (MapBaseObject.LastLocusSelected) {\r\n MapBaseObject.LastLocusSelected.setSelection(false);\r\n }\r\n MapBaseObject.LastLocusSelected = ins;\r\n }\r\n\r\n if (MapBaseObject.Instances[i].constructor.name === 'Pole') {\r\n if (MapBaseObject.LastPoleSelected) {\r\n MapBaseObject.LastPoleSelected.setSelection(false);\r\n }\r\n MapBaseObject.LastPoleSelected = ins;\r\n\r\n }\r\n\r\n ins.setSelection(true);\r\n // MapBaseObject.Instances[i].\r\n return {\r\n lat: ins._x,\r\n lon: ins._y,\r\n x: ins.geometry.x,\r\n y: ins.geometry.y,\r\n index: ins.pop,\r\n uuid: ins.uuid,\r\n type: MapBaseObject.Instances[i].constructor.name\r\n };\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface PointInfo {\r\n lat: number;\r\n lon: number;\r\n x: number;\r\n y: number;\r\n index: number;\r\n uuid: string;\r\n type: any;\r\n}\r\n","import { MapBaseObject } from './map-base-object'\r\nimport { GLTools } from '../graphics/gl-tools';\r\n\r\nexport class Pole extends MapBaseObject {\r\n constructor(posx: number, posy: number, source: string, type: number, uuid: string, size: number) {\r\n super(posx, posy, source,type, uuid, size);\r\n this.attibutes = {\r\n item1: source,\r\n item2: name,\r\n };\r\n\r\n }\r\n setHoovered(hoover: boolean) {\r\n\r\n if (this.isSelected) {\r\n return;\r\n }\r\n if (hoover) {\r\n const indexInAtlas = 1;\r\n this.computeUV(indexInAtlas);\r\n } else {\r\n const indexInAtlas = 0;\r\n this.computeUV(indexInAtlas);\r\n }\r\n this.isHoovered = hoover;\r\n this.eventManager.dispatchEvent('renderNeedUpdateAll', this.type);\r\n }\r\n\r\n setSelection(select: boolean) {\r\n\r\n if (select) {\r\n const indexInAtlas = 2;\r\n this.computeUV(indexInAtlas);\r\n\r\n } else {\r\n const indexInAtlas = 0;\r\n this.computeUV(indexInAtlas);\r\n }\r\n\r\n this.isSelected = select ;\r\n\r\n this.eventManager.dispatchEvent('renderNeedUpdate',this.type);\r\n\r\n }\r\n computeUV(indexInAtlas = 0) {\r\n\r\n if (this.source === 'prs') {\r\n this.uvData = GLTools.MakeAtlasUV(indexInAtlas, 0, 8);\r\n } else if (this.source === 'vls') {\r\n this.uvData = GLTools.MakeAtlasUV(indexInAtlas, 2, 8);\r\n } else if (this.source === 'envrmnt') {\r\n this.uvData = GLTools.MakeAtlasUV(indexInAtlas, 4, 8);\r\n }\r\n }\r\n}\r\n","import { MapBaseObject } from './map-base-object'\r\nimport { GLTools } from '../graphics/gl-tools';\r\nimport { vec2 } from 'gl-matrix';\r\n\r\nexport class Radar extends MapBaseObject {\r\n _uvData: number[];\r\n\r\n constructor(posx: number, posy: number, source: string, type: number, uuid: string, parentLayer: any) {\r\n super(posx, posy, source, type, uuid, parentLayer);\r\n this.attibutes = {\r\n item1: source,\r\n item2: name,\r\n };\r\n \r\n this.pointerEnable = false ; \r\n this.pickingColor = [0,0,0,0] ; \r\n this.id = 0 ; \r\n this.size = 2;\r\n this.computeUV();\r\n let i = 0;\r\n this.setRotation(0) ; \r\n // setInterval(() => this.setRotation(i++ / 100), 16);\r\n\r\n\r\n }\r\n\r\n setPosition(x: number, y: number) {\r\n this.geometry.x = x;\r\n this.geometry.y = y;\r\n this.eventManager.dispatchEvent('renderNeedUpdate', this.type);\r\n\r\n }\r\n\r\n setRotation(a: number) {\r\n // set rotation by vhanging uvmap \r\n for (let i = 0; i < this.uvData.length; i = i + 2) {\r\n const o: vec2 = [.5, .5];\r\n const v10 = vec2.create();\r\n vec2.rotate(v10, [this._uvData[i], this._uvData[i + 1]], o, a);\r\n this.uvData[i] = v10[0]; this.uvData[i + 1] = v10[1];\r\n }\r\n this.eventManager.dispatchEvent('renderNeedUpdateAll', this.type);\r\n\r\n }\r\n\r\n computeUV() {\r\n this._uvData = GLTools.MakeBasicUV(0, 0, 1);\r\n\r\n console.log('RADAR UV DATA', this.uvData);\r\n }\r\n}\r\n","export class BasicTexure {\r\n\r\n width: number;\r\n height: number;\r\n\r\n private gl: WebGLRenderingContext;\r\n private url: string;\r\n private useMipmap: boolean;\r\n private useAnisotropic: boolean;\r\n\r\n constructor(gl: WebGLRenderingContext, url: string, useMipmap: boolean, useAnisotropic = false) {\r\n this.gl = gl;\r\n this.url = url;\r\n this.useMipmap = useMipmap;\r\n this.useAnisotropic = useAnisotropic; \r\n }\r\n\r\n public load(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.createTextureFromURL(this.gl, this.url, resolve, reject);\r\n });\r\n }\r\n\r\n private createTextureFromURL(gl: WebGLRenderingContext, url: string, resolve, reject): any {\r\n\r\n const texture: WebGLTexture = gl.createTexture();\r\n\r\n const level = 0;\r\n const internalFormat = gl.RGBA;\r\n\r\n const srcFormat = gl.RGBA;\r\n const srcType = gl.UNSIGNED_BYTE;\r\n\r\n const image = new Image();\r\n image.onload = () => {\r\n\r\n this.height = image.height;\r\n this.width = image.width;\r\n // WebGL1 has different requirements for power of 2 images\r\n // vs non power of 2 images so check if the image is a\r\n // power of 2 in both dimensions.\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, texture);\r\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1);\r\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);\r\n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,\r\n srcFormat, srcType, image);\r\n\r\n // case tile textures\r\n // wrapping to clamp to edge\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n\r\n if (this.useMipmap) {\r\n gl.generateMipmap(gl.TEXTURE_2D);\r\n const ext = (\r\n gl.getExtension('EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('MOZ_EXT_texture_filter_anisotropic') ||\r\n gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic')\r\n );\r\n if (ext && this.useAnisotropic) {\r\n console.log('got ext use filter_anisotropic');\r\n const max = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\r\n gl.texParameterf(gl.TEXTURE_2D, ext.TEXTURE_MAX_ANISOTROPY_EXT, max);\r\n } else {\r\n console.log('no filter_anisotropic use mipmaponly');\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n }\r\n\r\n } else {\r\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n }\r\n\r\n gl.bindTexture(gl.TEXTURE_2D, null);\r\n\r\n // promise resolve\r\n resolve(texture);\r\n };\r\n\r\n image.onerror = () => {\r\n // promise reject\r\n reject('url error');\r\n };\r\n image.src = url;\r\n }\r\n}","export class Shader {\r\n\r\n public static BITMAP_VERTEX = `precision highp float;\r\n attribute vec2 a_position;\r\n attribute vec2 a_offset;\r\n attribute vec2 a_textureCoord;\r\n attribute vec4 a_PickingColor;\r\n uniform float u_zoomlevel;\r\n uniform mat3 u_transform;\r\n uniform mat3 u_display;\r\n varying vec2 v_offset;\r\n varying vec2 v_textureCoord;\r\n varying vec4 v_PickingColor;\r\n varying float v_zoomlevel;\r\n const float SIZE = 35.0;\r\n\r\n float mapNumberToInterval(float v,float in_min,float in_max,float out_min,float out_max) {\r\n float val = (v - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;\r\n return val;\r\n }\r\n\r\n void main(void)\r\n {\r\n float zlevel =2.0 * mapNumberToInterval(u_zoomlevel,0.0,21.0,0.001,90.0);\r\n gl_Position.xy = (u_display * (u_transform * vec3(a_position, 1.0) + vec3(a_offset * 1.0 * zlevel, 0.0))).xy;\r\n gl_Position.zw = vec2(0.0, 1.0);\r\n v_offset = a_offset;\r\n v_textureCoord = a_textureCoord;\r\n v_PickingColor = a_PickingColor;\r\n v_zoomlevel = u_zoomlevel;\r\n }`;\r\n public static BITMAP_FRAGMENT = `precision highp float;\r\n varying vec2 v_offset;\r\n varying vec2 v_textureCoord;\r\n varying vec4 v_PickingColor;\r\n varying float v_zoomlevel;\r\n uniform float u_current_time;\r\n uniform sampler2D u_Sampler;\r\n uniform bool u_Offscreen;\r\n\r\n const float PI = 3.14159;\r\n const float N_RINGS = 3.0;\r\n const vec4 COLOR = vec4(1, 0.0, 0.0, 1.0);\r\n const float FREQ = 1.0;\r\n vec4 col ;\r\n\r\n float mapNumberToInterval(float v,float in_min,float in_max,float out_min,float out_max) {\r\n\r\n float val = (v - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;\r\n if(v<10.0) {\r\n val = 0.0;\r\n }\r\n return val;\r\n }\r\n\r\n void main(void)\r\n {\r\n if (u_Offscreen) {\r\n // use alpha even on color to make only txt clickable\r\n gl_FragColor = texture2D(u_Sampler, v_textureCoord);\r\n // ad alpha to picking color ...\r\n if(gl_FragColor.a<0.1) {\r\n discard ;\r\n } else {\r\n gl_FragColor = v_PickingColor ;\r\n }\r\n // gl_FragColor = v_PickingColor ;\r\n\r\n } else {\r\n col = texture2D(u_Sampler, v_textureCoord);\r\n // float intensity = mapNumberToInterval(v_zoomlevel,10.0,16.0,0.0,1.0) ;\r\n // gl_FragColor = col*(1.0*intensity) ;\r\n gl_FragColor = col;\r\n }\r\n }`;\r\n\r\n\r\n public static ESRI_BASIC_VERTEX = 'precision highp float;' +\r\n 'uniform mat3 u_transform;' +\r\n 'uniform mat3 u_display;' +\r\n 'attribute vec2 a_position;' +\r\n 'attribute vec2 a_offset;' +\r\n 'varying vec2 v_offset;' +\r\n 'const float SIZE = 70.0;' +\r\n 'void main() {' +\r\n ' gl_Position.xy = (u_display * (u_transform * vec3(a_position, 1.0) + vec3(a_offset * SIZE, 0.0))).xy;' +\r\n ' gl_Position.zw = vec2(0.0, 1.0);' +\r\n ' v_offset = a_offset;' +\r\n '}';\r\n\r\n public static ESRI_BASIC_FRAGEMENT = 'precision highp float;' +\r\n 'uniform float u_current_time;' +\r\n 'varying vec2 v_offset;' +\r\n 'const float PI = 3.14159;' +\r\n 'const float N_RINGS = 3.0;' +\r\n 'const vec3 COLOR = vec3(0.23, 0.43, 0.70);' +\r\n 'const float FREQ = 1.0;' +\r\n 'void main() {' +\r\n ' float l = length(v_offset);' +\r\n ' float intensity = clamp(cos(l * PI), 0.0, 1.0) * clamp(cos(2.0 * PI * (l * 2.0 * N_RINGS - FREQ * u_current_time)), 0.0, 1.0);' +\r\n ' gl_FragColor = vec4(COLOR * intensity, intensity);' +\r\n\r\n '}';\r\n}","\r\n\r\nexport class Compute {\r\n\r\n public static EPSG3857_MAX_BOUND = 20037508.34;\r\n private static INV_POLE_BY_180 = 180.0 / Compute.EPSG3857_MAX_BOUND;\r\n private static PI_BY_POLE = Math.PI / Compute.EPSG3857_MAX_BOUND;\r\n\r\n private static PID2 = Math.PI * 0.5;\r\n private static PIX2 = Math.PI * 2;\r\n private static RAD = 180.0 / Math.PI;\r\n private static RADB2 = Compute.RAD * 2.0;\r\n private static PID360 = Math.PI / 360.0;\r\n private static INV_PI_BY_180_HALF_PI = Compute.RAD * Compute.PID2;\r\n\r\n public static EarthRadius = 6378137;\r\n private static MinLatitude = -85.05112878;\r\n private static MaxLatitude = 85.05112878;\r\n private static MinLongitude = -180;\r\n private static MaxLongitude = 180;\r\n\r\n\r\n constructor() { }\r\n\r\n static GetVisibleQuadkesy(bound: number[][], zoom): string[] {\r\n\r\n\r\n const lonlatMin = bound[0];\r\n const lonlatMax = bound[1];\r\n\r\n const PixelXYMin = Compute.LatLongToPixelXY(lonlatMin[1], lonlatMin[0], zoom);\r\n const PixelXYMax = Compute.LatLongToPixelXY(lonlatMax[1], lonlatMax[0], zoom);\r\n\r\n const TileMin = Compute.PixelXYToTileXY(PixelXYMin[0], PixelXYMin[1]);\r\n const TileMax = Compute.PixelXYToTileXY(PixelXYMax[0], PixelXYMax[1]);\r\n\r\n const minX = TileMin[0];\r\n const minY = TileMin[1];\r\n\r\n const maxX = TileMax[0];\r\n const maxY = TileMax[1];\r\n\r\n const quadkeys: string[] = [];\r\n\r\n for (let i = minX; i <= minX + (maxX - minX); i++) {\r\n for (let j = maxY; j <= maxY + (minY - maxY); j++) {\r\n quadkeys.push(Compute.TileXYToQuadKey(i, j, zoom));\r\n }\r\n }\r\n return quadkeys;\r\n }\r\n\r\n static LatLongToQuadKey(latitude, longitude, zoom) {\r\n const pixelXY = Compute.LatLongToPixelXY(latitude, longitude, zoom);\r\n const tileXY = Compute.PixelXYToTileXY(pixelXY[0], pixelXY[1]);\r\n return Compute.TileXYToQuadKey(tileXY[0], tileXY[1], zoom);\r\n }\r\n\r\n static LatLongToPixelXY(latitude: number, longitude: number, levelOfDetail: number): number[] {\r\n\r\n latitude = Compute.Clip(latitude, Compute.MinLatitude, Compute.MaxLatitude);\r\n longitude = Compute.Clip(longitude, Compute.MinLongitude, Compute.MaxLongitude);\r\n const x = (longitude + 180) / 360;\r\n const sinLatitude = Math.sin(latitude * Math.PI / 180);\r\n const y = 0.5 - Math.log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI);\r\n const mapSize = Compute.MapSize(levelOfDetail);\r\n const pixelX = Compute.Clip(x * mapSize + 0.5, 0, mapSize - 1);\r\n const pixelY = Compute.Clip(y * mapSize + 0.5, 0, mapSize - 1);\r\n\r\n return [pixelX, pixelY];\r\n }\r\n\r\n static TileXYToQuadKey(tileX: number, tileY: number, levelOfDetail: number): string {\r\n\r\n let quadKey = '';\r\n for (let i = levelOfDetail; i > 0; i--) {\r\n let digit = '0' as any;\r\n // tslint:disable-next-line: no-bitwise\r\n const mask = 1 << (i - 1);\r\n // tslint:disable-next-line: no-bitwise\r\n if ((tileX & mask) !== 0) {\r\n digit++;\r\n\r\n }\r\n // tslint:disable-next-line: no-bitwise\r\n if ((tileY & mask) !== 0) {\r\n digit++;\r\n digit++;\r\n }\r\n quadKey += digit;\r\n }\r\n\r\n return quadKey;\r\n }\r\n\r\n public static PixelXYToTileXY(pixelX: number, pixelY: number): number[] {\r\n const tileX = Math.floor(pixelX / 256);\r\n const tileY = Math.floor(pixelY / 256);\r\n return [tileX, tileY];\r\n }\r\n\r\n static QuadKeyToTileXY(quadKey: string): number[] {\r\n\r\n let tileX = 0;\r\n let tileY = 0;\r\n const levelOfDetail = quadKey.length;\r\n for (let i = levelOfDetail; i > 0; i--) {\r\n // tslint:disable-next-line: no-bitwise\r\n const mask = 1 << (i - 1);\r\n switch (quadKey[levelOfDetail - i]) {\r\n case '0':\r\n break;\r\n\r\n case '1':\r\n // tslint:disable-next-line: no-bitwise\r\n tileX |= mask;\r\n break;\r\n\r\n case '2':\r\n // tslint:disable-next-line: no-bitwise\r\n tileY |= mask;\r\n break;\r\n\r\n case '3':\r\n // tslint:disable-next-line: no-bitwise\r\n tileX |= mask;\r\n // tslint:disable-next-line: no-bitwise\r\n tileY |= mask;\r\n break;\r\n\r\n default:\r\n console.error('invaild quadkey !');\r\n }\r\n }\r\n\r\n // console.log('x,y,level',tileX, tileY, levelOfDetail) ;\r\n\r\n return [tileX, tileY, levelOfDetail];\r\n\r\n }\r\n\r\n static Clip(n: number, minValue: number, maxValue: number) {\r\n return Math.min(Math.max(n, minValue), maxValue);\r\n }\r\n static MapSize(levelOfDetail: number) {\r\n return 256 << levelOfDetail;\r\n }\r\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent {\n // Set our map properties\n //mapCenter = [-100,40];\n //basemapType = 'streets-night-vector';\n // 'streets-relief-vector'\n // mapZoomLevel = 3;\n\n // See app.component.html\n mapLoadedEvent(status: boolean) {\n console.log('The map loaded: ' + status);\n }\n}\n\n","\n
\n \n
\n\n\n\n","import { BrowserModule } from \"@angular/platform-browser\";\nimport { NgModule } from \"@angular/core\";\n\nimport { AppComponent } from \"./app.component\";\nimport { EsriMapComponent } from \"./esri-map/esri-map.component\";\n\n@NgModule({\n declarations: [AppComponent, EsriMapComponent],\n imports: [BrowserModule],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","/*\n Copyright 2019 Esri\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\n\ndeclare var poles;\ndeclare var locus;\ndeclare var cities ;\n\n\nimport {\n Component,\n OnInit,\n ViewChild,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n OnDestroy\n} from '@angular/core';\nimport { loadModules } from 'esri-loader';\n\n\nimport esri = __esri; // Esri TypeScript Types\n\nimport { LayerSetup } from '../../IMesri/layers/layer-setup';\nimport { Pole } from '../../IMesri/map-object/pole';\nimport { Locus } from '../../IMesri/map-object/locus';\nimport { GLTools } from '../../IMesri/graphics/gl-tools';\nimport { Compute } from '../../IMesri/tools/gis-compute';\nimport { MapBaseObject } from '../../IMesri/map-object/map-base-object';\nimport { EsriMain } from 'src/IMesri/esri-main';\n\n\n@Component({\n selector: 'app-esri-map',\n templateUrl: './esri-map.component.html',\n styleUrls: ['./esri-map.component.scss']\n})\nexport class EsriMapComponent implements OnInit, OnDestroy {\n\n static __BaseLayerViewGL2D: any;\n static __webMercatorUtils: any;\n\n @Output() mapLoadedEvent = new EventEmitter();\n\n // The
where we will place the map\n @ViewChild('mapViewNode', { static: true }) private mapViewEl: ElementRef;\n\n /**\n * _zoom sets map zoom\n * _center sets map center\n * _basemap sets type of map\n * _loaded provides map loaded status\n */\n private _zoom = 15;\n private _center: Array = [-100, 40];\n // private _basemap = 'streets-night-vector'; // 'streets-relief-vector'\n private _basemap = 'streets-vector'; // 'streets-relief-vector'\n\n\n\n private _loaded = false;\n private _view: esri.MapView = null;\n private _esrimap: esri.Map = null;\n private esriMain: EsriMain;\n\n // data test\n allLocus: MapBaseObject[][];\n allPoles: MapBaseObject[][];\n target_data: any[];\n poles: any[] = [];\n count = 0;\n\n\n\n\n inc = 0;\n interval: any;\n\n // esri object and properties\n __EsriMap: esri.Map;\n __EsriMapView: esri.MapView;\n __watchUtils: esri.watchUtils;\n __promiseUtils: esri.promiseUtils;\n __webMercatorUtils: any; // esri.webMercatorUtils;\n __GraphicsLayer: any; // esri.GraphicsLayer;\n __BaseLayerViewGL2D: any; // esri.BaseLayerView2D;\n __Point: any; // esri.Point;\n __SpatialReference: any; // esri.SpatialReference ;\n __Query: any;\n\n\n // callback\n private _visiblePoles: (e: any, data: any) => void;\n _visibleQuadkeys: (e: any, data: string[]) => void;\n locus: any = [];\n\n\n constructor() { }\n\n async initializeMap() {\n\n const [EsriMap,\n EsriMapView,\n watchUtils,\n promiseUtils,\n webMercatorUtils,\n GraphicsLayer,\n BaseLayerViewGL2D,\n Point,\n SpatialReference,\n Query,\n ] = await loadModules([\n 'esri/Map',\n 'esri/views/MapView',\n 'esri/core/watchUtils',\n 'esri/core/promiseUtils',\n 'esri/geometry/support/webMercatorUtils',\n 'esri/layers/GraphicsLayer',\n 'esri/views/2d/layers/BaseLayerViewGL2D',\n 'esri/geometry/Point',\n 'esri/geometry/SpatialReference',\n 'esri/tasks/support/Query'\n ]);\n\n this.__EsriMap = EsriMap;\n this.__EsriMapView = EsriMapView;\n this.__watchUtils = watchUtils;\n this.__promiseUtils = promiseUtils;\n this.__webMercatorUtils = webMercatorUtils;\n this.__GraphicsLayer = GraphicsLayer;\n this.__BaseLayerViewGL2D = BaseLayerViewGL2D;\n this.__Point = Point;\n this.__SpatialReference = SpatialReference;\n this.__Query = Query;\n\n GLTools.T__webMercatorUtils = webMercatorUtils;\n\n // data test\n\n\n this.esriMain = new EsriMain(this.__GraphicsLayer, this.__BaseLayerViewGL2D, this.__webMercatorUtils, this.__watchUtils, this.__promiseUtils);\n this.addListenerOnEsriMain();\n\n \n \n\n\n // Configure the Map\n const mapProperties: esri.MapProperties = {\n basemap: this._basemap,\n layers: null // layerSetup.layers\n };\n this._esrimap = new EsriMap(mapProperties);\n this.esriMain.setEsriMap(this._esrimap);\n\n const div = document.getElementById('viewDiv') as HTMLDivElement;\n\n\n // Initialize the MapView\n const mapViewProperties: esri.MapViewProperties = {\n container: div,\n center: this._center,\n zoom: this._zoom,\n map: this._esrimap,\n };\n this._view = new EsriMapView(mapViewProperties);\n this.esriMain.setEsriView(this._view);\n\n\n await this._view.when(\n () => this.viewinstanceIsSync(), () => this.viewError()\n );\n\n return this._view;\n }\n\n private viewError() {\n console.error('ESRI VIEW ERROR AFTER WHEN');\n }\n\n private addListenerOnEsriMain() {\n this._visiblePoles = (e, data: string[]) => this.visiblePoles(data);\n this.esriMain.addEventListener('visiblePoles', this._visiblePoles);\n\n this._visibleQuadkeys = (e, data: string[]) => this.visibleQuadkeys(data);\n this.esriMain.addEventListener('visibleQaudkeys', this._visibleQuadkeys);\n\n }\n\n private removeListenerOnEsriMain(data: string[]) {\n this.esriMain.removeEventListener('visiblePoles', this._visiblePoles);\n this.visiblePoles = null;\n\n\n this.esriMain.removeEventListener('visibleQaudkeys', this._visibleQuadkeys);\n this._visibleQuadkeys = null;\n }\n\n private visiblePoles(data: string[]): void {\n console.log('uuid poles visible length', data.length);\n }\n\n private visibleQuadkeys(data: string[]): void {\n // console.log('visible quadkeys length',data.length) ;\n }\n\n\n\n private viewinstanceIsSync() {\n\n \n // inform esriMain it's a go\n this.esriMain.viewinstanceIsSync();\n\n // test populate pole\n // this.populatePoles();\n // this.populateLocus();\n\n this.getCities() ; \n\n this.esriMain.addRadar();\n\n\n this.esriMain.translateMap(40.79, -74.34);\n\n this.target_data = [];\n\n for (let i = 0; i < 1; i++) {\n {\n this.target_data.push({\n geometry: this.__webMercatorUtils.geographicToWebMercator({\n x: -74.34, // as Longitude locus[i].posY,\n y: 40.79, // as lattiude locus[i].posX,\n type: 'point',\n spatialReference: {\n wkid: 4326\n }\n }),\n attributes: {\n NAME: 'locus ' + i,\n POPULATION: 2500,\n }\n });\n }\n }\n\n console.log('COUNT ITEM ON', this.count);\n\n this.esriMain.addTarget(this.target_data);\n\n // this.interval = setInterval(() => this.injectTest(poleLayer), 10);\n }\n\n private injectTest(layerID) {\n\n if (this.inc > 8400) {\n clearInterval(this.interval);\n }\n\n this.populatePoles();\n this.esriMain.addPoles(this.poles, layerID);\n }\n\n\n\n ngOnInit() {\n\n // Initialize MapView and return an instance of MapView\n this.initializeMap().then(mapView => {\n // The map has been initialized\n console.log('mapView ready: ', this._view.ready);\n this._loaded = this._view.ready;\n this.mapLoadedEvent.emit(true);\n });\n\n\n }\n\n ngOnDestroy() {\n if (this._view) {\n // destroy the map view\n this._view.container = null;\n }\n }\n\n private getCities() {\n\n \n const xmax = 1;\n\n console.log(cities) ; \n\n const tt = [] ; \n for (let i = 0; i < cities.length; i++) {\n // all infos\n for (let a = 0; a < xmax; a++) {\n for (let b = 0; b < xmax; b++) {\n this.count++;\n this.locus.push(new Locus(\n parseFloat(cities[i][0]),\n parseFloat(cities[i][1]),\n 'locus_source', LayerSetup.Locus,\n cities[i][2],\n parseFloat(cities[i][3])));\n\n \n\n }\n }\n }\n\n console.log(this.locus) ; \n\n\n \n\n\n\n\n // const poleLayer = this.esriMain.addPoles(this.poles);\n const locusLayer = this.esriMain.addLocus(this.locus);\n\n\n \n\n \n }\n\n\n private populatePoles() {\n const xmax = 3;\n\n // const max = i + 50;\n // let i = this.inc;\n // for (i; i < max; i++) {\n for (let i = 0; i < poles.length; i++) {\n // all infos\n for (let a = 0; a < xmax; a++) {\n for (let b = 0; b < xmax; b++) {\n this.count++;\n this.poles.push(new Pole(\n poles[i].x + (0.05 * b),\n poles[i].y + (0.05 * a),\n poles[i].source, LayerSetup.Pole,\n poles[i].uuid,\n 0.5));\n }\n }\n }\n // this.inc = i;\n }\n\n private populateLocus() {\n const xmax = 3;\n for (let i = 0; i < locus.length; i++) {\n // all infos\n for (let a = 0; a < xmax; a++) {\n for (let b = 0; b < xmax; b++) {\n this.count++;\n this.locus.push(new Locus(\n locus[i].posX + (0.05 * b),\n locus[i].posY + (0.05 * a),\n 'locus_source', LayerSetup.Locus,\n locus[i].uuid,\n 0.5));\n }\n }\n }\n\n }\n\n\n\n private populate() {\n\n // as test for multi layer\n\n const max = 1;\n let count = 0;\n this.allPoles = [];\n\n for (let a = 0; a < max; a++) {\n for (let b = 0; b < max; b++) {\n const temp: Pole[] = [];\n const layerid = a * max + b;\n\n for (let i = 0; i < poles.length; i++) {\n count++;\n temp[i] = new Pole(\n poles[i].x + (0.05 * b),\n poles[i].y + (0.05 * a),\n poles[i].source, LayerSetup.Pole,\n poles[i].uuid,\n layerid);\n }\n this.allPoles.push(temp);\n }\n }\n\n\n this.allLocus = [];\n for (let a = 0; a < max; a++) {\n for (let b = 0; b < max; b++) {\n const temp: Locus[] = [];\n const layerid = a * max + b;\n for (let i = 0; i < locus.length; i++) {\n count++;\n temp[i] = new Locus(\n locus[i].posX + (0.05 * b),\n locus[i].posY + (0.05 * a),\n 'locus_source', LayerSetup.Locus,\n locus[i].uuid,\n layerid);\n }\n this.allLocus.push(temp);\n }\n }\n\n\n\n // test target\n this.target_data = [];\n\n for (let i = 0; i < 1; i++) {\n {\n this.target_data.push({\n geometry: this.__webMercatorUtils.geographicToWebMercator({\n x: -74.34, // as Longitude locus[i].posY,\n y: 40.79, // as lattiude locus[i].posX,\n type: 'point',\n spatialReference: {\n wkid: 4326\n }\n }),\n attributes: {\n NAME: 'locus ' + i,\n POPULATION: locus[i].uuid\n }\n });\n }\n }\n\n console.log('count symbol', count);\n\n }\n\n\n\n\n\n}\n","\n
\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":"webpack:///"}