@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.81 kB
JavaScript
import{isSome as e,isNone as t}from"../../../../../core/maybe.js";import{TranslateAnchor as r}from"../../vectorTiles/style/StyleDefinition.js";import{WGLDrawPhase as i}from"../enums.js";import{u32to4Xu8 as a}from"../number.js";import n from"./WGLBrush.js";import{CompareFunction as s,PrimitiveType as o,DataType as l}from"../../../../webgl/enums.js";class c extends n{constructor(){super(...arguments),this._programOptions={id:!1}}dispose(){}drawMany(n,c){const{context:m,displayLevel:d,requiredLevel:f,state:u,drawPhase:p,painter:y,spriteMosaic:g,styleLayerUID:v,requestRender:E,allowDelayedRender:M}=n;if(!c.some((e=>e.layerData.get(v)?.circleIndexCount??!1)))return;const T=n.styleLayer,x=T.circleMaterial,I=y.vectorTilesMaterialManager,U=1.2,_=T.getPaintValue("circle-translate",d),R=T.getPaintValue("circle-translate-anchor",d),h=p===i.HITTEST,D=this._programOptions;D.id=h;const L=I.getMaterialProgram(m,x,D);if(M&&e(E)&&!L.compiled)return void E();m.useProgram(L),L.setUniformMatrix3fv("u_displayMat3",R===r.VIEWPORT?u.displayMat3:u.displayViewMat3),L.setUniform2fv("u_circleTranslation",_),L.setUniform1f("u_depth",T.z),L.setUniform1f("u_antialiasingWidth",U);let S=-1;if(h){const e=a(v+1);L.setUniform4fv("u_id",e)}for(const e of c){if(!e.layerData.has(v))continue;e.key.level!==S&&(S=e.key.level,x.setDataUniforms(L,d,T,S,g));const r=e.layerData.get(v);if(!r.circleIndexCount)continue;r.prepareForRendering(m);const i=r.circleVertexArrayObject;t(i)||(m.bindVAO(i),L.setUniformMatrix3fv("u_dvsMat3",e.transforms.dvs),f!==e.key.level?m.setStencilFunction(s.EQUAL,e.stencilRef,255):m.setStencilFunction(s.GREATER,255,255),m.drawElements(o.TRIANGLES,r.circleIndexCount,l.UNSIGNED_INT,Uint32Array.BYTES_PER_ELEMENT*r.circleIndexStart),e.triangleCount+=r.circleIndexCount/3)}}}export{c as WGLBrushVTLCircle};