You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
19 KiB
41 lines
19 KiB
// 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<g?this._rightPerp(a):this._leftPerp(a);g=Math.abs(g)/2;const k=[];k.push([b[0]+(e[0]-a[0])*g,b[1]+(e[1]-a[1])*g]);k.push(b);k.push(c);k.push([c[0]+(e[0]+a[0])*g,c[1]+(e[1]+a[1])*g]);d.push(k)}_addBezier2(d,b,c,e,a){if(0===a--)d.push(e);else{var g=this._mid(b,c);c=this._mid(c,e);var k=this._mid(g,c);this._addBezier2(d,b,g,k,a);this._addBezier2(d,k,c,e,a)}}_addBezier3(d,b,c,e,a,g){if(0===g--)d.push(a);else{var k=this._mid(b,c),m=this._mid(c,e);e=this._mid(e, |
|
a);c=this._mid(k,m);m=this._mid(m,e);var B=this._mid(c,m);this._addBezier3(d,b,k,c,B,g);this._addBezier3(d,B,m,e,a,g)}}_add90DegArc(d,b,c,e,a){e=a??0<this._crossProduct(this._sub(c,b),this._sub(e,b));a=this._mid(b,c);const g=this._sub(a,b);e?this._leftPerpendicular(g):this._rightPerpendicular(g);a[0]+=g[0];a[1]+=g[1];this._addBezier3(d,b,this._mix(b,.33333,a,.66667),this._mix(c,.33333,a,.66667),c,4)}_addArrow(d,b,c){var e=b[0],a=b[1],g=b[b.length-1],k=this._sub(e,a),m=this._norm(k);this._normalize(k); |
|
const B=Math.abs(this._crossProduct(k,this._sub(g,a)));g=this._dotProduct(k,this._sub(g,a));g<.05*m?g=.05*m:g>.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;c<C-1;c++){k=this._sub(b[c+1],b[c]);this._normalize(k);var v=this._dotProduct(k,p);M=this._crossProduct(k,p);v=Math.sqrt((1+v)/2);p=this._sub(k,p);this._normalize(p);p[0]/=v;p[1]/=v;a.push(0>M?[-p[0],-p[1]]:p);p=k}a.push(this._rightPerp(p)); |
|
for(C=a.length-1;0<C;C--)d.push([b[C][0]+a[C][0]*m,b[C][1]+a[C][1]*m]);d.push([g[0]+a[0][0]*m,g[1]+a[0][1]*m]);d.push([g[0]+a[0][0]*B,g[1]+a[0][1]*B]);d.push(e);d.push([g[0]-a[0][0]*B,g[1]-a[0][1]*B]);d.push([g[0]-a[0][0]*m,g[1]-a[0][1]*m]);for(e=1;e<a.length;e++)d.push([b[e][0]-a[e][0]*m,b[e][1]-a[e][1]*m])}_cp2(d,b,c){return 2<=d.length?d[1]:this._add2(d[0],b*this._defaultSize,c*this._defaultSize)}_cp3(d,b,c,e){if(3<=d.length)return d[2];c=this._mix(d[0],1-c,b,c);d=this._sub(b,d[0]);this._normalize(d); |
|
this._rightPerpendicular(d);return[c[0]+d[0]*e*this._defaultSize,c[1]+d[1]*e*this._defaultSize]}_arrowPath(d){if(2<d.length)return d;const b=d[0];d=this._cp2(d,-4,0);const c=this._sub(b,d);this._normalize(c);const e=this._rightPerp(c);return[b,d,[b[0]+(e[0]-c[0])*this._defaultSize,b[1]+(e[1]-c[1])*this._defaultSize]]}_arrowLastSeg(d){var b=d[0];const c=this._cp2(d,-4,0);if(3<=d.length)b=d[d.length-1];else{d=this._sub(b,c);this._normalize(d);const e=this._rightPerp(d);b=[b[0]+(e[0]-d[0])*this._defaultSize, |
|
b[1]+(e[1]-d[1])*this._defaultSize]}return[c,b]}_processGeom(d){if(!d)return null;const b=[];for(const c of d){if(!c||0===c.length)continue;const e=c.length;let a=c[0];switch(this._rule){case h.GeometricEffectControlMeasureLineRule.PerpendicularFromFirstSegment:const g=this._cp2(c,0,-1),k=this._cp3(c,g,.5,4),m=[];m.push(k);m.push(this._mid(a,g));b.push(m);break;case h.GeometricEffectControlMeasureLineRule.ReversedFirstSegment:const B=this._cp2(c,0,-1);b.push([B,a]);break;case h.GeometricEffectControlMeasureLineRule.PerpendicularToSecondSegment:if(3> |
|
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<this._crossProduct(W,this._sub(a,v))?this._rightPerp(W):this._leftPerp(W);const Ga=[];Ga.push([v[0]+(Fa[0]-W[0])/3,v[1]+(Fa[1]-W[1])/3]);Ga.push(v);Ga.push(Xa);Ga.push([Xa[0]+(Fa[0]+W[0])/3,Xa[1]+ |
|
(Fa[1]+W[1])/3]);b.push(Ga);break;case h.GeometricEffectControlMeasureLineRule.DoublePerpendicular:const Db=this._cp2(c,0,-1),oa=this._cp3(c,Db,.5,3),Yc=this._mid(a,Db),X=this._sub(Yc,oa);this._normalize(X);const Ya=this._crossProduct(X,this._sub(a,oa));this._leftPerpendicular(X);const Eb=[];Eb.push(a);Eb.push([oa[0]+X[0]*Ya,oa[1]+X[1]*Ya]);b.push(Eb);const Fb=[];Fb.push([oa[0]-X[0]*Ya,oa[1]-X[1]*Ya]);Fb.push(Db);b.push(Fb);break;case h.GeometricEffectControlMeasureLineRule.OppositeToFirstSegment:const nc= |
|
this._cp2(c,0,-1),pa=this._cp3(c,nc,.5,3),Zc=this._mid(a,nc),Y=this._sub(Zc,pa);this._normalize(Y);const Za=this._crossProduct(Y,this._sub(a,pa));this._leftPerpendicular(Y);const Gb=[];Gb.push([pa[0]+Y[0]*Za,pa[1]+Y[1]*Za]);Gb.push([pa[0]-Y[0]*Za,pa[1]-Y[1]*Za]);b.push(Gb);break;case h.GeometricEffectControlMeasureLineRule.TriplePerpendicular:const $a=this._cp2(c,0,-1),Z=this._cp3(c,$a,.5,4),D=this._mid(a,$a),aa=this._sub(D,Z);this._normalize(aa);const ab=this._crossProduct(aa,this._sub(a,Z));this._leftPerpendicular(aa); |
|
const Hb=[];Hb.push([Z[0]+aa[0]*ab*.8,Z[1]+aa[1]*ab*.8]);Hb.push([D[0]+.8*(a[0]-D[0]),D[1]+.8*(a[1]-D[1])]);b.push(Hb);b.push([Z,D]);const Ib=[];Ib.push([Z[0]-aa[0]*ab*.8,Z[1]-aa[1]*ab*.8]);Ib.push([D[0]+.8*($a[0]-D[0]),D[1]+.8*($a[1]-D[1])]);b.push(Ib);break;case h.GeometricEffectControlMeasureLineRule.HalfCircleFirstSegment:const qa=this._cp2(c,0,-1),$c=this._cp3(c,qa,.5,4),Jb=this._mid(a,qa);let E=this._sub(qa,a);const Kb=Math.cos(Math.PI/18),ad=Math.sin(Math.PI/18),Lb=Math.sqrt((1+Kb)/2),bd=Math.sqrt((1- |
|
Kb)/2),Ha=[];let Mb;0<this._crossProduct(E,this._sub($c,a))?(Ha.push(a),E=this._sub(a,Jb),Mb=qa):(Ha.push(qa),E=this._sub(qa,Jb),Mb=a);this._rotateDirect(E,Lb,bd);E[0]/=Lb;E[1]/=Lb;for(let f=1;18>=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<Nb&&(Ob=-Ob);const pc=[ba];for(let f=1;18>=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<this._crossProduct(F,this._sub(da,a))?this._rightPerp(F):this._leftPerp(F);G=[];G.push(da);G.push(a);G.push([a[0]+ |
|
(sa[0]-F[0])/3,a[1]+(sa[1]-F[1])/3]);b.push(G);sa=0<this._crossProduct(F,this._sub(cb,O))?this._rightPerp(F):this._leftPerp(F);G=[];G.push([O[0]+(sa[0]+F[0])/3,O[1]+(sa[1]+F[1])/3]);G.push(O);G.push(cb);b.push(G);break;case h.GeometricEffectControlMeasureLineRule.GapExtentWithDoubleTicks:const db=this._cp2(c,0,2),Qb=this._cp3(c,db,0,1);let eb;if(4<=e)eb=c[3];else{const f=this._sub(db,a);eb=this._add(Qb,f)}this._addAngledTicks(b,a,db,this._mid(Qb,eb));this._addAngledTicks(b,Qb,eb,this._mid(a,db)); |
|
break;case h.GeometricEffectControlMeasureLineRule.GapExtentMidline:const Rb=this._cp2(c,2,0),wc=this._cp3(c,Rb,0,1);let Sb;if(4<=e)Sb=c[3];else{const f=this._sub(Rb,a);Sb=this._add(wc,f)}const Tb=[];Tb.push(this._mid(a,wc));Tb.push(this._mid(Rb,Sb));b.push(Tb);break;case h.GeometricEffectControlMeasureLineRule.Chevron:const xc=this._cp2(c,-1,-1);let Ub;if(3<=e)Ub=c[2];else{const f=this._sub(xc,a);this._leftPerpendicular(f);Ub=this._add(a,f)}b.push([xc,this._makeCtrlPt(a),Ub]);break;case h.GeometricEffectControlMeasureLineRule.PerpendicularWithArc:const ta= |
|
this._cp2(c,0,-2),yc=this._cp3(c,ta,.5,-1),q=this._sub(ta,a),H=this._norm(q);q[0]/=H;q[1]/=H;const ea=this._crossProduct(q,this._sub(yc,a));let ua=this._dotProduct(q,this._sub(yc,a));ua<.05*H?ua=.05*H:ua>.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<this._crossProduct(this._sub(za,Q),this._sub(gc,Q));else{za=Q;ob=0<this._crossProduct(this._sub(za, |
|
a),this._sub(gc,a));const f=24*this._geomUnitsPerPoint,l=this._sub(za,a);this._normalize(l,f);const n=Math.sqrt(2)/2;this._rotateDirect(l,n,ob?n:-n);Q=this._add(a,l)}const Gc=this._sub(Q,a),od=Math.cos(Math.PI/18),pd=Math.sin(Math.PI/18),Ma=[Q];for(let f=1;36>=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*l<t&&(t=.5*l);.5*n<t&&(t=.5*n);R=this._mix(a,t/l,f,(l-t)/l);la=this._mix(K,t/n,f,(n-t)/n)}const Hc=this._mid(a,R),Ic=this._mid(K,la),qd=this._dist(a,R),rd=this._dist(la,K);let pb=Math.min(qd,rd)/8;pb=Math.min(pb,24*this._geomUnitsPerPoint);const S=Math.cos(Math.PI/4);let u=this._sub(a,R);this._normalize(u,pb);0<this._crossProduct(u,this._sub(K,R))?this._rotateDirect(u,S,-S):this._rotateDirect(u, |
|
S,S);let x=[];x.push(R);x.push(this._add(Hc,u));x.push(this._sub(Hc,u));x.push(a);b.push(x);u=this._sub(K,la);this._normalize(u,pb);0>this._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<this._crossProduct(Na,this._sub(a,qb))? |
|
this._rightPerpendicular(Na):this._leftPerpendicular(Na);const sd=[Na[0]/8,Na[1]/8],td=this._sub(this._mid(qb,Jc),sd);b.push([td,a]);break;case h.GeometricEffectControlMeasureLineRule.LineExcludingLastSegment:const Kc=this._arrowPath(c),Lc=[];let Mc=Kc.length-2;for(;Mc--;)Lc.push(Kc[Mc]);b.push(Lc);break;case h.GeometricEffectControlMeasureLineRule.MultivertexArrow:const ud=this._arrowPath(c),Nc=[];this._addArrow(Nc,ud,!1);b.push(Nc);break;case h.GeometricEffectControlMeasureLineRule.CrossedArrow:const vd= |
|
this._arrowPath(c),Oc=[];this._addArrow(Oc,vd,!0);b.push(Oc);break;case h.GeometricEffectControlMeasureLineRule.ChevronArrow:const [Oa,Pc]=this._arrowLastSeg(c),Aa=10*this._geomUnitsPerPoint,y=this._sub(a,Oa),rb=this._norm(y);this._normalize(y);const sb=this._crossProduct(y,this._sub(Pc,Oa));let Ba=this._dotProduct(y,this._sub(Pc,Oa));Ba<.05*rb?Ba=.05*rb:Ba>.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);0<this._crossProduct(ma,this._sub(a,T))?this._rightPerpendicular(ma):this._leftPerpendicular(ma);const jc=[ma[0]/8,ma[1]/8],Sc=this._sub(this._mid(T,Ta),jc),zd=this._sub(this._mix(T,.75,Ta,.25),jc),Ad=this._sub(this._mix(T, |
|
.25,Ta,.75),jc),Bb=[T];this._addBezier2(Bb,T,zd,Sc,3);this._addBezier2(Bb,Sc,Ad,Ta,3);b.push(Bb);for(let f=0;8>f;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"})}); |