Fixes after rebase.
This commit is contained in:
parent
5ec38c068d
commit
f4c0619fa8
2 changed files with 37 additions and 40 deletions
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue