UNPKG

1.22 kBJavaScriptView Raw
1const drawSquircle=(e,i,t,r,l,o)=>{const h=o,s=l/2;e.beginPath(),e.lineTo(t,s),e.lineTo(i.width-t,s),e.bezierCurveTo(i.width-t/r,s,i.width-s,t/r,i.width-s,t),e.lineTo(i.width-s,i.height-t),e.bezierCurveTo(i.width-s,i.height-t/r,i.width-t/r,i.height-s,i.width-t,i.height-s),e.lineTo(t,i.height-s),e.bezierCurveTo(t/r,i.height-s,s,i.height-t/r,s,i.height-t),e.lineTo(s,t),e.bezierCurveTo(s,t/r,t/r,s,t,s),e.closePath(),l?(e.strokeStyle=h,e.lineWidth=l,e.stroke()):(e.fillStyle=h,e.fill())};if("undefined"!=typeof registerPaint){class e{static get contextOptions(){return{alpha:!0}}static get inputProperties(){return["--squircle-radius","--squircle-smooth","--squircle-outline","--squircle-color","--squircle-ratio"]}paint(e,i,t){const r=t.get("--squircle-ratio"),l=parseFloat(r)?parseFloat(r):1.8,o=parseFloat(10*t.get("--squircle-smooth")),h=parseInt(t.get("--squircle-radius"),10)*l,s=parseFloat(t.get("--squircle-outline"),10),a=t.get("--squircle-color").toString().replace(/\s/g,""),u=()=>void 0!==t.get("--squircle-smooth")[0]?0===o?1:o:10,c=()=>s||0,n=()=>a||"#f45";h<i.width/2&&h<i.height/2?drawSquircle(e,i,h,u(),c(),n()):drawSquircle(e,i,Math.min(i.width/2,i.height/2),u(),c(),n())}}registerPaint("squircle",e)}
\No newline at end of file