@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
49 lines (37 loc) • 1.29 kB
JavaScript
import { OnDemandWorkerManager } from "../../../../../core/process/worker/OnDemandWorkerManager.js";
import WorkerBuilder from "../../../../../core/process/worker/WorkerBuilder.js";
import { PNG_HEADER_BYTES } from "../png/PNG_HEADER_BYTES.js";
import { Codec } from "./Codec.js";
export class ThreadedImageDecoder extends Codec {
/**
*
* @param {string} [worker_path]
*/
constructor({
worker_path = 'bundle-worker-image-decoder.js'
}={}) {
super();
const workerBuilder = new WorkerBuilder();
workerBuilder.importScript(worker_path);
workerBuilder.addMethod('decode', function (data, type) {
return Lib.decode(data, type);
});
/**
*
* @type {OnDemandWorkerManager}
*/
this.worker = new OnDemandWorkerManager(workerBuilder.build());
this.worker.setTimeout(1200);
}
async test(data) {
for (let i = 0; i < PNG_HEADER_BYTES.length; i++) {
if (data[i] !== PNG_HEADER_BYTES[i]) {
return false;
}
}
return true;
}
decode(data) {
return this.worker.request('decode', [data.buffer]);
}
}