cleaner + perf
This commit is contained in:
parent
9b7fa748d8
commit
33b8a5a839
1 changed files with 16 additions and 24 deletions
|
@ -1430,6 +1430,18 @@ proc parseSomePath(
|
|||
elif type(path) is seq[seq[Vec2]]:
|
||||
path
|
||||
|
||||
proc transform(shapes: var seq[seq[Vec2]], transform: Vec2 | Mat3) =
|
||||
when type(transform) is Vec2:
|
||||
if transform != vec2(0, 0):
|
||||
for shape in shapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
segment += transform
|
||||
else:
|
||||
if transform != mat3():
|
||||
for shape in shapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
segment = transform * segment
|
||||
|
||||
proc fillPath*(
|
||||
image: Image,
|
||||
path: SomePath,
|
||||
|
@ -1454,12 +1466,7 @@ proc fillPath*(
|
|||
else:
|
||||
let pixelScale = 1.0
|
||||
var shapes = parseSomePath(path, pixelScale)
|
||||
for shape in shapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
when type(transform) is Vec2:
|
||||
segment += transform
|
||||
else:
|
||||
segment = transform * segment
|
||||
shapes.transform(transform)
|
||||
image.fillShapes(shapes, color, windingRule, blendMode)
|
||||
|
||||
proc fillPath*(
|
||||
|
@ -1482,12 +1489,7 @@ proc fillPath*(
|
|||
else:
|
||||
let pixelScale = 1.0
|
||||
var shapes = parseSomePath(path, pixelScale)
|
||||
for shape in shapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
when type(transform) is Vec2:
|
||||
segment += transform
|
||||
else:
|
||||
segment = transform * segment
|
||||
shapes.transform(transform)
|
||||
mask.fillShapes(shapes, windingRule)
|
||||
|
||||
proc fillPath*(
|
||||
|
@ -1571,12 +1573,7 @@ proc strokePath*(
|
|||
var strokeShapes = strokeShapes(
|
||||
parseSomePath(path, pixelScale), strokeWidth, lineCap, lineJoin
|
||||
)
|
||||
for shape in strokeShapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
when type(transform) is Vec2:
|
||||
segment += transform
|
||||
else:
|
||||
segment = transform * segment
|
||||
strokeShapes.transform(transform)
|
||||
image.fillShapes(strokeShapes, color, wrNonZero, blendMode)
|
||||
|
||||
proc strokePath*(
|
||||
|
@ -1608,12 +1605,7 @@ proc strokePath*(
|
|||
var strokeShapes = strokeShapes(
|
||||
parseSomePath(path, pixelScale), strokeWidth, lineCap, lineJoin
|
||||
)
|
||||
for shape in strokeShapes.mitems:
|
||||
for segment in shape.mitems:
|
||||
when type(transform) is Vec2:
|
||||
segment += transform
|
||||
else:
|
||||
segment = transform * segment
|
||||
strokeShapes.transform(transform)
|
||||
mask.fillShapes(strokeShapes, wrNonZero)
|
||||
|
||||
when defined(release):
|
||||
|
|
Loading…
Reference in a new issue