fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 1.34 kB
JavaScript
import{defineProperty as t,objectSpread2 as a}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as e}from"./BaseFilter.min.mjs";import{classRegistry as r}from"../ClassRegistry.min.mjs";import{fragmentSource as o}from"./shaders/convolute.min.mjs";const i={opaque:!1,matrix:[0,0,0,0,1,0,0,0,0]};class s extends e{getCacheKey(){return"".concat(this.type,"_").concat(Math.sqrt(this.matrix.length),"_").concat(this.opaque?1:0)}getFragmentSource(){return o[this.getCacheKey()]}applyTo2d(t){const a=t.imageData,e=a.data,r=this.matrix,o=Math.round(Math.sqrt(r.length)),i=Math.floor(o/2),s=a.width,m=a.height,n=t.ctx.createImageData(s,m),u=n.data,h=this.opaque?1:0;let p,c,l,f,g,d,x,q,j,y,M,C,b;for(M=0;M<m;M++)for(y=0;y<s;y++){for(g=4*(M*s+y),p=0,c=0,l=0,f=0,b=0;b<o;b++)for(C=0;C<o;C++)x=M+b-i,d=y+C-i,x<0||x>=m||d<0||d>=s||(q=4*(x*s+d),j=r[b*o+C],p+=e[q]*j,c+=e[q+1]*j,l+=e[q+2]*j,h||(f+=e[q+3]*j));u[g]=p,u[g+1]=c,u[g+2]=l,u[g+3]=h?e[g+3]:f}t.imageData=n}sendUniformData(t,a){t.uniform1fv(a.uMatrix,this.matrix)}toObject(){return a(a({},super.toObject()),{},{opaque:this.opaque,matrix:[...this.matrix]})}}t(s,"type","Convolute"),t(s,"defaults",i),t(s,"uniformLocations",["uMatrix","uOpaque","uHalfSize","uSize"]),r.setClass(s);export{s as Convolute,i as convoluteDefaultValues};
//# sourceMappingURL=Convolute.min.mjs.map