svg-path-properties
Advanced tools
Comparing version 0.4.5 to 0.4.6
@@ -1,2 +0,2 @@ | ||
// http://geoexamples.com/path-properties/ Version 0.4.4. Copyright 2018 Roger Veciana i Rovira. | ||
// http://geoexamples.com/path-properties/ Version 0.4.5. Copyright 2018 Roger Veciana i Rovira. | ||
(function (global, factory) { | ||
@@ -685,5 +685,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
curve = new Bezier(cur[0], cur[1] , cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4] , cur[0] + parsed[i][5], cur[1] + parsed[i][6]); | ||
length = length + curve.getTotalLength(); | ||
cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]]; | ||
functions.push(curve); | ||
if(curve.getTotalLength() > 0){ | ||
length = length + curve.getTotalLength(); | ||
cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]]; | ||
functions.push(curve); | ||
} | ||
} else if(parsed[i][0] === "S"){ | ||
@@ -690,0 +692,0 @@ if(i>0 && ["C","c","S","s"].indexOf(parsed[i-1][0]) > -1){ |
@@ -1,1 +0,1 @@ | ||
!function(t,h){"object"==typeof exports&&"undefined"!=typeof module?h(exports):"function"==typeof define&&define.amd?define(["exports"],h):h(t.spp={})}(this,function(t){"use strict";var r={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},h=/([astvzqmhlc])([^astvzqmhlc]*)/gi;function x(t){var s=[];return t.replace(h,function(t,h,n){var e,i=h.toLowerCase();for(n=(e=n.match(a))?e.map(Number):[],"m"===i&&2<n.length&&(s.push([h].concat(n.splice(0,2))),i="l",h="m"===h?"l":"L");0<=n.length;){if(n.length===r[i])return n.unshift(h),s.push(n);if(n.length<r[i])throw new Error("malformed path data");s.push([h].concat(n.splice(0,r[i])))}}),s}var a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function y(t,h,n,e,i,s,r,a){return new o(t,h,n,e,i,s,r,a)}function o(t,h,n,e,i,s,r,a){this.a={x:t,y:h},this.b={x:n,y:e},this.c={x:i,y:s},this.d={x:r,y:a},null!=r&&null!=a?(this.getArcLength=A,this.getPoint=l,this.getDerivative=u):(this.getArcLength=M,this.getPoint=p,this.getDerivative=g),this.init()}function g(t,h,n){return{x:2*(1-n)*(t[1]-t[0])+2*n*(t[2]-t[1]),y:2*(1-n)*(h[1]-h[0])+2*n*(h[2]-h[1])}}function u(t,h,n){return p([3*(t[1]-t[0]),3*(t[2]-t[1]),3*(t[3]-t[2])],[3*(h[1]-h[0]),3*(h[2]-h[1]),3*(h[3]-h[2])],n)}function c(t,h,n,e,i){for(var s=1,r=t/h,a=(t-n(e,i,r))/h;.001<s;){var o=n(e,i,r+a),g=n(e,i,r-a),u=Math.abs(t-o)/h,x=Math.abs(t-g)/h;u<s?(s=u,r+=a):x<s?(s=x,r-=a):a/=2}return r}function p(t,h,n){return{x:(1-n)*(1-n)*t[0]+2*(1-n)*n*t[1]+n*n*t[2],y:(1-n)*(1-n)*h[0]+2*(1-n)*n*h[1]+n*n*h[2]}}function l(t,h,n){return{x:(1-n)*(1-n)*(1-n)*t[0]+3*(1-n)*(1-n)*n*t[1]+3*(1-n)*n*n*t[2]+n*n*n*t[3],y:(1-n)*(1-n)*(1-n)*h[0]+3*(1-n)*(1-n)*n*h[1]+3*(1-n)*n*n*h[2]+n*n*n*h[3]}}function M(t,h,n){void 0===n&&(n=1);var e=t[0]-2*t[1]+t[2],i=h[0]-2*h[1]+h[2],s=2*t[1]-2*t[0],r=2*h[1]-2*h[0],a=4*(e*e+i*i),o=4*(e*s+i*r),g=s*s+r*r;if(0===a)return n*Math.sqrt(Math.pow(t[2]-t[0],2)+Math.pow(h[2]-h[0],2));var u=o/(2*a),x=n+u,y=g/a-u*u,c=0<x*x+y?Math.sqrt(x*x+y):0,p=0<u*u+y?Math.sqrt(u*u+y):0,l=u+Math.sqrt(u*u+y)!==0?y*Math.log(Math.abs((x+c)/(u+p))):0;return Math.sqrt(a)/2*(x*c-u*p+l)}o.prototype={constructor:o,init:function(){this.length=this.getArcLength([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y])},getTotalLength:function(){return this.length},getPointAtLength:function(t){var h=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]);return this.getPoint([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],h)},getTangentAtLength:function(t){var h=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]),n=this.getDerivative([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],h),e=Math.sqrt(n.x*n.x+n.y*n.y);return 0<e?{x:n.x/e,y:n.y/e}:{x:0,y:0}},getPropertiesAtLength:function(t){var h,n=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]),e=this.getDerivative([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],n),i=Math.sqrt(e.x*e.x+e.y*e.y);h=0<i?{x:e.x/i,y:e.y/i}:{x:0,y:0};var s=this.getPoint([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],n);return{x:s.x,y:s.y,tangentX:h.x,tangentY:h.y}}};var f=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],w=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],L=[[1],[1,1],[1,2,1],[1,3,3,1]];function v(t,h,n){var e,i,s,r,a=n.length-1;if(0===a)return 0;if(0===t){for(s=i=0;s<=a;s++)i+=(r=s,L[a][r]*Math.pow(1-h,a-s)*Math.pow(h,s)*n[s]);return i}for(e=new Array(a),s=0;s<a;s++)e[s]=a*(n[s+1]-n[s]);return v(t-1,h,e)}function A(t,h,n){var e,i,s,r;void 0===n&&(n=1);var a,o,g,u,x;for(e=n/2,s=i=0;s<20;s++)r=e*f[20][s]+e,i+=w[20][s]*(a=h,void 0,g=v(1,o=r,t),u=v(1,o,a),x=g*g+u*u,Math.sqrt(x));return e*i}function d(t,h,n,e,i,s,r,a,o){return new P(t,h,n,e,i,s,r,a,o)}function P(h,n,e,i,s,r,a,o,g){this.x0=h,this.y0=n,this.rx=e,this.ry=i,this.xAxisRotate=s,this.LargeArcFlag=r,this.SweepFlag=a,this.x1=o,this.y1=g;var t=function(t,h){t=t||500;for(var n,e=0,i=[],s=[],r=h(0),a=0;a<t;a++){var o=(g=a*(1/t),u=0,x=1,Math.min(Math.max(g,u),x));n=h(o),e+=T(r,n),s.push([r,n]),i.push({t:o,arcLength:e}),r=n}var g,u,x;return n=h(1),s.push([r,n]),e+=T(r,n),i.push({t:1,arcLength:e}),{arcLength:e,arcLengthMap:i,approximationLines:s}}(300,function(t){return b({x:h,y:n},e,i,s,r,a,{x:o,y:g},t)});this.length=t.arcLength}function b(t,h,n,e,i,s,r,a){var o;h=Math.abs(h),n=Math.abs(n);var g=(e=(e%(o=360)+o)%o)*(Math.PI/180);if(t.x===r.x&&t.y===r.y)return t;if(0===h||0===n)return this.pointOnLine(t,r,a);var u=(t.x-r.x)/2,x=(t.y-r.y)/2,y={x:Math.cos(g)*u+Math.sin(g)*x,y:-Math.sin(g)*u+Math.cos(g)*x},c=Math.pow(y.x,2)/Math.pow(h,2)+Math.pow(y.y,2)/Math.pow(n,2);1<c&&(h=Math.sqrt(c)*h,n=Math.sqrt(c)*n);var p=(Math.pow(h,2)*Math.pow(n,2)-Math.pow(h,2)*Math.pow(y.y,2)-Math.pow(n,2)*Math.pow(y.x,2))/(Math.pow(h,2)*Math.pow(y.y,2)+Math.pow(n,2)*Math.pow(y.x,2));p=p<0?0:p;var l=(i!==s?1:-1)*Math.sqrt(p),M=l*(h*y.y/n),f=l*(-n*y.x/h),w={x:Math.cos(g)*M-Math.sin(g)*f+(t.x+r.x)/2,y:Math.sin(g)*M+Math.cos(g)*f+(t.y+r.y)/2},L={x:(y.x-M)/h,y:(y.y-f)/n},v=q({x:1,y:0},L),A=q(L,{x:(-y.x-M)/h,y:(-y.y-f)/n});!s&&0<A?A-=2*Math.PI:s&&A<0&&(A+=2*Math.PI);var d=v+(A%=2*Math.PI)*a,P=h*Math.cos(d),b=n*Math.sin(d),T={x:Math.cos(g)*P-Math.sin(g)*b+w.x,y:Math.sin(g)*P+Math.cos(g)*b+w.y};return T.ellipticalArcStartAngle=v,T.ellipticalArcEndAngle=v+A,T.ellipticalArcAngle=d,T.ellipticalArcCenter=w,T.resultantRx=h,T.resultantRy=n,T}function T(t,h){return Math.sqrt(Math.pow(h.x-t.x,2)+Math.pow(h.y-t.y,2))}function q(t,h){var n=t.x*h.x+t.y*h.y,e=Math.sqrt((Math.pow(t.x,2)+Math.pow(t.y,2))*(Math.pow(h.x,2)+Math.pow(h.y,2)));return(t.x*h.y-t.y*h.x<0?-1:1)*Math.acos(n/e)}function m(t,h,n,e){return new i(t,h,n,e)}function i(t,h,n,e){this.x0=t,this.x1=h,this.y0=n,this.y1=e}P.prototype={constructor:P,init:function(){},getTotalLength:function(){return this.length},getPointAtLength:function(t){t<0?t=0:t>this.length&&(t=this.length);var h=b({x:this.x0,y:this.y0},this.rx,this.ry,this.xAxisRotate,this.LargeArcFlag,this.SweepFlag,{x:this.x1,y:this.y1},t/this.length);return{x:h.x,y:h.y}},getTangentAtLength:function(t){t<0?t=0:t>this.length&&(t=this.length);var h=b({x:this.x0,y:this.y0},this.rx,this.ry,this.xAxisRotate,this.LargeArcFlag,this.SweepFlag,{x:this.x1,y:this.y1},t/this.length);return{x:h.x,y:h.y}},getPropertiesAtLength:function(t){var h=this.getTangentAtLength(t),n=this.getPointAtLength(t);return{x:n.x,y:n.y,tangentX:h.x,tangentY:h.y}}},i.prototype.getTotalLength=function(){return Math.sqrt(Math.pow(this.x0-this.x1,2)+Math.pow(this.y0-this.y1,2))},i.prototype.getPointAtLength=function(t){var h=t/Math.sqrt(Math.pow(this.x0-this.x1,2)+Math.pow(this.y0-this.y1,2)),n=(this.x1-this.x0)*h,e=(this.y1-this.y0)*h;return{x:this.x0+n,y:this.y0+e}},i.prototype.getTangentAtLength=function(){var t=Math.sqrt((this.x1-this.x0)*(this.x1-this.x0)+(this.y1-this.y0)*(this.y1-this.y0));return{x:(this.x1-this.x0)/t,y:(this.y1-this.y0)/t}},i.prototype.getPropertiesAtLength=function(t){var h=this.getPointAtLength(t),n=this.getTangentAtLength();return{x:h.x,y:h.y,tangentX:n.x,tangentY:n.y}},t.svgPathProperties=function(t){var a=0,o=[],g=[];function u(t){if(!t)return null;for(var h,n,e=x(t),i=[0,0],s=[0,0],r=0;r<e.length;r++)"M"===e[r][0]?(n=[(i=[e[r][1],e[r][2]])[0],i[1]],g.push(null)):"m"===e[r][0]?(n=[(i=[e[r][1]+i[0],e[r][2]+i[1]])[0],i[1]],g.push(null)):"L"===e[r][0]?(a+=Math.sqrt(Math.pow(i[0]-e[r][1],2)+Math.pow(i[1]-e[r][2],2)),g.push(new m(i[0],e[r][1],i[1],e[r][2])),i=[e[r][1],e[r][2]]):"l"===e[r][0]?(a+=Math.sqrt(Math.pow(e[r][1],2)+Math.pow(e[r][2],2)),g.push(new m(i[0],e[r][1]+i[0],i[1],e[r][2]+i[1])),i=[e[r][1]+i[0],e[r][2]+i[1]]):"H"===e[r][0]?(a+=Math.abs(i[0]-e[r][1]),g.push(new m(i[0],e[r][1],i[1],i[1])),i[0]=e[r][1]):"h"===e[r][0]?(a+=Math.abs(e[r][1]),g.push(new m(i[0],i[0]+e[r][1],i[1],i[1])),i[0]=e[r][1]+i[0]):"V"===e[r][0]?(a+=Math.abs(i[1]-e[r][1]),g.push(new m(i[0],i[0],i[1],e[r][1])),i[1]=e[r][1]):"v"===e[r][0]?(a+=Math.abs(e[r][1]),g.push(new m(i[0],i[0],i[1],i[1]+e[r][1])),i[1]=e[r][1]+i[1]):"z"===e[r][0]||"Z"===e[r][0]?(a+=Math.sqrt(Math.pow(n[0]-i[0],2)+Math.pow(n[1]-i[1],2)),g.push(new m(i[0],n[0],i[1],n[1])),i=[n[0],n[1]]):"C"===e[r][0]?(h=new y(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],e[r][6]),a+=h.getTotalLength(),i=[e[r][5],e[r][6]],g.push(h)):"c"===e[r][0]?(h=new y(i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4],i[0]+e[r][5],i[1]+e[r][6]),a+=h.getTotalLength(),i=[e[r][5]+i[0],e[r][6]+i[1]],g.push(h)):"S"===e[r][0]?(h=0<r&&-1<["C","c","S","s"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-e[r-1][e[r-1].length-4],2*i[1]-e[r-1][e[r-1].length-3],e[r][1],e[r][2],e[r][3],e[r][4]):new y(i[0],i[1],i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4]),a+=h.getTotalLength(),i=[e[r][3],e[r][4]],g.push(h)):"s"===e[r][0]?(h=0<r&&-1<["C","c","S","s"].indexOf(e[r-1][0])?new y(i[0],i[1],i[0]+h.d.x-h.c.x,i[1]+h.d.y-h.c.y,i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]):new y(i[0],i[1],i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]),a+=h.getTotalLength(),i=[e[r][3]+i[0],e[r][4]+i[1]],g.push(h)):"Q"===e[r][0]?(h=i[0]==e[r][1]&&i[1]==e[r][2]?new m(e[r][1],e[r][3],e[r][2],e[r][4]):new y(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4]),a+=h.getTotalLength(),g.push(h),i=[e[r][3],e[r][4]],s=[e[r][1],e[r][2]]):"q"===e[r][0]?(h=0!=e[r][1]||0!=e[r][2]?new y(i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]):new m(i[0]+e[r][1],i[0]+e[r][3],i[1]+e[r][2],i[1]+e[r][4]),a+=h.getTotalLength(),s=[i[0]+e[r][1],i[1]+e[r][2]],i=[e[r][3]+i[0],e[r][4]+i[1]],g.push(h)):"T"===e[r][0]?(h=0<r&&-1<["Q","q","T","t"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-s[0],2*i[1]-s[1],e[r][1],e[r][2]):new m(i[0],e[r][1],i[1],e[r][2]),g.push(h),a+=h.getTotalLength(),s=[2*i[0]-s[0],2*i[1]-s[1]],i=[e[r][1],e[r][2]]):"t"===e[r][0]?(h=0<r&&-1<["Q","q","T","t"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-s[0],2*i[1]-s[1],i[0]+e[r][1],i[1]+e[r][2]):new m(i[0],i[0]+e[r][1],i[1],i[1]+e[r][2]),a+=h.getTotalLength(),s=[2*i[0]-s[0],2*i[1]-s[1]],i=[e[r][1]+i[0],e[r][2]+i[0]],g.push(h)):"A"===e[r][0]?(h=new d(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],e[r][6],e[r][7]),a+=h.getTotalLength(),i=[e[r][6],e[r][7]],g.push(h)):"a"===e[r][0]&&(h=new d(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],i[0]+e[r][6],i[1]+e[r][7]),a+=h.getTotalLength(),i=[i[0]+e[r][6],i[1]+e[r][7]],g.push(h)),o.push(a);return u}u.getTotalLength=function(){return a},u.getPointAtLength=function(t){var h=n(t);return g[h.i].getPointAtLength(h.fraction)},u.getTangentAtLength=function(t){var h=n(t);return g[h.i].getTangentAtLength(h.fraction)},u.getPropertiesAtLength=function(t){var h=n(t);return g[h.i].getPropertiesAtLength(h.fraction)},u.getParts=function(){for(var t=[],h=0;h<g.length;h++)if(null!=g[h]){var n={};n.start=g[h].getPointAtLength(0),n.end=g[h].getPointAtLength(o[h]-o[h-1]),n.length=o[h]-o[h-1],function(h){n.getPointAtLength=function(t){return h.getPointAtLength(t)},n.getTangentAtLength=function(t){return h.getTangentAtLength(t)},n.getPropertiesAtLength=function(t){return h.getPropertiesAtLength(t)}}(g[h]),t.push(n)}return t};var n=function(t){t<0?t=0:a<t&&(t=a);for(var h=o.length-1;o[h]>=t&&0<o[h];)h--;return{fraction:t-o[++h-1],i:h}};return u(t)},t.parse=x,t.Bezier=y,Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,h){"object"==typeof exports&&"undefined"!=typeof module?h(exports):"function"==typeof define&&define.amd?define(["exports"],h):h(t.spp={})}(this,function(t){"use strict";var r={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},h=/([astvzqmhlc])([^astvzqmhlc]*)/gi;function x(t){var s=[];return t.replace(h,function(t,h,n){var e,i=h.toLowerCase();for(n=(e=n.match(a))?e.map(Number):[],"m"===i&&2<n.length&&(s.push([h].concat(n.splice(0,2))),i="l",h="m"===h?"l":"L");0<=n.length;){if(n.length===r[i])return n.unshift(h),s.push(n);if(n.length<r[i])throw new Error("malformed path data");s.push([h].concat(n.splice(0,r[i])))}}),s}var a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function y(t,h,n,e,i,s,r,a){return new o(t,h,n,e,i,s,r,a)}function o(t,h,n,e,i,s,r,a){this.a={x:t,y:h},this.b={x:n,y:e},this.c={x:i,y:s},this.d={x:r,y:a},this.getDerivative=null!=r&&null!=a?(this.getArcLength=A,this.getPoint=l,u):(this.getArcLength=M,this.getPoint=p,g),this.init()}function g(t,h,n){return{x:2*(1-n)*(t[1]-t[0])+2*n*(t[2]-t[1]),y:2*(1-n)*(h[1]-h[0])+2*n*(h[2]-h[1])}}function u(t,h,n){return p([3*(t[1]-t[0]),3*(t[2]-t[1]),3*(t[3]-t[2])],[3*(h[1]-h[0]),3*(h[2]-h[1]),3*(h[3]-h[2])],n)}function c(t,h,n,e,i){for(var s=1,r=t/h,a=(t-n(e,i,r))/h;.001<s;){var o=n(e,i,r+a),g=n(e,i,r-a),u=Math.abs(t-o)/h,x=Math.abs(t-g)/h;u<s?(s=u,r+=a):x<s?(s=x,r-=a):a/=2}return r}function p(t,h,n){return{x:(1-n)*(1-n)*t[0]+2*(1-n)*n*t[1]+n*n*t[2],y:(1-n)*(1-n)*h[0]+2*(1-n)*n*h[1]+n*n*h[2]}}function l(t,h,n){return{x:(1-n)*(1-n)*(1-n)*t[0]+3*(1-n)*(1-n)*n*t[1]+3*(1-n)*n*n*t[2]+n*n*n*t[3],y:(1-n)*(1-n)*(1-n)*h[0]+3*(1-n)*(1-n)*n*h[1]+3*(1-n)*n*n*h[2]+n*n*n*h[3]}}function M(t,h,n){void 0===n&&(n=1);var e=t[0]-2*t[1]+t[2],i=h[0]-2*h[1]+h[2],s=2*t[1]-2*t[0],r=2*h[1]-2*h[0],a=4*(e*e+i*i),o=4*(e*s+i*r),g=s*s+r*r;if(0===a)return n*Math.sqrt(Math.pow(t[2]-t[0],2)+Math.pow(h[2]-h[0],2));var u=o/(2*a),x=n+u,y=g/a-u*u,c=0<x*x+y?Math.sqrt(x*x+y):0,p=0<u*u+y?Math.sqrt(u*u+y):0,l=u+Math.sqrt(u*u+y)!==0?y*Math.log(Math.abs((x+c)/(u+p))):0;return Math.sqrt(a)/2*(x*c-u*p+l)}o.prototype={constructor:o,init:function(){this.length=this.getArcLength([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y])},getTotalLength:function(){return this.length},getPointAtLength:function(t){var h=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]);return this.getPoint([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],h)},getTangentAtLength:function(t){var h=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]),n=this.getDerivative([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],h),e=Math.sqrt(n.x*n.x+n.y*n.y);return 0<e?{x:n.x/e,y:n.y/e}:{x:0,y:0}},getPropertiesAtLength:function(t){var h,n=c(t,this.length,this.getArcLength,[this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y]),e=this.getDerivative([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],n),i=Math.sqrt(e.x*e.x+e.y*e.y);h=0<i?{x:e.x/i,y:e.y/i}:{x:0,y:0};var s=this.getPoint([this.a.x,this.b.x,this.c.x,this.d.x],[this.a.y,this.b.y,this.c.y,this.d.y],n);return{x:s.x,y:s.y,tangentX:h.x,tangentY:h.y}}};var f=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],w=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],L=[[1],[1,1],[1,2,1],[1,3,3,1]];function v(t,h,n){var e,i,s,r,a=n.length-1;if(0===a)return 0;if(0===t){for(s=i=0;s<=a;s++)i+=(r=s,L[a][r]*Math.pow(1-h,a-s)*Math.pow(h,s)*n[s]);return i}for(e=new Array(a),s=0;s<a;s++)e[s]=a*(n[s+1]-n[s]);return v(t-1,h,e)}function A(t,h,n){var e,i,s,r;void 0===n&&(n=1);var a,o,g,u,x;for(e=n/2,s=i=0;s<20;s++)r=e*f[20][s]+e,i+=w[20][s]*(a=h,void 0,g=v(1,o=r,t),u=v(1,o,a),x=g*g+u*u,Math.sqrt(x));return e*i}function d(t,h,n,e,i,s,r,a,o){return new P(t,h,n,e,i,s,r,a,o)}function P(h,n,e,i,s,r,a,o,g){this.x0=h,this.y0=n,this.rx=e,this.ry=i,this.xAxisRotate=s,this.LargeArcFlag=r,this.SweepFlag=a,this.x1=o,this.y1=g;var t=function(t,h){t=t||500;for(var n,e=0,i=[],s=[],r=h(0),a=0;a<t;a++){var o=(g=a*(1/t),u=0,x=1,Math.min(Math.max(g,u),x));n=h(o),e+=T(r,n),s.push([r,n]),i.push({t:o,arcLength:e}),r=n}var g,u,x;return n=h(1),s.push([r,n]),e+=T(r,n),i.push({t:1,arcLength:e}),{arcLength:e,arcLengthMap:i,approximationLines:s}}(300,function(t){return b({x:h,y:n},e,i,s,r,a,{x:o,y:g},t)});this.length=t.arcLength}function b(t,h,n,e,i,s,r,a){var o;h=Math.abs(h),n=Math.abs(n);var g=(e=(e%(o=360)+o)%o)*(Math.PI/180);if(t.x===r.x&&t.y===r.y)return t;if(0===h||0===n)return this.pointOnLine(t,r,a);var u=(t.x-r.x)/2,x=(t.y-r.y)/2,y={x:Math.cos(g)*u+Math.sin(g)*x,y:-Math.sin(g)*u+Math.cos(g)*x},c=Math.pow(y.x,2)/Math.pow(h,2)+Math.pow(y.y,2)/Math.pow(n,2);1<c&&(h=Math.sqrt(c)*h,n=Math.sqrt(c)*n);var p=(Math.pow(h,2)*Math.pow(n,2)-Math.pow(h,2)*Math.pow(y.y,2)-Math.pow(n,2)*Math.pow(y.x,2))/(Math.pow(h,2)*Math.pow(y.y,2)+Math.pow(n,2)*Math.pow(y.x,2));p=p<0?0:p;var l=(i!==s?1:-1)*Math.sqrt(p),M=l*(h*y.y/n),f=l*(-n*y.x/h),w={x:Math.cos(g)*M-Math.sin(g)*f+(t.x+r.x)/2,y:Math.sin(g)*M+Math.cos(g)*f+(t.y+r.y)/2},L={x:(y.x-M)/h,y:(y.y-f)/n},v=q({x:1,y:0},L),A=q(L,{x:(-y.x-M)/h,y:(-y.y-f)/n});!s&&0<A?A-=2*Math.PI:s&&A<0&&(A+=2*Math.PI);var d=v+(A%=2*Math.PI)*a,P=h*Math.cos(d),b=n*Math.sin(d),T={x:Math.cos(g)*P-Math.sin(g)*b+w.x,y:Math.sin(g)*P+Math.cos(g)*b+w.y};return T.ellipticalArcStartAngle=v,T.ellipticalArcEndAngle=v+A,T.ellipticalArcAngle=d,T.ellipticalArcCenter=w,T.resultantRx=h,T.resultantRy=n,T}function T(t,h){return Math.sqrt(Math.pow(h.x-t.x,2)+Math.pow(h.y-t.y,2))}function q(t,h){var n=t.x*h.x+t.y*h.y,e=Math.sqrt((Math.pow(t.x,2)+Math.pow(t.y,2))*(Math.pow(h.x,2)+Math.pow(h.y,2)));return(t.x*h.y-t.y*h.x<0?-1:1)*Math.acos(n/e)}function m(t,h,n,e){return new i(t,h,n,e)}function i(t,h,n,e){this.x0=t,this.x1=h,this.y0=n,this.y1=e}P.prototype={constructor:P,init:function(){},getTotalLength:function(){return this.length},getPointAtLength:function(t){t<0?t=0:t>this.length&&(t=this.length);var h=b({x:this.x0,y:this.y0},this.rx,this.ry,this.xAxisRotate,this.LargeArcFlag,this.SweepFlag,{x:this.x1,y:this.y1},t/this.length);return{x:h.x,y:h.y}},getTangentAtLength:function(t){t<0?t=0:t>this.length&&(t=this.length);var h=b({x:this.x0,y:this.y0},this.rx,this.ry,this.xAxisRotate,this.LargeArcFlag,this.SweepFlag,{x:this.x1,y:this.y1},t/this.length);return{x:h.x,y:h.y}},getPropertiesAtLength:function(t){var h=this.getTangentAtLength(t),n=this.getPointAtLength(t);return{x:n.x,y:n.y,tangentX:h.x,tangentY:h.y}}},i.prototype.getTotalLength=function(){return Math.sqrt(Math.pow(this.x0-this.x1,2)+Math.pow(this.y0-this.y1,2))},i.prototype.getPointAtLength=function(t){var h=t/Math.sqrt(Math.pow(this.x0-this.x1,2)+Math.pow(this.y0-this.y1,2)),n=(this.x1-this.x0)*h,e=(this.y1-this.y0)*h;return{x:this.x0+n,y:this.y0+e}},i.prototype.getTangentAtLength=function(){var t=Math.sqrt((this.x1-this.x0)*(this.x1-this.x0)+(this.y1-this.y0)*(this.y1-this.y0));return{x:(this.x1-this.x0)/t,y:(this.y1-this.y0)/t}},i.prototype.getPropertiesAtLength=function(t){var h=this.getPointAtLength(t),n=this.getTangentAtLength();return{x:h.x,y:h.y,tangentX:n.x,tangentY:n.y}},t.svgPathProperties=function(t){var a=0,o=[],g=[];function u(t){if(!t)return null;for(var h,n,e=x(t),i=[0,0],s=[0,0],r=0;r<e.length;r++)"M"===e[r][0]?(n=[(i=[e[r][1],e[r][2]])[0],i[1]],g.push(null)):"m"===e[r][0]?(n=[(i=[e[r][1]+i[0],e[r][2]+i[1]])[0],i[1]],g.push(null)):"L"===e[r][0]?(a+=Math.sqrt(Math.pow(i[0]-e[r][1],2)+Math.pow(i[1]-e[r][2],2)),g.push(new m(i[0],e[r][1],i[1],e[r][2])),i=[e[r][1],e[r][2]]):"l"===e[r][0]?(a+=Math.sqrt(Math.pow(e[r][1],2)+Math.pow(e[r][2],2)),g.push(new m(i[0],e[r][1]+i[0],i[1],e[r][2]+i[1])),i=[e[r][1]+i[0],e[r][2]+i[1]]):"H"===e[r][0]?(a+=Math.abs(i[0]-e[r][1]),g.push(new m(i[0],e[r][1],i[1],i[1])),i[0]=e[r][1]):"h"===e[r][0]?(a+=Math.abs(e[r][1]),g.push(new m(i[0],i[0]+e[r][1],i[1],i[1])),i[0]=e[r][1]+i[0]):"V"===e[r][0]?(a+=Math.abs(i[1]-e[r][1]),g.push(new m(i[0],i[0],i[1],e[r][1])),i[1]=e[r][1]):"v"===e[r][0]?(a+=Math.abs(e[r][1]),g.push(new m(i[0],i[0],i[1],i[1]+e[r][1])),i[1]=e[r][1]+i[1]):"z"===e[r][0]||"Z"===e[r][0]?(a+=Math.sqrt(Math.pow(n[0]-i[0],2)+Math.pow(n[1]-i[1],2)),g.push(new m(i[0],n[0],i[1],n[1])),i=[n[0],n[1]]):"C"===e[r][0]?(h=new y(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],e[r][6]),a+=h.getTotalLength(),i=[e[r][5],e[r][6]],g.push(h)):"c"===e[r][0]?0<(h=new y(i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4],i[0]+e[r][5],i[1]+e[r][6])).getTotalLength()&&(a+=h.getTotalLength(),i=[e[r][5]+i[0],e[r][6]+i[1]],g.push(h)):"S"===e[r][0]?(h=0<r&&-1<["C","c","S","s"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-e[r-1][e[r-1].length-4],2*i[1]-e[r-1][e[r-1].length-3],e[r][1],e[r][2],e[r][3],e[r][4]):new y(i[0],i[1],i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4]),a+=h.getTotalLength(),i=[e[r][3],e[r][4]],g.push(h)):"s"===e[r][0]?(h=0<r&&-1<["C","c","S","s"].indexOf(e[r-1][0])?new y(i[0],i[1],i[0]+h.d.x-h.c.x,i[1]+h.d.y-h.c.y,i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]):new y(i[0],i[1],i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]),a+=h.getTotalLength(),i=[e[r][3]+i[0],e[r][4]+i[1]],g.push(h)):"Q"===e[r][0]?(h=i[0]==e[r][1]&&i[1]==e[r][2]?new m(e[r][1],e[r][3],e[r][2],e[r][4]):new y(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4]),a+=h.getTotalLength(),g.push(h),i=[e[r][3],e[r][4]],s=[e[r][1],e[r][2]]):"q"===e[r][0]?(h=0!=e[r][1]||0!=e[r][2]?new y(i[0],i[1],i[0]+e[r][1],i[1]+e[r][2],i[0]+e[r][3],i[1]+e[r][4]):new m(i[0]+e[r][1],i[0]+e[r][3],i[1]+e[r][2],i[1]+e[r][4]),a+=h.getTotalLength(),s=[i[0]+e[r][1],i[1]+e[r][2]],i=[e[r][3]+i[0],e[r][4]+i[1]],g.push(h)):"T"===e[r][0]?(h=0<r&&-1<["Q","q","T","t"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-s[0],2*i[1]-s[1],e[r][1],e[r][2]):new m(i[0],e[r][1],i[1],e[r][2]),g.push(h),a+=h.getTotalLength(),s=[2*i[0]-s[0],2*i[1]-s[1]],i=[e[r][1],e[r][2]]):"t"===e[r][0]?(h=0<r&&-1<["Q","q","T","t"].indexOf(e[r-1][0])?new y(i[0],i[1],2*i[0]-s[0],2*i[1]-s[1],i[0]+e[r][1],i[1]+e[r][2]):new m(i[0],i[0]+e[r][1],i[1],i[1]+e[r][2]),a+=h.getTotalLength(),s=[2*i[0]-s[0],2*i[1]-s[1]],i=[e[r][1]+i[0],e[r][2]+i[0]],g.push(h)):"A"===e[r][0]?(h=new d(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],e[r][6],e[r][7]),a+=h.getTotalLength(),i=[e[r][6],e[r][7]],g.push(h)):"a"===e[r][0]&&(h=new d(i[0],i[1],e[r][1],e[r][2],e[r][3],e[r][4],e[r][5],i[0]+e[r][6],i[1]+e[r][7]),a+=h.getTotalLength(),i=[i[0]+e[r][6],i[1]+e[r][7]],g.push(h)),o.push(a);return u}u.getTotalLength=function(){return a},u.getPointAtLength=function(t){var h=n(t);return g[h.i].getPointAtLength(h.fraction)},u.getTangentAtLength=function(t){var h=n(t);return g[h.i].getTangentAtLength(h.fraction)},u.getPropertiesAtLength=function(t){var h=n(t);return g[h.i].getPropertiesAtLength(h.fraction)},u.getParts=function(){for(var t=[],h=0;h<g.length;h++)if(null!=g[h]){var n={};n.start=g[h].getPointAtLength(0),n.end=g[h].getPointAtLength(o[h]-o[h-1]),n.length=o[h]-o[h-1],function(h){n.getPointAtLength=function(t){return h.getPointAtLength(t)},n.getTangentAtLength=function(t){return h.getTangentAtLength(t)},n.getPropertiesAtLength=function(t){return h.getPropertiesAtLength(t)}}(g[h]),t.push(n)}return t};var n=function(t){t<0?t=0:a<t&&(t=a);for(var h=o.length-1;o[h]>=t&&0<o[h];)h--;return{fraction:t-o[++h-1],i:h}};return u(t)},t.parse=x,t.Bezier=y,Object.defineProperty(t,"__esModule",{value:!0})}); |
{ | ||
"name": "svg-path-properties", | ||
"version": "0.4.5", | ||
"version": "0.4.6", | ||
"description": "Calculate the length for an SVG path, to use it with node or a Canvas element", | ||
@@ -33,8 +33,8 @@ "keywords": [ | ||
"devDependencies": { | ||
"eslint": "4.19", | ||
"eslint": "5.9", | ||
"package-preamble": "0.1.0", | ||
"rollup": "0.58", | ||
"rollup": "0.67", | ||
"tape": "4.9", | ||
"uglify-js": "3.3" | ||
"uglify-js": "3.4" | ||
} | ||
} |
@@ -68,5 +68,7 @@ import parse from "./parse"; | ||
curve = new Bezier(cur[0], cur[1] , cur[0] + parsed[i][1], cur[1] + parsed[i][2] , cur[0] + parsed[i][3], cur[1] + parsed[i][4] , cur[0] + parsed[i][5], cur[1] + parsed[i][6]); | ||
length = length + curve.getTotalLength(); | ||
cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]]; | ||
functions.push(curve); | ||
if(curve.getTotalLength() > 0){ | ||
length = length + curve.getTotalLength(); | ||
cur = [parsed[i][5] + cur[0], parsed[i][6] + cur[1]]; | ||
functions.push(curve); | ||
} | ||
} else if(parsed[i][0] === "S"){ | ||
@@ -73,0 +75,0 @@ if(i>0 && ["C","c","S","s"].indexOf(parsed[i-1][0]) > -1){ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
133826
1593