1 | // -----------------------------------------------------------------------
|
---|
2 | // <copyright file="KinectWorker-1.8.0.js" company="Microsoft">
|
---|
3 | // Copyright (c) Microsoft Corporation. All rights reserved.
|
---|
4 | // </copyright>
|
---|
5 | // -----------------------------------------------------------------------
|
---|
6 |
|
---|
7 | "use strict";
|
---|
8 |
|
---|
9 | var imageDataMap = {};
|
---|
10 |
|
---|
11 | // Associate a specified ImageData (from a canvas object) with the specified image name
|
---|
12 | // .setImageData( imageName [, imageData] )
|
---|
13 | //
|
---|
14 | // imageName: Name used to refer to canvas ImageData object specified.
|
---|
15 | // imageData: Canvas ImageData to associate with image name. If null, any previously
|
---|
16 | // existing association is removed.
|
---|
17 | function setImageData(imageName, imageData) {
|
---|
18 | if ((imageData == null) && imageDataMap.hasOwnProperty(imageName)) {
|
---|
19 | delete imageDataMap[imageName];
|
---|
20 | } else {
|
---|
21 | imageDataMap[imageName] = imageData;
|
---|
22 | }
|
---|
23 | }
|
---|
24 |
|
---|
25 |
|
---|
26 | // Copy the information in the specified image ArrayBuffer to the ImageData associated
|
---|
27 | // with the specified name and post the ImageData back to UI thread.
|
---|
28 | // .processImageData( imageName, imageData )
|
---|
29 | //
|
---|
30 | // imageName: Name used to refer to canvas ImageData object to receive data from
|
---|
31 | // ArrayBuffer.
|
---|
32 | // imageBuffer: ArrayBuffer containing image data to copy to canvas ImageData structure.
|
---|
33 | function processImageData(imageName, imageBuffer) {
|
---|
34 | if (!imageDataMap.hasOwnProperty(imageName)) {
|
---|
35 | self.postMessage({ "message": "notProcessed", "imageName": imageName});
|
---|
36 | return;
|
---|
37 | }
|
---|
38 |
|
---|
39 | var imageData = imageDataMap[imageName];
|
---|
40 | var pixelArray = imageData.data;
|
---|
41 | var newPixelData = new Uint8Array(imageBuffer);
|
---|
42 |
|
---|
43 | for (var i = 0; i < pixelArray.length; ++i) {
|
---|
44 | pixelArray[i] = newPixelData[i];
|
---|
45 | }
|
---|
46 |
|
---|
47 | self.postMessage({ "message": "imageReady", "imageName": imageName, "imageData": imageData });
|
---|
48 | }
|
---|
49 |
|
---|
50 | // thread message handler
|
---|
51 | addEventListener('message', function (event) {
|
---|
52 | switch (event.data.message) {
|
---|
53 | case "setImageData":
|
---|
54 | setImageData(event.data.imageName, event.data.imageData);
|
---|
55 | break;
|
---|
56 |
|
---|
57 | case "processImageData":
|
---|
58 | processImageData(event.data.imageName, event.data.imageBuffer);
|
---|
59 | break;
|
---|
60 | }
|
---|
61 | }); |
---|