UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.37 kB
import{isSome as e}from"../../../../../../core/maybe.js";import{pt2px as t}from"../../../../../../core/screenUtils.js";import{generateGradient as r}from"../../../../../../renderers/support/heatmapUtils.js";import{Technique as a}from"../Technique.js";import{DataType as i}from"../../../../../webgl/enums.js";class n extends a{static getStorageSpec({field:e,valueExpression:t}){return{visualVariables:!1,attributes:e||t?[{field:e,valueExpression:t}]:null}}static _createRendererSchema(){return{type:"heatmap",radius:-1,referenceScale:-1,isFieldActive:0,minDensity:-1,densityRange:-1,kernel:null,gradient:null,gradientHash:"invalid"}}static createOrUpdateRendererSchema(a,i){const{radius:n,minDensity:s,maxDensity:o,referenceScale:c,field:l,valueExpression:m,colorStops:p}=i,d=o-s,u=l||m?1:0,y=p.map((({color:e,ratio:t})=>`${t}:${e.toString()}`)).join();let h,S=!0;return e(a)&&"heatmap"===a.type?(h=a,S=y!==a.gradientHash):h=this._createRendererSchema(),h.radius=t(n),h.minDensity=s,h.densityRange=d,h.referenceScale=c,h.isFieldActive=u,S&&(h.gradient=r(p),h.gradientHash=y),h}}n.type="heatmap",n.programSpec={shader:"materials/icon/heatmapAccumulate",vertexLayout:{geometry:[{location:0,name:"a_pos",count:2,type:i.SHORT},{location:1,name:"a_vertexOffset",count:2,type:i.SHORT},{location:4,name:"a_id",count:4,type:i.UNSIGNED_BYTE}]}};export{n as HeatmapTechnique};