Bug 20489 Configure illegal file characters https://bugzilla.wikimedia.org/show_bug...
[mediawiki.git] / js2 / mwEmbed / libClipEdit / pixastic-lib / actions / brightness.js
blob7efc3b86e62e76eb78587557b23fc78a12a22b17
1 /*
2  * Pixastic Lib - Brightness/Contrast 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.brightness = {
9         process : function(params) {
11                 var brightness = parseInt(params.options.brightness,10) || 0;
12                 var contrast = parseFloat(params.options.contrast)||0;
13                 var legacy = !!(params.options.legacy);
15                 if (legacy) {
16                         brightness = Math.min(150,Math.max(-150,brightness));
17                 } else {
18                         var brightMul = 1 + Math.min(150,Math.max(-150,brightness)) / 150;
19                 }
20                 contrast = Math.max(0,contrast+1);
22                 if (Pixastic.Client.hasCanvasImageData()) {
23                         var data = Pixastic.prepareData(params);
24                         var rect = params.options.rect;
25                         var w = rect.width;
26                         var h = rect.height;
27                         var w4 = w*4;
28                         var y = h;
29                         do {
30                                 var offsetY = (y-1)*w4;
31                                 var x = w;
32                                 do {
33                                         var offset = offsetY + (x-1)*4;
35                                         if (legacy) {
36                                                 var r = data[offset] + brightness;
37                                                 var g = data[offset+1] + brightness;
38                                                 var b = data[offset+2] + brightness;
39                                         } else {
40                                                 var r = data[offset] * brightMul;
41                                                 var g = data[offset+1] * brightMul;
42                                                 var b = data[offset+2] * brightMul;
43                                         }
45                                         if (contrast != 1) {
46                                                 r = (r - 128) * contrast + 128;
47                                                 g = (g - 128) * contrast + 128;
48                                                 b = (b - 128) * contrast + 128;
49                                         }
51                                         if (r < 0 ) r = 0;
52                                         if (g < 0 ) g = 0;
53                                         if (b < 0 ) b = 0;
54                                         if (r > 255 ) r = 255;
55                                         if (g > 255 ) g = 255;
56                                         if (b > 255 ) b = 255;
58                                         data[offset] = r;
59                                         data[offset+1] = g;
60                                         data[offset+2] = b;
62                                 } while (--x);
63                         } while (--y);
64                         return true;
65                 }
66         },
67         checkSupport : function() {
68                 return Pixastic.Client.hasCanvasImageData();
69         }