arc quirk fixed, perf improved
This commit is contained in:
parent
42f98d8a1c
commit
1ca7d752f9
1 changed files with 4 additions and 6 deletions
|
@ -1020,8 +1020,7 @@ proc requiresAntiAliasing(segments: seq[(Segment, int16)]): bool =
|
||||||
template hasFractional(v: float32): bool =
|
template hasFractional(v: float32): bool =
|
||||||
v - trunc(v) != 0
|
v - trunc(v) != 0
|
||||||
|
|
||||||
for i in 0 ..< segments.len: # For gc:arc
|
for i, (segment, _) in segments:
|
||||||
let segment = segments[i][0]
|
|
||||||
if segment.at.x != segment.to.x or
|
if segment.at.x != segment.to.x or
|
||||||
segment.at.x.hasFractional() or # at.x and to.x are the same
|
segment.at.x.hasFractional() or # at.x and to.x are the same
|
||||||
segment.at.y.hasFractional() or
|
segment.at.y.hasFractional() or
|
||||||
|
@ -1042,8 +1041,7 @@ proc computeBounds(segments: seq[(Segment, int16)]): Rect =
|
||||||
xMax = float32.low
|
xMax = float32.low
|
||||||
yMin = float32.high
|
yMin = float32.high
|
||||||
yMax = float32.low
|
yMax = float32.low
|
||||||
for i in 0 ..< segments.len: # For gc:arc
|
for i, (segment, _) in segments:
|
||||||
let segment = segments[i][0]
|
|
||||||
xMin = min(xMin, min(segment.at.x, segment.to.x))
|
xMin = min(xMin, min(segment.at.x, segment.to.x))
|
||||||
xMax = max(xMax, max(segment.at.x, segment.to.x))
|
xMax = max(xMax, max(segment.at.x, segment.to.x))
|
||||||
yMin = min(yMin, segment.at.y)
|
yMin = min(yMin, segment.at.y)
|
||||||
|
@ -1154,7 +1152,7 @@ iterator walk(
|
||||||
var
|
var
|
||||||
prevAt: float32
|
prevAt: float32
|
||||||
count: int32
|
count: int32
|
||||||
for i in 0 ..< numHits: # For gc:arc
|
for i in 0 ..< numHits:
|
||||||
let (at, winding) = hits[i]
|
let (at, winding) = hits[i]
|
||||||
if windingRule == wrNonZero and
|
if windingRule == wrNonZero and
|
||||||
(count != 0) == (count + winding != 0) and
|
(count != 0) == (count + winding != 0) and
|
||||||
|
@ -1202,7 +1200,7 @@ proc computeCoverages(
|
||||||
scanline.a.y = yLine
|
scanline.a.y = yLine
|
||||||
scanline.b.y = yLine
|
scanline.b.y = yLine
|
||||||
numHits = 0
|
numHits = 0
|
||||||
for i in 0 ..< partitioning.partitions[partitionIndex].len: # For gc:arc
|
for i in 0 ..< partitioning.partitions[partitionIndex].len: # Perf
|
||||||
let
|
let
|
||||||
segment = partitioning.partitions[partitionIndex][i][0]
|
segment = partitioning.partitions[partitionIndex][i][0]
|
||||||
winding = partitioning.partitions[partitionIndex][i][1]
|
winding = partitioning.partitions[partitionIndex][i][1]
|
||||||
|
|
Loading…
Reference in a new issue