summaryrefslogtreecommitdiff
path: root/lib/stitches
diff options
context:
space:
mode:
Diffstat (limited to 'lib/stitches')
-rw-r--r--lib/stitches/auto_fill.py8
-rw-r--r--lib/stitches/fill.py12
2 files changed, 11 insertions, 9 deletions
diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py
index 07361f13..160d927e 100644
--- a/lib/stitches/auto_fill.py
+++ b/lib/stitches/auto_fill.py
@@ -14,6 +14,7 @@ from shapely.ops import snap
from shapely.strtree import STRtree
from ..debug import debug
+from ..stitch_plan import Stitch
from ..svg import PIXELS_PER_MM
from ..utils.geometry import Point as InkstitchPoint
from ..utils.geometry import line_string_to_point_list
@@ -592,9 +593,12 @@ def travel(travel_graph, start, end, running_stitch_length, skip_last):
"""Create stitches to get from one point on an outline of the shape to another."""
path = networkx.shortest_path(travel_graph, start, end, weight='weight')
- path = [InkstitchPoint(*p) for p in path]
+ path = [Stitch(*p) for p in path]
stitches = running_stitch(path, running_stitch_length)
+ for stitch in stitches:
+ stitch.add_tag('auto_fill_travel')
+
# The path's first stitch will start at the end of a row of stitches. We
# don't want to double that last stitch, so we'd like to skip it.
if skip_last and len(path) > 2:
@@ -619,7 +623,7 @@ def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing,
# If the very first stitch is travel, we'll omit it in travel(), so add it here.
if not path[0].is_segment():
- stitches.append(InkstitchPoint(*path[0].nodes[0]))
+ stitches.append(Stitch(*path[0].nodes[0]))
for edge in path:
if edge.is_segment():
diff --git a/lib/stitches/fill.py b/lib/stitches/fill.py
index 5aead9c7..d134be32 100644
--- a/lib/stitches/fill.py
+++ b/lib/stitches/fill.py
@@ -7,6 +7,7 @@ import math
import shapely
+from ..stitch_plan import Stitch
from ..svg import PIXELS_PER_MM
from ..utils import Point as InkstitchPoint
from ..utils import cache
@@ -65,16 +66,13 @@ def stitch_row(stitches, beg, end, angle, row_spacing, max_stitch_length, stagge
# tile with each other. That's important because we often get
# abutting fill regions from pull_runs().
- beg = InkstitchPoint(*beg)
- end = InkstitchPoint(*end)
+ beg = Stitch(*beg, tags=('fill_row_start',))
+ end = Stitch(*end, tags=('fill_row_end',))
row_direction = (end - beg).unit()
segment_length = (end - beg).length()
- # only stitch the first point if it's a reasonable distance away from the
- # last stitch
- if not stitches or (beg - stitches[-1]).length() > 0.5 * PIXELS_PER_MM:
- stitches.append(beg)
+ stitches.append(beg)
first_stitch = adjust_stagger(beg, angle, row_spacing, max_stitch_length, staggers)
@@ -85,7 +83,7 @@ def stitch_row(stitches, beg, end, angle, row_spacing, max_stitch_length, stagge
offset = (first_stitch - beg).length()
while offset < segment_length:
- stitches.append(beg + offset * row_direction)
+ stitches.append(Stitch(beg + offset * row_direction, tags=('fill_row')))
offset += max_stitch_length
if (end - stitches[-1]).length() > 0.1 * PIXELS_PER_MM and not skip_last: