UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 2.29 kB
var M='M',L='L',Z='Z',R='R',C='C',math=Math,mathSqrt=math.sqrt,mathAbs=math.abs,getSlope=function(a,b,c,d){return(d-b)/(c-a)},getPointY=function(a,b,c,d){return(a-c)*b+d},getPointX=function(a,b,c,d){return(a-d)/b+c},evalX=function(a,b,c,d){var e=(d-b)/mathSqrt((c-a)*(c-a)+(d-b)*(d-b)),f=mathAbs(.5*e);return a*f+c*(1-f)},cmrcManager=function(a,b,c,d){var e=a.length,f=a[e-1],g=f.length,h=f[0],i=f[g-2];3>g||((h===R||h===C)&&3===g&&(a[e-1][0]=L),b&&a.push([L,i,d,c,d,Z]))};function getSplinePath(a,b,c,d,e){var f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,D,E,F,G,H=c,I=[null],J=[],K=[];for(F=0,G=a.length;F<G;F+=1)s=a[F],D=a[F-1]||{},E=a[F+1]||{},l=s.x,h=s.y,m=D.x,j=D.y,n=E.x,k=E.y,o=s.lastYPos,p=s.lastXPos,y=J.length,q=K.length,H?null===o?null===o&&0!==F?(g||(g=[]),g[0]===C&&(J.push(A),K.push(A),d&&cmrcManager(J,!0,B,b),d&&cmrcManager(K,!1)),J.push([M,l,h]),K.push([M,l,h]),B=l,A=[C],z=F,I=[null]):(J.push([M,l,h]),K.push([M,l,h]),B=l,A=[C],z=F):(g=A,F===a.length-1?(x=I[F-z-1],t=(l+m)/2,v=t,w=getPointY(v,x,m,j),(j>h&&w<h||j<h&&w>h)&&(w=h,v=getPointX(w,x,m,j)),A.push(v,w,t,(h+j)/2,l,h),J.push(A),K.push(A),d&&cmrcManager(J,!0,B,b),d&&cmrcManager(K,!1)):(x=I[F-z-1],j>h&&k>=h||j<h&&k<=h?(r=0,t=evalX(m,j,l,h),u=h,1==F-z?A.push((l+m)/2,(h+j)/2,t,u,l,h):(v=t,w=getPointY(v,x,m,j),(j>h&&w<h||j<h&&w>h)&&(w=h,v=getPointX(w,x,m,j)),A.push(v,w,t,u,l,h))):j===h?(r=0,A.push(m,j,l,h,l,h)):(j>h&&h>k||j<h&&h<k)&&(r=getSlope(m,j,n,k),t=evalX(m,j,l,h),u=getPointY(t,r,l,h),(j>h&&u>j||j<h&&u<j)&&(u=j,t=getPointX(u,r,l,h)),1==F-z?A.push((l+m)/2,(h+j)/2,t,u,l,h):(v=t,w=getPointY(v,x,m,j),(j>h&&w<h||j<h&&w>h)&&(w=h,v=getPointX(w,x,m,j)),A.push(v,w,t,u,l,h))),I.push(r))):null===o?null===o&&2<=y&&(g=J[y-1],g[0]===R&&(cmrcManager(J,!0,B,b),cmrcManager(K,!1)),J.push([M,l,h]),K.push([M,l,h]),B=l):2<=y?(J[y-1][0]===M&&J.push([R]),K[q-1][0]===M&&K.push([R]),y=J.length,q=K.length,g=J[y-1],f=g.length,J[y-1].push(l),J[y-1].push(h),K[q-1].push(l),K[q-1].push(h),F===e-1&&g[0]===R&&(cmrcManager(J,!0,B,b),cmrcManager(K,!1))):(J.push([M,p,o]),J.push([R,l,h]),K.push([M,p,o]),K.push([R,l,h]),B=p);return g=J[J.length-1],d&&g&&(f=g.length,g[f-1]!==Z&&(g[0]===R||g[0]===C)&&(cmrcManager(J,!0,B,b),cmrcManager(K,!1))),d||(J=H?J:K,2<=J.length&&cmrcManager(J,!1)),{closedPath:J,openPath:K}}export{getSplinePath};