UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 4.08 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{_ as t,a as i}from"../../../../../../../chunks/tslib.es6.js";import{location as e,UniformGroup as o,uniform as l,option as a,input as r}from"../../GraphShaderModule.js";import{length as s,clamp as n,Float as p,max as u,Vec3 as m,step as d,Vec4 as y,min as c,Vec2 as f}from"../../graph/glsl.js";import{FeatureVertexInput as h,FeatureFragmentInput as v,AFeatureShader as w,BaseHittestVertexInput as V}from"./AFeatureShader.js";import{thinLineWidthFactor as b,thinLineHalfWidth as S,epsilon as x}from"./constants.js";import{distPointSegment as g}from"./hittestUtils.js";import{VisualVariableColor as j}from"./VisualVariableColor.js";import{VisualVariableOpacity as z}from"./VisualVariableOpacity.js";import{VisualVariableSizeMinMaxValue as M}from"./VisualVariableSizeMinMaxValue.js";import{VisualVariableSizeScaleStops as W}from"./VisualVariableSizeScaleStops.js";import{VisualVariableSizeStops as C}from"./VisualVariableSizeStops.js";import{VisualVariableSizeUnitValue as P}from"./VisualVariableSizeUnitValue.js";import{getVisualVariableColor as R,getVisualVariableOpacity as H,hasVisualVariableSize as O,getVisualVariableSize as U}from"./vvUtils.js";class q extends h{}t([e(3,y)],q.prototype,"color",void 0),t([e(4,f)],q.prototype,"offset",void 0),t([e(5,f)],q.prototype,"normal",void 0),t([e(6,p)],q.prototype,"halfWidth",void 0),t([e(7,p)],q.prototype,"referenceHalfWidth",void 0),t([e(8,f)],q.prototype,"zoomRange",void 0);class A extends v{}class F extends o{}function k(t){return u(new p(b).multiply(d(t,new p(S))),new p(1))}function D(t,i){const{halfWidth:e,normal:o}=t,l=k(e),a=s(o).multiply(e);return n(l.multiply(e.subtract(a)).divide(i.add(l).subtract(new p(1))),new p(0),new p(1))}function G(t,i){const{id:e,halfWidth:o,referenceHalfWidth:l}=i;if(O(t)){const i=new p(2).multiply(l),a=U(t,e,i);return new p(.5).multiply(o.divide(u(l,new p(x)))).multiply(a)}return o}function L(t,i){const{id:e,offset:o,pos:l,normal:a,zoomRange:r}=i,{displayViewScreenMat3:s,displayViewMat3:n}=t.view,c=R(t,e,i.color),f=H(t,e),h=G(t,i),v=new p(.5).multiply(t.antialiasingControls.antialiasing),w=u(h.add(v),new p(.45)).add(new p(.1).multiply(v)),V=k(w).multiply(w).multiply(o),b=n.multiply(new m(V,new p(0))),S=s.multiply(new m(l,new p(1))).add(b),x=new p(2).multiply(d(h,new p(0))).add(t.clip(e,r)),g=new y(S.xy,x,1);return{color:c,opacity:f,halfWidth:w,normal:a,scaledOffset:V,scaledHalfWidth:h,glPosition:new y(g.xy,x,1)}}function T(t,i){const{opacity:e,color:o}=t,l=D(t,i);return e.multiply(o).multiply(l)}t([l(p)],F.prototype,"antialiasing",void 0),t([l(p)],F.prototype,"blur",void 0);class _ extends w{constructor(){super(...arguments),this.type="LineShader",this.computeAttributes={pos:["nextPos1","nextPos2"]}}vertex(t,i){const e=L(this,t);return{...e,...this.maybeRunHittest(t,i,e.halfWidth)}}fragment(t){const i=T(t,this.antialiasingControls.blur);return this.getFragmentOutput(i,t)}hittest(t,i,e){const{viewMat3:o,tileMat3:l}=this.view,a=o.multiply(l),r=a.multiply(new m(t.pos,1)),s=a.multiply(new m(i.nextPos1,1)),n=a.multiply(new m(i.nextPos2,1)),{distance:p,smallSymbolDistance:u,smallSymbolSizeThreshold:y}=this.hittestRequest,f=d(e,y.multiply(.5)).multiply(p.subtract(u)),h=this.hittestRequest.position;return c(g(h,r.xy,s.xy),g(h,r.xy,n.xy)).subtract(e).add(f)}}t([l(F)],_.prototype,"antialiasingControls",void 0),t([a(j)],_.prototype,"visualVariableColor",void 0),t([a(z)],_.prototype,"visualVariableOpacity",void 0),t([a(M)],_.prototype,"visualVariableSizeMinMaxValue",void 0),t([a(W)],_.prototype,"visualVariableSizeScaleStops",void 0),t([a(C)],_.prototype,"visualVariableSizeStops",void 0),t([a(P)],_.prototype,"visualVariableSizeUnitValue",void 0),t([i(0,r(q)),i(1,r(V))],_.prototype,"vertex",null),t([i(0,r(A))],_.prototype,"fragment",null);export{F as AntialiasingControls,A as LineFragmentInput,_ as LineShader,q as LineVertexInput,D as getLineAntialiasing,T as getLineFragmentColor,L as getLineVertexData};