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