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
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:

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/rotatedRect.svg")
writeFile("tiger.png", decodeSvg(data).encodePng())
timeIt "svg decode":
discard decodeSvg(data)