bMaxa2CUE NENrNNENENIRCMKEVNEN EN N G N E NGNENILCMKEWNE)N EN N G N ENGNENILCMK&NE}N EN @N GNENILCMKNN EN N GNENILCMKNN EN N GNENILCMKNN EN N GNENILCMKN$N EN N GNENILCMKE\NEjN E N E!N ENILCMKE\NEQN EN EN E NENE}NILCMK E\NN EN EN E NENE}NILCMK EuNN EN N E NICCC C!"ILCMK ErNERN EN E6N G#NE NILC$MK E\NN EN ESN E NILC%MK EgN{N EN E/N ENILCMKN_N EN E`N ENIC&C'C!"ILCMKN#N EgN WN G(NENILCMKNN E%N N G)NENILAC*C+CMKEiNN EN N ENILCMKNN E%N E*N G,N E NEN-ENIAAAAAAAAA" I LAAC.MKNN EN EaN ENILCMKrNN EN N G/NENILCMKrNN EN N G0NENILCMKuNN EN E]N G1NENILAAJ JILAAJ JILAAJJILAAJ J ILAAJ J ILAAJJ ILAAJ JILAAJ JILAAJJILAAJJILjpatcherwxwywhwwinsoutsjcommentxyhwSansSeriffontfsGridFlowcommentlayer@convolveblurs, sharpens, finds edges, emboss + moremethod init(op_para, op_fold,base)inlet 1 grid dim(rows2, columns2)outlet 0 grid dim(rows columns rest...)inlet 0 grid dim(rows, columns, rest...)forkbuttoncolorflashmessboxclearteapot.ppmfileppmopenappendstep 1@in@outherex11<-- splits the incoming grid into dim(rest...) parts, for each of those parts at (y,x), a rectangle of such parts, centered around (y,x), is combined with the convolution grid like a [@] of operation op_para. Then each such result is folded like [@ fold] of operation op_fold and specified base. The results are assembled into a grid that is sent to the outlet. Near the borders of the grid, coordinates wrap around. This means the whole grid has to be received before production of the next grid starts.<-- this is the convolution grid and it gets stotred in the object. Rows2 and columns2 must be odd numbers.+*Lucida Sansfst@redimhere * is the parallel operatorfold is indicated by +0 is its base