2 * Pixastic Lib - Blur filter - v0.1.0
3 * Copyright (c) 2008 Jacob Seidelin, jseidelin@nihilogic.dk, http://blog.nihilogic.dk/
4 * MIT License [http://www.opensource.org/licenses/mit-license.php]
7 Pixastic.Actions.blur = {
8 process : function(params) {
10 if (typeof params.options.fixMargin == "undefined")
11 params.options.fixMargin = true;
13 if (Pixastic.Client.hasCanvasImageData()) {
14 var data = Pixastic.prepareData(params);
15 var dataCopy = Pixastic.prepareData(params, true)
32 for (var i=0;i<3;i++) {
33 for (var j=0;j<3;j++) {
34 weight += kernel[i][j];
38 weight = 1 / (weight*2);
40 var rect = params.options.rect;
47 var offsetY = (y-1)*w4;
49 var prevY = (y == 1) ? 0 : y-2;
50 var nextY = (y == h) ? y - 1 : y;
52 var offsetYPrev = prevY*w*4;
53 var offsetYNext = nextY*w*4;
57 var offset = offsetY + (x*4-4);
59 var offsetPrev = offsetYPrev + ((x == 1) ? 0 : x-2) * 4;
60 var offsetNext = offsetYNext + ((x == w) ? x-1 : x) * 4;
64 dataCopy[offsetPrev - 4]
65 + dataCopy[offsetPrev+4]
66 + dataCopy[offsetNext - 4]
67 + dataCopy[offsetNext+4]
73 + dataCopy[offsetNext]) * 2
74 + dataCopy[offset] * 4
79 dataCopy[offsetPrev - 3]
80 + dataCopy[offsetPrev+5]
81 + dataCopy[offsetNext - 3]
82 + dataCopy[offsetNext+5]
85 (dataCopy[offsetPrev+1]
88 + dataCopy[offsetNext+1]) * 2
89 + dataCopy[offset+1] * 4
94 dataCopy[offsetPrev - 2]
95 + dataCopy[offsetPrev+6]
96 + dataCopy[offsetNext - 2]
97 + dataCopy[offsetNext+6]
100 (dataCopy[offsetPrev+2]
103 + dataCopy[offsetNext+2]) * 2
104 + dataCopy[offset+2] * 4
112 } else if (Pixastic.Client.isIE()) {
113 params.image.style.filter += " progid:DXImageTransform.Microsoft.Blur(pixelradius=1.5)";
115 if (params.options.fixMargin) {
116 params.image.style.marginLeft = (parseInt(params.image.style.marginLeft,10)||0) - 2 + "px";
117 params.image.style.marginTop = (parseInt(params.image.style.marginTop,10)||0) - 2 + "px";
123 checkSupport : function() {
124 return (Pixastic.Client.hasCanvasImageData() || Pixastic.Client.isIE());