From f4c0619fa8f3ef515f810f26db4191f3fc20e555 Mon Sep 17 00:00:00 2001 From: treeform Date: Sat, 4 Dec 2021 17:39:00 -0800 Subject: [PATCH] Fixes after rebase. --- src/pixie/paths.nim | 72 ++++++++++++++++++++--------------------- tests/benchmark_svg.nim | 5 +-- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/src/pixie/paths.nim b/src/pixie/paths.nim index fe51b71..acca6bb 100644 --- a/src/pixie/paths.nim +++ b/src/pixie/paths.nim @@ -2264,49 +2264,49 @@ when defined(pixieSweeps): break inc i - i = 0 - while i < sweeps.len: - # TODO: Maybe finds all cuts first, add them to array, cut all lines at once. - var crossCuts: seq[float32] + # i = 0 + # while i < sweeps.len: + # # TODO: Maybe finds all cuts first, add them to array, cut all lines at once. + # var crossCuts: seq[float32] - # echo i, " cut?" + # # echo i, " cut?" - for aIndex in 0 ..< sweeps[i].len: - let a = sweeps[i][aIndex] - # echo i, ":", sweeps.len, ":", cutLines.len - let aSeg = segment(vec2(a.atx, cutLines[i]), vec2(a.tox, cutLines[i+1])) - for bIndex in aIndex + 1 ..< sweeps[i].len: - let b = sweeps[i][bIndex] - let bSeg = segment(vec2(b.atx, cutLines[i]), vec2(b.tox, cutLines[i+1])) - var at: Vec2 - if intersectsInner(aSeg, bSeg, at): - crossCuts.binaryInsert(at.y) + # for aIndex in 0 ..< sweeps[i].len: + # let a = sweeps[i][aIndex] + # # echo i, ":", sweeps.len, ":", cutLines.len + # let aSeg = segment(vec2(a.atx, cutLines[i]), vec2(a.tox, cutLines[i+1])) + # for bIndex in aIndex + 1 ..< sweeps[i].len: + # let b = sweeps[i][bIndex] + # let bSeg = segment(vec2(b.atx, cutLines[i]), vec2(b.tox, cutLines[i+1])) + # var at: Vec2 + # if intersectsInner(aSeg, bSeg, at): + # crossCuts.binaryInsert(at.y) - if crossCuts.len > 0: - var - thisSweep = sweeps[i] - yTop = cutLines[i] - yBottom = cutLines[i + 1] - sweeps[i].setLen(0) + # if crossCuts.len > 0: + # var + # thisSweep = sweeps[i] + # yTop = cutLines[i] + # yBottom = cutLines[i + 1] + # sweeps[i].setLen(0) - for k in crossCuts: - let prevLen = cutLines.len - cutLines.binaryInsert(k) - if prevLen != cutLines.len: - sweeps.insert(newSeq[SweepLine](), i + 1) + # for k in crossCuts: + # let prevLen = cutLines.len + # cutLines.binaryInsert(k) + # if prevLen != cutLines.len: + # sweeps.insert(newSeq[SweepLine](), i + 1) - for a in thisSweep: - var seg = segment(vec2(a.atx, yTop), vec2(a.tox, yBottom)) - var at: Vec2 - for j, cutterLine in crossCuts: - if intersects(line(vec2(0, cutterLine), vec2(1, cutterLine)), seg, at): - sweeps[i+j].add(toLine((segment(seg.at, at), a.winding))) - seg = segment(at, seg.to) - sweeps[i+crossCuts.len].add(toLine((seg, a.winding))) + # for a in thisSweep: + # var seg = segment(vec2(a.atx, yTop), vec2(a.tox, yBottom)) + # var at: Vec2 + # for j, cutterLine in crossCuts: + # if intersects(line(vec2(0, cutterLine), vec2(1, cutterLine)), seg, at): + # sweeps[i+j].add(toLine((segment(seg.at, at), a.winding))) + # seg = segment(at, seg.to) + # sweeps[i+crossCuts.len].add(toLine((seg, a.winding))) - i += crossCuts.len + # i += crossCuts.len - inc i + # inc i i = 0 while i < sweeps.len: diff --git a/tests/benchmark_svg.nim b/tests/benchmark_svg.nim index b44ffc3..c158d6d 100644 --- a/tests/benchmark_svg.nim +++ b/tests/benchmark_svg.nim @@ -1,9 +1,6 @@ -import benchy, pixie/fileformats/svg, pixie/fileformats/png +import benchy, pixie/fileformats/svg let data = readFile("tests/fileformats/svg/Ghostscript_Tiger.svg") -#let data = readFile("tests/fileformats/svg/rotatedRect.svg") - -writeFile("tiger.png", decodeSvg(data).encodePng()) timeIt "svg decode": discard decodeSvg(data)