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
|
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:
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue