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());