// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define(["exports","../../../geometry/GeometryCursor","../../../geometry/geometryCursorCollectUtils","../CIMCursor","../enums"],function(mc,Vc,Wc,Cb,h){class na{static local(){null===na.instance&&(na.instance=new na);return na.instance}execute(d,b,c,e,a){return new Xc(d,b,c)}}na.instance=null;class Xc{constructor(d,b,c){this._defaultPointSize=20;this._inputGeometries=d;this._geomUnitsPerPoint=c;this._rule=b.rule??h.GeometricEffectControlMeasureLineRule.FullGeometry;this._defaultSize=this._defaultPointSize* c}next(){for(var d;d=this._inputGeometries.next();)if(d=this._processGeom(Wc.collectMultipath(d)),d?.length)return Vc.GeometryCursor.fromJSONCIM({paths:d});return null}_clone(d){return[d[0],d[1]]}_mid(d,b){return[(d[0]+b[0])/2,(d[1]+b[1])/2]}_mix(d,b,c,e){return[d[0]*b+c[0]*e,d[1]*b+c[1]*e]}_add(d,b){return[d[0]+b[0],d[1]+b[1]]}_add2(d,b,c){return[d[0]+b,d[1]+c]}_sub(d,b){return[d[0]-b[0],d[1]-b[1]]}_dist(d,b){return Math.sqrt((d[0]-b[0])*(d[0]-b[0])+(d[1]-b[1])*(d[1]-b[1]))}_norm(d){return Math.sqrt(d[0]* d[0]+d[1]*d[1])}_normalize(d,b=1){b/=this._norm(d);d[0]*=b;d[1]*=b}_leftPerpendicular(d){const b=d[0];d[0]=-d[1];d[1]=b}_leftPerp(d){return[-d[1],d[0]]}_rightPerpendicular(d){const b=-d[0];d[0]=d[1];d[1]=b}_rightPerp(d){return[d[1],-d[0]]}_dotProduct(d,b){return d[0]*b[0]+d[1]*b[1]}_crossProduct(d,b){return d[0]*b[1]-d[1]*b[0]}_rotateDirect(d,b,c){const e=d[0]*c+d[1]*b;d[0]=d[0]*b-d[1]*c;d[1]=e}_makeCtrlPt(d){d=[d[0],d[1]];Cb.setId(d,1);return d}_addAngledTicks(d,b,c,e){const a=this._sub(c,b);this._normalize(a); var g=this._crossProduct(a,this._sub(e,b));e=0.95*m&&(g=.95*m);m=.5*B;var M=this._leftPerp(k);g=[a[0]+k[0]*g,a[1]+k[1]*g];var C=b.length-1;a=[];a.push(c?[-M[0],-M[1]]:M);var p=[-k[0],-k[1]];for(c=1;cM?[-p[0],-p[1]]:p);p=k}a.push(this._rightPerp(p)); for(C=a.length-1;0 c.length)return[];const M=this._cp2(c,-4,1),C=this._cp3(c,M,.882353,-1.94),p=[];p.push(this._mid(M,C));p.push(a);b.push(p);break;case h.GeometricEffectControlMeasureLineRule.SecondSegmentWithTicks:if(3>c.length)return[];const v=this._cp2(c,-4,1),Xa=this._cp3(c,v,.882353,-1.94),W=this._sub(Xa,v);let Fa;Fa=0=f;f++)Ha.push(this._add(Jb,E)),this._rotateDirect(E,Kb,ad);Ha.push(Mb);b.push(Ha);break;case h.GeometricEffectControlMeasureLineRule.HalfCircleSecondSegment:const ba=this._cp2(c,0,-1),cd=this._cp3(c,ba,1,-1);let N=this._sub(a,ba);this._normalize(N);const Nb=this._crossProduct(N,this._sub(cd,ba))/2;this._leftPerpendicular(N); const oc=[ba[0]+N[0]*Nb,ba[1]+N[1]*Nb];N=this._sub(ba,oc);const dd=Math.cos(Math.PI/18);let Ob=Math.sin(Math.PI/18);0=f;f++)this._rotateDirect(N,dd,Ob),pc.push(this._add(oc,N));b.push(pc);break;case h.GeometricEffectControlMeasureLineRule.HalfCircleExtended:const ra=this._cp2(c,0,-2),ca=this._cp3(c,ra,1,-1);let bb;if(4<=e)bb=c[3];else{const f=this._sub(a,ra);bb=this._add(ca,f)}const qc=this._dist(ra,ca)/2/.75,rc=this._sub(ra,a);this._normalize(rc,qc);const sc= this._sub(ca,bb);this._normalize(sc,qc);b.push([bb,ca]);const Pb=[this._clone(ca)];this._addBezier3(Pb,ca,this._add(ca,sc),this._add(ra,rc),ra,4);Pb.push(a);b.push(Pb);break;case h.GeometricEffectControlMeasureLineRule.OpenCircle:const tc=this._cp2(c,-2,0),uc=this._sub(tc,a),ed=Math.cos(Math.PI/18),fd=-Math.sin(Math.PI/18),vc=[tc];for(let f=1;33>=f;f++)this._rotateDirect(uc,ed,fd),vc.push(this._add(a,uc));b.push(vc);break;case h.GeometricEffectControlMeasureLineRule.CoverageEdgesWithTicks:const O= this._cp2(c,0,-1);let da;if(3<=e)da=c[2];else{const f=this._sub(O,a),l=this._leftPerp(f);da=[a[0]+l[0]-.25*f[0],a[1]+l[1]-.25*f[1]]}let cb;if(4<=e)cb=c[3];else{const f=this._mid(a,O),l=this._sub(a,O);this._normalize(l);this._leftPerpendicular(l);const n=this._crossProduct(l,this._sub(da,f));this._rightPerpendicular(l);cb=[da[0]+l[0]*n*2,da[1]+l[1]*n*2]}const F=this._sub(O,a);let sa,G;sa=0.95*H&&(ua=.95*H);const fb=[a[0]+q[0]*ua,a[1]+q[1]*ua];let r=this._leftPerp(q),va=[];va.push([fb[0]-r[0]*ea,fb[1]-r[1]*ea]);va.push([fb[0]+r[0]*ea,fb[1]+r[1]*ea]);b.push(va);if(4<=e){const f=c[3];let l=this._dotProduct(q,this._sub(f,a));l<.1*H?l=.1*H:l>.9*H&&(l=.9*H);const n=[a[0]+q[0]*l,a[1]+q[1]* l],t=this._crossProduct(q,this._sub(f,a)),Vb=[];Vb.push([n[0]-r[0]*t,n[1]-r[1]*t]);Vb.push([n[0]+r[0]*t,n[1]+r[1]*t]);b.push(Vb)}const zc=[ta[0]+r[0]*ea,ta[1]+r[1]*ea];r=this._sub(ta,zc);const gd=Math.cos(Math.PI/18);let Wb=Math.sin(Math.PI/18);0>ea&&(Wb=-Wb);va=[a,ta];for(let f=1;9>=f;f++)this._rotateDirect(r,gd,Wb),va.push(this._add(zc,r));b.push(va);break;case h.GeometricEffectControlMeasureLineRule.ClosedHalfCircle:const Xb=this._cp2(c,2,0),Ac=this._mid(a,Xb),Bc=this._sub(Xb,Ac),hd=Math.cos(Math.PI/ 18),id=Math.sin(Math.PI/18),Cc=[a,Xb];for(let f=1;18>=f;f++)this._rotateDirect(Bc,hd,id),Cc.push(this._add(Ac,Bc));b.push(Cc);break;case h.GeometricEffectControlMeasureLineRule.TripleParallelExtended:const fa=this._cp2(c,0,-2),Yb=this._cp3(c,fa,1,-2),ha=this._mid(a,fa),I=this._sub(Yb,fa);this._normalize(I);const Dc=Math.abs(this._crossProduct(I,this._sub(ha,fa)))/2,wa=this._dist(fa,Yb),Ec=[fa,a];Ec.push([a[0]+I[0]*wa*.5,a[1]+I[1]*wa*.5]);b.push(Ec);const xa=[];xa.push([ha[0]-I[0]*Dc,ha[1]-I[1]*Dc]); xa.push([ha[0]+I[0]*wa*.375,ha[1]+I[1]*wa*.375]);Cb.setId(xa[xa.length-1],1);xa.push([ha[0]+I[0]*wa*.75,ha[1]+I[1]*wa*.75]);b.push(xa);b.push([fa,Yb]);break;case h.GeometricEffectControlMeasureLineRule.ParallelWithTicks:const Ia=this._cp2(c,3,0),Zb=this._cp3(c,Ia,.5,-1),Ja=this._sub(Zb,Ia);this._normalize(Ja);const Fc=this._crossProduct(Ja,this._sub(Zb,a));this._leftPerpendicular(Ja);this._addAngledTicks(b,a,Ia,Zb);this._addAngledTicks(b,this._mix(a,1,Ja,Fc),this._mix(Ia,1,Ja,Fc),this._mid(a,Ia)); break;case h.GeometricEffectControlMeasureLineRule.Parallel:const Ka=this._cp2(c,3,0),jd=this._cp3(c,Ka,.5,-1),$b=this._sub(Ka,a);this._normalize($b);const gb=this._leftPerp($b),hb=this._crossProduct($b,this._sub(jd,a));let La=[a,Ka];b.push(La);La=[];La.push([a[0]+gb[0]*hb,a[1]+gb[1]*hb]);La.push([Ka[0]+gb[0]*hb,Ka[1]+gb[1]*hb]);b.push(La);break;case h.GeometricEffectControlMeasureLineRule.PerpendicularToFirstSegment:const ac=this._cp2(c,3,0),kd=this._cp3(c,ac,.5,-1),ib=this._mid(a,ac),ia=this._sub(ac, a);this._normalize(ia);const jb=this._crossProduct(ia,this._sub(kd,a));this._leftPerpendicular(ia);const bc=[];bc.push([ib[0]-ia[0]*jb*.25,ib[1]-ia[1]*jb*.25]);bc.push([ib[0]+ia[0]*jb*1.25,ib[1]+ia[1]*jb*1.25]);b.push(bc);break;case h.GeometricEffectControlMeasureLineRule.ParallelOffset:const ya=this._cp2(c,3,0),ld=this._cp3(c,ya,.5,-1),w=this._sub(ya,a);this._normalize(w);const P=this._crossProduct(w,this._sub(ld,a));this._leftPerpendicular(w);const cc=[];cc.push([a[0]-w[0]*P,a[1]-w[1]*P]);cc.push([ya[0]- w[0]*P,ya[1]-w[1]*P]);b.push(cc);const dc=[];dc.push([a[0]+w[0]*P,a[1]+w[1]*P]);dc.push([ya[0]+w[0]*P,ya[1]+w[1]*P]);b.push(dc);break;case h.GeometricEffectControlMeasureLineRule.OffsetOpposite:const kb=this._cp2(c,3,0),md=this._cp3(c,kb,.5,-1),ja=this._sub(kb,a);this._normalize(ja);const lb=this._crossProduct(ja,this._sub(md,a));this._leftPerpendicular(ja);const ec=[];ec.push([a[0]-ja[0]*lb,a[1]-ja[1]*lb]);ec.push([kb[0]-ja[0]*lb,kb[1]-ja[1]*lb]);b.push(ec);break;case h.GeometricEffectControlMeasureLineRule.OffsetSame:const mb= this._cp2(c,3,0),nd=this._cp3(c,mb,.5,-1),ka=this._sub(mb,a);this._normalize(ka);const nb=this._crossProduct(ka,this._sub(nd,a));this._leftPerpendicular(ka);const fc=[];fc.push([a[0]+ka[0]*nb,a[1]+ka[1]*nb]);fc.push([mb[0]+ka[0]*nb,mb[1]+ka[1]*nb]);b.push(fc);break;case h.GeometricEffectControlMeasureLineRule.CircleWithArc:let Q=this._cp2(c,3,0);const gc=this._cp3(c,Q,.5,-1);let za,ob;if(4<=e)za=c[3],ob=0=f;f++)this._rotateDirect(Gc,od,pd),Ma.push(this._add(a,Gc));this._add90DegArc(Ma,Q,za,gc,ob);Cb.setId(Ma[Ma.length-8],1);b.push(Ma);break;case h.GeometricEffectControlMeasureLineRule.DoubleJog:let R=this._cp2(c,-3,1),la=this._cp3(c,R,-1,-.5), K;if(4<=e)K=c[3];else{const f=a;a=R;K=la;const l=this._dist(a,f),n=this._dist(K,f);let t=30*this._geomUnitsPerPoint;.5*lthis._crossProduct(u,this._sub(a,la))?this._rotateDirect(u,S,S):this._rotateDirect(u,S,-S);x=[];x.push(la);x.push(this._add(Ic,u));x.push(this._sub(Ic,u));x.push(K);b.push(x);break;case h.GeometricEffectControlMeasureLineRule.PerpendicularOffset:const qb=this._cp2(c,-4,1),Jc=this._cp3(c,qb,.882353,-1.94),Na=this._sub(Jc,qb);0.95*rb-Aa&&(Ba=.95*rb-Aa);const tb=[Oa[0]+y[0]*Ba,Oa[1]+y[1]*Ba],ub=this._leftPerp(y),vb=[];vb.push([tb[0]+ub[0]*sb+y[0]*Aa,tb[1]+ub[1]*sb+y[1]* Aa]);vb.push(a);vb.push([tb[0]-ub[0]*sb+y[0]*Aa,tb[1]-ub[1]*sb+y[1]*Aa]);b.push(vb);break;case h.GeometricEffectControlMeasureLineRule.ChevronArrowOffset:const [Pa,Qc]=this._arrowLastSeg(c),z=this._sub(a,Pa),wb=this._norm(z);this._normalize(z);const xb=this._crossProduct(z,this._sub(Qc,Pa));let Ca=this._dotProduct(z,this._sub(Qc,Pa));Ca<.05*wb?Ca=.05*wb:Ca>.95*wb&&(Ca=.95*wb);const Qa=[Pa[0]+z[0]*Ca,Pa[1]+z[1]*Ca];this._leftPerpendicular(z);const yb=[];yb.push([Qa[0]+z[0]*xb*.5,Qa[1]+z[1]*xb*.5]); yb.push(this._mid(Qa,a));yb.push([Qa[0]-z[0]*xb*.5,Qa[1]-z[1]*xb*.5]);b.push(yb);break;case h.GeometricEffectControlMeasureLineRule.PartialFirstSegment:const [Ra,wd]=this._arrowLastSeg(c),Sa=this._sub(a,Ra),zb=this._norm(Sa);this._normalize(Sa);let Da=this._dotProduct(Sa,this._sub(wd,Ra));Da<.05*zb?Da=.05*zb:Da>.95*zb&&(Da=.95*zb);b.push([Ra,[Ra[0]+Sa[0]*Da,Ra[1]+Sa[1]*Da]]);break;case h.GeometricEffectControlMeasureLineRule.Arch:const hc=this._cp2(c,0,-1),Ab=this._cp3(c,hc,.5,1),Rc=this._sub(a,hc), xd=this._mix(Ab,1,Rc,.55),yd=this._mix(Ab,1,Rc,-.55),ic=[a];this._addBezier2(ic,a,xd,Ab,4);this._addBezier2(ic,Ab,yd,hc,4);b.push(ic);break;case h.GeometricEffectControlMeasureLineRule.CurvedParallelTicks:const T=this._cp2(c,-4,1),Ta=this._cp3(c,T,.882353,-1.94),ma=this._sub(Ta,T);0f;f++){const l=Bb[2*f+1],n=[this._clone(l)];n.push(this._add(l,[ma[0]/4,ma[1]/4]));b.push(n)}break;case h.GeometricEffectControlMeasureLineRule.Arc90Degrees:const kc=this._cp2(c,0,-1),Bd=this._cp3(c,kc,.5,1),Tc=[kc];this._add90DegArc(Tc,kc,a,Bd);b.push(Tc);break;case h.GeometricEffectControlMeasureLineRule.TipWithPerpendicularAndTicks:const [lc,Uc]=this._arrowLastSeg(c),Ea=10*this._geomUnitsPerPoint, A=this._sub(a,lc),Ua=this._norm(A);this._normalize(A);let J=this._crossProduct(A,this._sub(Uc,lc)),Va=this._dotProduct(A,this._sub(Uc,lc));Va<.05*Ua?Va=.05*Ua:Va>.95*Ua-Ea&&(Va=.95*Ua-Ea);const U=this._leftPerp(A),L=[a[0]-A[0]*Ea,a[1]-A[1]*Ea],V=.5*Math.max(Ua-Va-Ea,Ea);J=Math.abs(J);const Wa=[];Wa.push([L[0]+U[0]*(J+V)-A[0]*V,L[1]+U[1]*(J+V)-A[1]*V]);Wa.push([L[0]+U[0]*J,L[1]+U[1]*J]);Wa.push([L[0]-U[0]*J,L[1]-U[1]*J]);Wa.push([L[0]-U[0]*(J+V)-A[0]*V,L[1]-U[1]*(J+V)-A[1]*V]);b.push(Wa);b.push([L, a]);break;default:b.push(c)}}return b}}mc.EffectControlMeasureLine=na;Object.defineProperty(mc,Symbol.toStringTag,{value:"Module"})});