fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 1.77 kB
JavaScript
import{Point as e}from"../../../Point.min.mjs";import{getOrthonormalVector as t,getUnitVector as n}from"../vectors.min.mjs";import{StrokeProjectionsBase as r}from"./StrokeProjectionsBase.min.mjs";import{StrokeLineJoinProjections as i}from"./StrokeLineJoinProjections.min.mjs";var a=class extends r{constructor(t,n,r){super(r),this.A=new e(t),this.T=new e(n)}calcOrthogonalProjection(e,n,r=this.strokeProjectionMagnitude){let i=this.createSideVector(e,n);return this.scaleUnitVector(t(i),r)}projectButt(){return[this.projectOrthogonally(this.A,this.T,this.strokeProjectionMagnitude),this.projectOrthogonally(this.A,this.T,-this.strokeProjectionMagnitude)]}projectRound(){let t=[];if(!this.isSkewed()&&this.A.eq(this.T)){let n=new e(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);t.push(this.applySkew(this.A.add(n)),this.applySkew(this.A.subtract(n)))}else t.push(...new i(this.A,this.T,this.T,this.options).projectRound());return t}projectSquare(){let t=[];if(this.A.eq(this.T)){let n=new e(1,1).scalarMultiply(this.strokeProjectionMagnitude).multiply(this.strokeUniformScalar);t.push(this.A.add(n),this.A.subtract(n))}else{let e=this.calcOrthogonalProjection(this.A,this.T,this.strokeProjectionMagnitude),r=this.scaleUnitVector(n(this.createSideVector(this.A,this.T)),-this.strokeProjectionMagnitude),i=this.A.add(r);t.push(i.add(e),i.subtract(e))}return t.map(e=>this.applySkew(e))}projectPoints(){switch(this.options.strokeLineCap){case`round`:return this.projectRound();case`square`:return this.projectSquare();default:return this.projectButt()}}project(){return this.projectPoints().map(e=>({originPoint:this.A,projectedPoint:e}))}};export{a as StrokeLineCapProjections};
//# sourceMappingURL=StrokeLineCapProjections.min.mjs.map