1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| //function sendStatus(statusText) {
|
| // postMessage({"type": "status","statusText": statusText});
|
| //}
|
| self.addEventListener('message', function (e) {
| var data = e.data;
| // Data
| //---------
| // nullValue
| //nullTolerance
| // canvasData
| // width
| // height
| // startX
|
| //sendStatus("Worker started blur on data in range: " +
| //data.startX + "-" + (data.startX + data.width));
| //
|
| var pix = data.canvasData;
|
| var nullColor = data.nullValue;
| var tolerance = (data.nullTolerance != undefined) ? data.nullTolerance : 0;
| var r, g, b, i;
| var nr = nullColor.r,
| ng = nullColor.g,
| nb = nullColor.b,
| length = pix.length;
|
| for (i = 0; i < length; i += 4) {
| r = pix[i],
| g = pix[i + 1],
| b = pix[i + 2];
|
| if (!tolerance) {
| if (r == nr && g == ng && b == nb) {
|
| //pix[i] = r;
| //pix[i + 1] = g;
| //pix[i + 2] = b;
| pix[i + 3] = 0;
| }
| } else if (pix[i+3] != 0 ) {
| if (Math.abs(r - nr) <= tolerance && Math.abs(g - ng) <= tolerance && Math.abs(b - nb) <= tolerance)
| {
| pix[i + 3] = 0;
| }
| }
| }
| data.canvasData = pix;
|
| postMessage(data);
|
| //sendStatus("Finished blur on data in range: " +
| // data.startX + "-" + (data.width + data.startX));
|
| });
|
|