Bug 20489 Configure illegal file characters https://bugzilla.wikimedia.org/show_bug...
[mediawiki.git] / js2 / mwEmbed / libClipEdit / pixastic-lib / actions / desaturate.js
blob9466f562e73b1f2b3b9c4b1f6486a1bdbc510962
1 /*
2  * Pixastic Lib - Desaturation 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]
5  */
7 Pixastic.Actions.desaturate = {
9         process : function(params) {
10                 var useAverage = !!params.options.average;
12                 if (Pixastic.Client.hasCanvasImageData()) {
13                         var data = Pixastic.prepareData(params);
14                         var rect = params.options.rect;
15                         var w = rect.width;
16                         var h = rect.height;
17                         var w4 = w*4;
18                         var y = h;
19                         do {
20                                 var offsetY = (y-1)*w4;
21                                 var x = w;
22                                 do {
23                                         var offset = offsetY + (x-1)*4;
24                                         var brightness = useAverage ?
25                                                 (data[offset]+data[offset+1]+data[offset+2])/3
26                                                 : (data[offset]*0.3 + data[offset+1]*0.59 + data[offset+2]*0.11);
27                                         data[offset] = data[offset+1] = data[offset+2] = brightness;
28                                 } while (--x);
29                         } while (--y);
30                         return true;
31                 } else if (Pixastic.Client.isIE()) {
32                         params.image.style.filter += " gray";
33                         return true;
34                 }
35         },
36         checkSupport : function() {
37                 return (Pixastic.Client.hasCanvasImageData() || Pixastic.Client.isIE());
38         }