add clean and simplify to wasm offset

This commit is contained in:
Stewart Allen 2021-07-10 22:20:07 -04:00
commit 2f2cfbc165
4 changed files with 15 additions and 9 deletions

View file

@ -526,7 +526,7 @@
zed = opts.z || 0;
if (opts.wasm && geo.wasm) {
polys = geo.wasm.js.offset(polys, offs, zed);
polys = geo.wasm.js.offset(polys, offs, zed, clean ? CONF.clipperClean : 0, simple ? 1 : 0);
} else {
let coff = new ClipperLib.ClipperOffset(opts.miter, opts.arc),
ctre = new ClipperLib.PolyTree();

View file

@ -76,12 +76,12 @@ if (!self.window) (function() {
return out;
}
function polyOffset(polys, offset, z) {
function polyOffset(polys, offset, z, clean, simple) {
geo.count.offset++;
let wasm = geo.wasm,
buffer = geo.wasm.shared,
pcount = writePolys(new DataWriter(wasm.heap, buffer), polys),
resat = wasm.fn.offset(buffer, pcount, offset * factor),
resat = wasm.fn.offset(buffer, pcount, offset * factor, clean, simple),
out = readPolys(new DataReader(wasm.heap, resat), z);
return polyNest(out);
}

View file

@ -85,7 +85,7 @@ Uint32 writePolys(Paths &outs, Uint32 pos) {
}
__attribute__ ((export_name("poly_offset")))
Uint32 poly_offset(Uint32 memat, Uint32 polys, float offset) {
Uint32 poly_offset(Uint32 memat, Uint32 polys, float offset, float clean, Uint8 simple) {
Paths ins(polys);
Paths outs;
@ -94,11 +94,17 @@ Uint32 poly_offset(Uint32 memat, Uint32 polys, float offset) {
pos = readPolys(ins, pos, polys);
// clean and simplify polygons
// Paths cleans, simples;
// CleanPolygons(ins, cleans, 250);
// SimplifyPolygons(cleans, simples, pftNonZero);
// ins = simples;
if (clean > 0) {
Paths cleans;
CleanPolygons(ins, cleans, clean);
ins = cleans;
}
if (simple > 0) {
Paths simples;
SimplifyPolygons(ins, simples);
ins = simples;
}
ClipperOffset co;
co.AddPaths(ins, jtMiter, etClosedPolygon);

Binary file not shown.