grid-apps-cmms/src/kiri-mode/sla/driver.js

49 lines
1.6 KiB
JavaScript
Raw Normal View History

2020-06-03 22:39:30 -04:00
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
2020-04-13 17:42:40 -04:00
"use strict";
(function() {
if (!self.kiri.driver) self.kiri.driver = { };
if (self.kiri.driver.SLA) return;
2020-06-03 22:39:30 -04:00
const KIRI = self.kiri,
2020-04-13 17:42:40 -04:00
SLA = KIRI.driver.SLA = {
2020-11-05 18:29:04 -05:00
// init, // src/mode/sla/client.js
// slice, // src/mode/sla/slice.js
2020-11-08 19:38:02 -05:00
prepare,
2020-11-08 18:39:21 -05:00
// export, // src/mode/sla/export.js
2020-11-05 18:29:04 -05:00
// printDownload, // src/mode/sla/client.js
legacy: false
};
2020-06-03 22:39:30 -04:00
2020-11-05 18:29:04 -05:00
if (SLA.legacy) console.log("SLA Driver in Legacy Mode");
2020-04-17 14:20:49 -04:00
2020-11-08 19:38:02 -05:00
// runs in worker. would usually be in src/mode/sla/prepare.js
function prepare(widgets, settings, update) {
self.worker.print = KIRI.newPrint(settings, widgets);
if (!SLA.wasm) {
fetch('/wasm/kiri-sla.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.instantiate(bytes, {
env: {
reportf: (a,b) => { console.log('[f]',a,b) },
reporti: (a,b) => { console.log('[i]',a,b) }
}
}))
.then(results => {
let {module, instance} = results;
let {exports} = instance;
let heap = new Uint8Array(exports.memory.buffer);
SLA.wasm = {
heap,
memory: exports.memory,
render: exports.render,
rle_encode: exports.rle_encode
};
});
}
update(1);
2020-11-08 19:38:02 -05:00
}
})();