| 20058 | * [toxi 050728] |
| 20059 | */ |
| 20060 | function buildBlurKernel(r) { |
| 20061 | var radius = (r * 3.5)|0; |
| 20062 | radius = (radius < 1) ? 1 : ((radius < 248) ? radius : 248); |
| 20063 | |
| 20064 | if (blurRadius !== radius) { |
| 20065 | blurRadius = radius; |
| 20066 | blurKernelSize = 1 + blurRadius<<1; |
| 20067 | blurKernel = new Int32Array(blurKernelSize); |
| 20068 | blurMult = new Array(blurKernelSize); |
| 20069 | for(var l = 0; l < blurKernelSize; l++){ |
| 20070 | blurMult[l] = new Int32Array(256); |
| 20071 | } |
| 20072 | |
| 20073 | var bk,bki; |
| 20074 | var bm,bmi; |
| 20075 | |
| 20076 | for (var i = 1, radiusi = radius - 1; i < radius; i++) { |
| 20077 | blurKernel[radius+i] = blurKernel[radiusi] = bki = radiusi * radiusi; |
| 20078 | bm = blurMult[radius+i]; |
| 20079 | bmi = blurMult[radiusi--]; |
| 20080 | for (var j = 0; j < 256; j++){ |
| 20081 | bm[j] = bmi[j] = bki * j; |
| 20082 | } |
| 20083 | } |
| 20084 | bk = blurKernel[radius] = radius * radius; |
| 20085 | bm = blurMult[radius]; |
| 20086 | |
| 20087 | for (var k = 0; k < 256; k++){ |
| 20088 | bm[k] = bk * k; |
| 20089 | } |
| 20090 | } |
| 20091 | |
| 20092 | } |
| 20093 | |
| 20094 | // Port of https://github.com/processing/processing/blob/ |
| 20095 | // master/core/src/processing/core/PImage.java#L1433 |