here it is ... the upload-api, script-server, js2 (javascript phase2) branch merge...
[lhc/web/wiklou.git] / js2 / mwEmbed / libClipEdit / pixastic-lib / actions / invert.js
1 /*
2 * Pixastic Lib - Invert 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 */
6
7 Pixastic.Actions.invert = {
8 process : function(params) {
9 if (Pixastic.Client.hasCanvasImageData()) {
10 var data = Pixastic.prepareData(params);
11
12 var invertAlpha = !!params.options.invertAlpha;
13 var rect = params.options.rect;
14 var w = rect.width;
15 var h = rect.height;
16
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 data[offset] = 255 - data[offset];
25 data[offset+1] = 255 - data[offset+1];
26 data[offset+2] = 255 - data[offset+2];
27 if (invertAlpha) data[offset+3] = 255 - data[offset+3];
28 } while (--x);
29 } while (--y);
30 return true;
31 } else if (Pixastic.Client.isIE()) {
32 params.image.style.filter += " invert";
33 return true;
34 }
35 },
36 checkSupport : function() {
37 return (Pixastic.Client.hasCanvasImageData() || Pixastic.Client.isIE());
38 }
39 }