Fixes after rebase.

This commit is contained in:
treeform 2021-12-04 17:39:00 -08:00
parent 5ec38c068d
commit f4c0619fa8
2 changed files with 37 additions and 40 deletions

View file

@ -2264,49 +2264,49 @@ when defined(pixieSweeps):
break break
inc i inc i
i = 0 # i = 0
while i < sweeps.len: # while i < sweeps.len:
# TODO: Maybe finds all cuts first, add them to array, cut all lines at once. # # TODO: Maybe finds all cuts first, add them to array, cut all lines at once.
var crossCuts: seq[float32] # var crossCuts: seq[float32]
# echo i, " cut?" # # echo i, " cut?"
for aIndex in 0 ..< sweeps[i].len: # for aIndex in 0 ..< sweeps[i].len:
let a = sweeps[i][aIndex] # let a = sweeps[i][aIndex]
# echo i, ":", sweeps.len, ":", cutLines.len # # echo i, ":", sweeps.len, ":", cutLines.len
let aSeg = segment(vec2(a.atx, cutLines[i]), vec2(a.tox, cutLines[i+1])) # let aSeg = segment(vec2(a.atx, cutLines[i]), vec2(a.tox, cutLines[i+1]))
for bIndex in aIndex + 1 ..< sweeps[i].len: # for bIndex in aIndex + 1 ..< sweeps[i].len:
let b = sweeps[i][bIndex] # let b = sweeps[i][bIndex]
let bSeg = segment(vec2(b.atx, cutLines[i]), vec2(b.tox, cutLines[i+1])) # let bSeg = segment(vec2(b.atx, cutLines[i]), vec2(b.tox, cutLines[i+1]))
var at: Vec2 # var at: Vec2
if intersectsInner(aSeg, bSeg, at): # if intersectsInner(aSeg, bSeg, at):
crossCuts.binaryInsert(at.y) # crossCuts.binaryInsert(at.y)
if crossCuts.len > 0: # if crossCuts.len > 0:
var # var
thisSweep = sweeps[i] # thisSweep = sweeps[i]
yTop = cutLines[i] # yTop = cutLines[i]
yBottom = cutLines[i + 1] # yBottom = cutLines[i + 1]
sweeps[i].setLen(0) # sweeps[i].setLen(0)
for k in crossCuts: # for k in crossCuts:
let prevLen = cutLines.len # let prevLen = cutLines.len
cutLines.binaryInsert(k) # cutLines.binaryInsert(k)
if prevLen != cutLines.len: # if prevLen != cutLines.len:
sweeps.insert(newSeq[SweepLine](), i + 1) # sweeps.insert(newSeq[SweepLine](), i + 1)
for a in thisSweep: # for a in thisSweep:
var seg = segment(vec2(a.atx, yTop), vec2(a.tox, yBottom)) # var seg = segment(vec2(a.atx, yTop), vec2(a.tox, yBottom))
var at: Vec2 # var at: Vec2
for j, cutterLine in crossCuts: # for j, cutterLine in crossCuts:
if intersects(line(vec2(0, cutterLine), vec2(1, cutterLine)), seg, at): # if intersects(line(vec2(0, cutterLine), vec2(1, cutterLine)), seg, at):
sweeps[i+j].add(toLine((segment(seg.at, at), a.winding))) # sweeps[i+j].add(toLine((segment(seg.at, at), a.winding)))
seg = segment(at, seg.to) # seg = segment(at, seg.to)
sweeps[i+crossCuts.len].add(toLine((seg, a.winding))) # sweeps[i+crossCuts.len].add(toLine((seg, a.winding)))
i += crossCuts.len # i += crossCuts.len
inc i # inc i
i = 0 i = 0
while i < sweeps.len: while i < sweeps.len:

View file

@ -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/Ghostscript_Tiger.svg")
#let data = readFile("tests/fileformats/svg/rotatedRect.svg")
writeFile("tiger.png", decodeSvg(data).encodePng())
timeIt "svg decode": timeIt "svg decode":
discard decodeSvg(data) discard decodeSvg(data)