UNPKG

p5.fillgradient

Version:

Fill shapes in p5.js with Linear, Radial and Conic Gradients.

2 lines 1.13 kB
/*! p5.fillgradient v0.2.0 (c) 2026 Jorge Moreno, @alterebro */ "use strict";p5.prototype.fillGradient=function(){let t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"linear";var o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};let r=2<arguments.length&&void 0!==arguments[2]&&arguments[2];var e={linear:{from:[0,0],to:[width,height],steps:[color(255),color(0,96,164),color(0)]},radial:{from:[width/2,height/2,0],to:[width/2,height/2,max(width/2,height/2)],steps:[color(255),color(0,96,164),color(0)]},conic:{from:[width/2,height/2,90],steps:[color(255),color(0,96,164),color(0)]}};let i=t.toLowerCase(),a=(i=e[i]?i:"linear",Object.assign(e[i],o)),l=r?r.drawingContext||r.canvas.getContext("2d"):this.drawingContext,n={linear:()=>l.createLinearGradient(a.from[0],a.from[1],a.to[0],a.to[1]),radial:()=>l.createRadialGradient(a.from[0],a.from[1],a.from[2],a.to[0],a.to[1],a.to[2]),conic:()=>l.createConicGradient(radians(a.from[2]),a.from[0],a.from[1])},h=n[i]();a.steps.forEach((t,o)=>{t=Array.isArray(t)?t:[t],o=t[1]||o/(a.steps.length-1),o=Math.min(1,Math.max(0,o));h.addColorStop(o,t[0])}),l.fillStyle=h};