Socket
Socket
Sign inDemoInstall

perfect-freehand

Package Overview
Dependencies
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

perfect-freehand - npm Package Compare versions

Comparing version 0.4.7 to 0.4.71

11

dist/perfect-freehand.cjs.development.js

@@ -189,3 +189,3 @@ 'use strict';

return add(A, mul(vec(A, B), t));
}
} // isLeft: >0 for counterclockwise

@@ -403,8 +403,5 @@ var min = Math.min,

var la = add(point, _offset);
var ra = sub(point, _offset);
for (var t = 0.2; t < 1; t += 0.2) {
tr = rotAround(la, point, PI * -t);
tl = rotAround(ra, point, PI * t);
for (var t = 0; t < 1; t += 0.2) {
tr = rotAround(add(point, _offset), point, PI * -t);
tl = rotAround(sub(point, _offset), point, PI * t);
rightPts.push(tr);

@@ -411,0 +408,0 @@ leftPts.push(tl);

@@ -1,2 +0,2 @@

"use strict";function n(n,r,t){return n*(1-t)+r*t}function r(n,r,t){return Math.max(r,Math.min(t,n))}function t(t,e,i,o){return void 0===o&&(o=.5),e?(o=r(i(o),0,1),(e<0?n(t,t+t*r(e,-.95,-.05),o):n(t-t*r(e,.05,.95),t,o))/2):t/2}function e(n,r){return[n[0]+r[0],n[1]+r[1]]}function i(n,r){return[n[0]-r[0],n[1]-r[1]]}function o(n,r){return[r[0]-n[0],r[1]-n[1]]}function u(n,r){return[n[0]*r,n[1]*r]}function s(n){return[n[1],-n[0]]}function a(n,r){return n[0]*r[0]+n[1]*r[1]}function v(n,r){return function(n){return n[0]*n[0]+n[1]*n[1]}(i(n,r))}function f(n){return function(n,r){return[n[0]/r,n[1]/r]}(n,function(n){return Math.hypot(n[0],n[1])}(n))}function c(n,r){return Math.hypot(n[1]-r[1],n[0]-r[0])}function p(n,r,t){var e=Math.sin(t),i=Math.cos(t),o=n[0]-r[0],u=n[1]-r[1];return[o*i-u*e+r[0],o*e+u*i+r[1]]}function h(n,r,t){return e(n,u(o(n,r),t))}Object.defineProperty(exports,"__esModule",{value:!0});var d=Math.min,g=Math.PI;function l(n,r){var t=r.simulatePressure,i=r.streamline,u=void 0===i?.5:i,s=r.size,v=void 0===s?8:s;u/=2,void 0===t||t||(u/=2);var p=function(n){return Array.isArray(n[0])?n.map((function(n){var r=n[2];return[n[0],n[1],void 0===r?.5:r]})):n.map((function(n){var r=n.pressure;return[n.x,n.y,void 0===r?.5:r]}))}(n),d=p.length;if(0===d)return[];1===d&&p.push(e(p[0],[1,0]));for(var g=[{point:[p[0][0],p[0][1]],pressure:p[0][2],vector:[0,0],distance:0,runningLength:0}],l=1,m=p[l],M=g[0];l<p.length;m=p[++l],M=g[l-1]){var L=h(M.point,m,1-u),x=m[2],y=f(o(L,M.point)),P=c(L,M.point);g.push({point:L,pressure:x,vector:y,distance:P,runningLength:M.runningLength+P})}for(var k=g[d-1].runningLength,b=d-2;b>1;b--){var z=g[b],A=z.runningLength,O=z.vector,S=a(g[b-1].vector,g[b].vector);if(k-A>v/2||S<.8){for(var _=b;_<d;_++)g[_].vector=O;break}}return g}function m(n,r){void 0===r&&(r={});var l=r.size,m=void 0===l?8:l,M=r.thinning,L=void 0===M?.5:M,x=r.smoothing,y=void 0===x?.5:x,P=r.simulatePressure,k=void 0===P||P,b=r.easing,z=void 0===b?function(n){return n}:b,A=r.start,O=void 0===A?{}:A,S=r.end,_=void 0===S?{}:S,j=r.last,w=void 0!==j&&j,I=r.streamline,q=void 0===I?.5:I;q/=2;var B=O.taper,C=void 0===B?0:B,D=O.easing,E=void 0===D?function(n){return n*(2-n)}:D,F=_.taper,G=void 0===F?0:F,H=_.easing,J=void 0===H?function(n){return--n*n*n+1}:H,K=n.length;if(0===K)return[];for(var N=n[K-1].runningLength,Q=[],R=[],T=n.slice(0,5).reduce((function(n,r){return(n+r.pressure)/2}),n[0].pressure),U=t(m,L,z,n[K-1].pressure),V=n[0].vector,W=n[0].point,X=W,Y=W,Z=X,$=1;$<K-1;$++){var nn=n[$],rn=nn.point,tn=nn.pressure,en=nn.vector,on=nn.distance,un=nn.runningLength;if(L){if(k){var sn=d(1,1-on/m),an=d(1,on/m);tn=d(1,T+an/2*(sn-T))}U=t(m,L,z,tn)}else U=m/2;var vn=un<C?E(un/C):1,fn=N-un<G?J((N-un)/G):1;U*=Math.min(vn,fn);var cn=n[$+1].vector,pn=a(en,cn);if(pn<0){for(var hn=u(s(V),U),dn=e(rn,hn),gn=i(rn,hn),ln=.2;ln<1;ln+=.2)Z=p(dn,rn,g*-ln),Y=p(gn,rn,g*ln),R.push(Z),Q.push(Y);W=Y,X=Z}else{var mn=u(s(h(cn,en,pn)),U);Y=i(rn,mn),Z=e(rn,mn);var Mn=1===$||pn<.25,Ln=Math.pow((un>m?m:m/2)*y,2);(Mn||v(W,Y)>Ln)&&(Q.push(h(W,Y,q)),W=Y),(Mn||v(X,Z)>Ln)&&(R.push(h(X,Z,q)),X=Z),T=tn,V=en}}var xn=n[0],yn=n[K-1],Pn=R.length<2||Q.length<2;if(Pn&&(!C&&!G||w)){for(var kn=0,bn=0;bn<K;bn++){var zn=n[bn];if(zn.runningLength>m){kn=t(m,L,z,zn.pressure);break}}for(var An=i(xn.point,u(s(f(o(yn.point,xn.point))),kn||U)),On=[],Sn=0;Sn<=1;Sn+=.1)On.push(p(An,xn.point,2*g*Sn));return On}var _n=[];if(!(C||G&&Pn)){for(var jn=i(xn.point,u(f(o(Z=R[1],Y=Q[1])),c(Z,Y)/2)),wn=0;wn<=1;wn+=.2)_n.push(p(jn,xn.point,g*wn));Q.shift(),R.shift()}var In=[];if(G||C&&Pn)In.push(yn.point);else for(var qn=i(yn.point,u(s(yn.vector),U)),Bn=0;Bn<=1;Bn+=.1)In.push(p(qn,yn.point,3*g*Bn));return Q.concat(In,R.reverse(),_n)}exports.default=function(n,r){return void 0===r&&(r={}),m(l(n,r),r)},exports.getStrokeOutlinePoints=m,exports.getStrokePoints=l;
"use strict";function n(n,r,t){return n*(1-t)+r*t}function r(n,r,t){return Math.max(r,Math.min(t,n))}function t(t,e,i,o){return void 0===o&&(o=.5),e?(o=r(i(o),0,1),(e<0?n(t,t+t*r(e,-.95,-.05),o):n(t-t*r(e,.05,.95),t,o))/2):t/2}function e(n,r){return[n[0]+r[0],n[1]+r[1]]}function i(n,r){return[n[0]-r[0],n[1]-r[1]]}function o(n,r){return[r[0]-n[0],r[1]-n[1]]}function u(n,r){return[n[0]*r,n[1]*r]}function s(n){return[n[1],-n[0]]}function a(n,r){return n[0]*r[0]+n[1]*r[1]}function v(n,r){return function(n){return n[0]*n[0]+n[1]*n[1]}(i(n,r))}function f(n){return function(n,r){return[n[0]/r,n[1]/r]}(n,function(n){return Math.hypot(n[0],n[1])}(n))}function c(n,r){return Math.hypot(n[1]-r[1],n[0]-r[0])}function p(n,r,t){var e=Math.sin(t),i=Math.cos(t),o=n[0]-r[0],u=n[1]-r[1];return[o*i-u*e+r[0],o*e+u*i+r[1]]}function h(n,r,t){return e(n,u(o(n,r),t))}Object.defineProperty(exports,"__esModule",{value:!0});var d=Math.min,g=Math.PI;function l(n,r){var t=r.simulatePressure,i=r.streamline,u=void 0===i?.5:i,s=r.size,v=void 0===s?8:s;u/=2,void 0===t||t||(u/=2);var p=function(n){return Array.isArray(n[0])?n.map((function(n){var r=n[2];return[n[0],n[1],void 0===r?.5:r]})):n.map((function(n){var r=n.pressure;return[n.x,n.y,void 0===r?.5:r]}))}(n),d=p.length;if(0===d)return[];1===d&&p.push(e(p[0],[1,0]));for(var g=[{point:[p[0][0],p[0][1]],pressure:p[0][2],vector:[0,0],distance:0,runningLength:0}],l=1,m=p[l],M=g[0];l<p.length;m=p[++l],M=g[l-1]){var L=h(M.point,m,1-u),x=m[2],y=f(o(L,M.point)),P=c(L,M.point);g.push({point:L,pressure:x,vector:y,distance:P,runningLength:M.runningLength+P})}for(var k=g[d-1].runningLength,b=d-2;b>1;b--){var z=g[b],A=z.runningLength,O=z.vector,S=a(g[b-1].vector,g[b].vector);if(k-A>v/2||S<.8){for(var _=b;_<d;_++)g[_].vector=O;break}}return g}function m(n,r){void 0===r&&(r={});var l=r.size,m=void 0===l?8:l,M=r.thinning,L=void 0===M?.5:M,x=r.smoothing,y=void 0===x?.5:x,P=r.simulatePressure,k=void 0===P||P,b=r.easing,z=void 0===b?function(n){return n}:b,A=r.start,O=void 0===A?{}:A,S=r.end,_=void 0===S?{}:S,j=r.last,w=void 0!==j&&j,I=r.streamline,q=void 0===I?.5:I;q/=2;var B=O.taper,C=void 0===B?0:B,D=O.easing,E=void 0===D?function(n){return n*(2-n)}:D,F=_.taper,G=void 0===F?0:F,H=_.easing,J=void 0===H?function(n){return--n*n*n+1}:H,K=n.length;if(0===K)return[];for(var N=n[K-1].runningLength,Q=[],R=[],T=n.slice(0,5).reduce((function(n,r){return(n+r.pressure)/2}),n[0].pressure),U=t(m,L,z,n[K-1].pressure),V=n[0].vector,W=n[0].point,X=W,Y=W,Z=X,$=1;$<K-1;$++){var nn=n[$],rn=nn.point,tn=nn.pressure,en=nn.vector,on=nn.distance,un=nn.runningLength;if(L){if(k){var sn=d(1,1-on/m),an=d(1,on/m);tn=d(1,T+an/2*(sn-T))}U=t(m,L,z,tn)}else U=m/2;var vn=un<C?E(un/C):1,fn=N-un<G?J((N-un)/G):1;U*=Math.min(vn,fn);var cn=n[$+1].vector,pn=a(en,cn);if(pn<0){for(var hn=u(s(V),U),dn=0;dn<1;dn+=.2)Z=p(e(rn,hn),rn,g*-dn),Y=p(i(rn,hn),rn,g*dn),R.push(Z),Q.push(Y);W=Y,X=Z}else{var gn=u(s(h(cn,en,pn)),U);Y=i(rn,gn),Z=e(rn,gn);var ln=1===$||pn<.25,mn=Math.pow((un>m?m:m/2)*y,2);(ln||v(W,Y)>mn)&&(Q.push(h(W,Y,q)),W=Y),(ln||v(X,Z)>mn)&&(R.push(h(X,Z,q)),X=Z),T=tn,V=en}}var Mn=n[0],Ln=n[K-1],xn=R.length<2||Q.length<2;if(xn&&(!C&&!G||w)){for(var yn=0,Pn=0;Pn<K;Pn++){var kn=n[Pn];if(kn.runningLength>m){yn=t(m,L,z,kn.pressure);break}}for(var bn=i(Mn.point,u(s(f(o(Ln.point,Mn.point))),yn||U)),zn=[],An=0;An<=1;An+=.1)zn.push(p(bn,Mn.point,2*g*An));return zn}var On=[];if(!(C||G&&xn)){for(var Sn=i(Mn.point,u(f(o(Z=R[1],Y=Q[1])),c(Z,Y)/2)),_n=0;_n<=1;_n+=.2)On.push(p(Sn,Mn.point,g*_n));Q.shift(),R.shift()}var jn=[];if(G||C&&xn)jn.push(Ln.point);else for(var wn=i(Ln.point,u(s(Ln.vector),U)),In=0;In<=1;In+=.1)jn.push(p(wn,Ln.point,3*g*In));return Q.concat(jn,R.reverse(),On)}exports.default=function(n,r){return void 0===r&&(r={}),m(l(n,r),r)},exports.getStrokeOutlinePoints=m,exports.getStrokePoints=l;
//# sourceMappingURL=perfect-freehand.cjs.production.min.js.map

@@ -185,3 +185,3 @@ function lerp(y1, y2, mu) {

return add(A, mul(vec(A, B), t));
}
} // isLeft: >0 for counterclockwise

@@ -399,8 +399,5 @@ var min = Math.min,

var la = add(point, _offset);
var ra = sub(point, _offset);
for (var t = 0.2; t < 1; t += 0.2) {
tr = rotAround(la, point, PI * -t);
tl = rotAround(ra, point, PI * t);
for (var t = 0; t < 1; t += 0.2) {
tr = rotAround(add(point, _offset), point, PI * -t);
tl = rotAround(sub(point, _offset), point, PI * t);
rightPts.push(tr);

@@ -407,0 +404,0 @@ leftPts.push(tl);

@@ -94,1 +94,3 @@ /**

export declare function lrp(A: number[], B: number[], t: number): number[];
export declare function isLeft(p1: number[], pc: number[], p2: number[]): number;
export declare function clockwise(p1: number[], pc: number[], p2: number[]): boolean;
{
"version": "0.4.7",
"version": "0.4.71",
"name": "perfect-freehand",

@@ -4,0 +4,0 @@ "author": {

@@ -7,3 +7,3 @@ # ![Screenshot](screenshot.svg 'Perfect Freehand')

💰 Want to use this library in your commercial product? [Contact me here](steveruizok+perfectfreehand@gmail.com).
💰 Want to use this library in your commercial product? [Contact me here](mailto:steveruizok+perfectfreehand@gmail.com).

@@ -10,0 +10,0 @@ ## Table of Contents

@@ -229,8 +229,6 @@ import { toPointsArray, getStrokeRadius } from './utils'

const offset = vec.mul(vec.per(prevVector), radius)
const la = vec.add(point, offset)
const ra = vec.sub(point, offset)
for (let t = 0.2; t < 1; t += 0.2) {
tr = vec.rotAround(la, point, PI * -t)
tl = vec.rotAround(ra, point, PI * t)
for (let t = 0; t < 1; t += 0.2) {
tr = vec.rotAround(vec.add(point, offset), point, PI * -t)
tl = vec.rotAround(vec.sub(point, offset), point, PI * t)

@@ -246,3 +244,2 @@ rightPts.push(tr)

}
/*

@@ -249,0 +246,0 @@ Add regular points

@@ -151,1 +151,12 @@ /**

}
// isLeft: >0 for counterclockwise
// =0 for none (degenerate)
// <0 for clockwise
export function isLeft(p1: number[], pc: number[], p2: number[]) {
return (pc[0] - p1[0]) * (p2[1] - p1[1]) - (p2[0] - p1[0]) * (pc[1] - p1[1])
}
export function clockwise(p1: number[], pc: number[], p2: number[]) {
return isLeft(p1, pc, p2) > 0
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc