2021-06-19 22:44:08 -04:00
|
|
|
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
|
let BASE = self.base,
|
|
|
|
|
KIRI = self.kiri,
|
|
|
|
|
UTIL = BASE.util,
|
|
|
|
|
POLY = BASE.polygons,
|
|
|
|
|
CODEC = KIRI.codec;
|
|
|
|
|
|
|
|
|
|
// catch clipper alerts and convert to console messages
|
|
|
|
|
self.alert = function(o) {
|
|
|
|
|
console.log(o);
|
|
|
|
|
};
|
|
|
|
|
|
2021-06-20 00:25:35 -04:00
|
|
|
function reply(msg) {
|
|
|
|
|
self.postMessage(msg);
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-19 22:44:08 -04:00
|
|
|
self.onmessage = function(msg) {
|
|
|
|
|
let data = msg.data;
|
|
|
|
|
switch (data.cmd) {
|
|
|
|
|
case "union":
|
|
|
|
|
if (!(data.polys && data.polys.length)) {
|
2021-06-20 00:25:35 -04:00
|
|
|
reply({union: CODEC.encode([])});
|
2021-06-19 22:44:08 -04:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
let polys = CODEC.decode(data.polys);
|
|
|
|
|
let union = POLY.union(polys, data.minarea || 0, true);
|
2021-06-20 00:25:35 -04:00
|
|
|
reply({union: CODEC.encode(union)});
|
|
|
|
|
break;
|
|
|
|
|
case "top.shells":
|
|
|
|
|
let top = CODEC.decode(data.top, {full: true});
|
|
|
|
|
let {z, count, offset1, offsetN, fillOffset, opt} = data;
|
|
|
|
|
KIRI.driver.FDM.share.doTopShells(z, top, count, offset1, offsetN, fillOffset, opt);
|
|
|
|
|
reply({top: CODEC.encode(top, {full: true})});
|
2021-06-19 22:44:08 -04:00
|
|
|
break;
|
|
|
|
|
default:
|
2021-06-20 00:25:35 -04:00
|
|
|
reply({error: "invalid command"});
|
2021-06-19 22:44:08 -04:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// console.log(`kiri | init mini | ${KIRI.version || "rogue"}`);
|