summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2023-03-31 17:10:40 +0200
committerGitHub <noreply@github.com>2023-03-31 17:10:40 +0200
commit06b6f976a9975c9860fcc0a29e6e9c3ea174ba9d (patch)
tree1a423bce337baa011b1412843307ebed88d303eb /lib
parent98f4bc43de2869b26a52dbfd02968dd69425d8b8 (diff)
Command options (#2160)
* letters to font: add visual command import option * add visual command option to stitch plan preview
Diffstat (limited to 'lib')
-rw-r--r--lib/extensions/letters_to_font.py6
-rw-r--r--lib/extensions/stitch_plan_preview.py3
-rw-r--r--lib/stitch_plan/generate_stitch_plan.py8
-rw-r--r--lib/svg/rendering.py13
4 files changed, 20 insertions, 10 deletions
diff --git a/lib/extensions/letters_to_font.py b/lib/extensions/letters_to_font.py
index 158d0d9f..56a33ad8 100644
--- a/lib/extensions/letters_to_font.py
+++ b/lib/extensions/letters_to_font.py
@@ -25,7 +25,7 @@ class LettersToFont(InkstitchExtension):
InkstitchExtension.__init__(self, *args, **kwargs)
self.arg_parser.add_argument("-d", "--font-dir", type=str, default="", dest="font_dir")
self.arg_parser.add_argument("-f", "--file-format", type=str, default="", dest="file_format")
- self.arg_parser.add_argument("-c", "--import-commands", type=inkex.Boolean, default=False, dest="import_commands")
+ self.arg_parser.add_argument("-c", "--import-commands", type=str, default="params", dest="import_commands")
def effect(self):
font_dir = self.options.font_dir
@@ -50,7 +50,7 @@ class LettersToFont(InkstitchExtension):
# remove color block groups if we import without commands
# there will only be one object per color block anyway
- if not self.options.import_commands:
+ if self.options.import_commands == "none":
for element in letter.iter(SVG_PATH_TAG):
group.insert(0, element)
else:
@@ -78,4 +78,4 @@ class LettersToFont(InkstitchExtension):
return stitch_plan
def insert_baseline(self, document):
- document.namedview.new_guide(position=0.0, name="baseline")
+ document.namedview.add_guide(position=0.0, name="baseline")
diff --git a/lib/extensions/stitch_plan_preview.py b/lib/extensions/stitch_plan_preview.py
index e5d22fa7..fbfe3628 100644
--- a/lib/extensions/stitch_plan_preview.py
+++ b/lib/extensions/stitch_plan_preview.py
@@ -22,6 +22,7 @@ class StitchPlanPreview(InkstitchExtension):
self.arg_parser.add_argument("-v", "--layer-visibility", type=int, default=0, dest="layer_visibility")
self.arg_parser.add_argument("-n", "--needle-points", type=Boolean, default=False, dest="needle_points")
self.arg_parser.add_argument("-i", "--insensitive", type=Boolean, default=False, dest="insensitive")
+ self.arg_parser.add_argument("-c", "--visual-commands", type=Boolean, default="symbols", dest="visual_commands")
def effect(self):
# delete old stitch plan
@@ -33,7 +34,7 @@ class StitchPlanPreview(InkstitchExtension):
return
realistic = False
- visual_commands = True
+ visual_commands = self.options.visual_commands
self.metadata = self.get_inkstitch_metadata()
collapse_len = self.metadata['collapse_len_mm']
min_stitch_len = self.metadata['min_stitch_len_mm']
diff --git a/lib/stitch_plan/generate_stitch_plan.py b/lib/stitch_plan/generate_stitch_plan.py
index 2d8ceeff..53458815 100644
--- a/lib/stitch_plan/generate_stitch_plan.py
+++ b/lib/stitch_plan/generate_stitch_plan.py
@@ -17,7 +17,7 @@ from .stitch import Stitch
from .stitch_plan import StitchPlan
-def generate_stitch_plan(embroidery_file, import_commands=True): # noqa: C901
+def generate_stitch_plan(embroidery_file, import_commands="symbols"): # noqa: C901
validate_file_path(embroidery_file)
pattern = pyembroidery.read(embroidery_file)
stitch_plan = StitchPlan()
@@ -29,7 +29,7 @@ def generate_stitch_plan(embroidery_file, import_commands=True): # noqa: C901
if command == pyembroidery.STITCH:
color_block.add_stitch(Stitch(x * PIXELS_PER_MM / 10.0, y * PIXELS_PER_MM / 10.0))
if len(color_block) > 0:
- if not import_commands and command in [pyembroidery.TRIM, pyembroidery.STOP]:
+ if import_commands == "none" and command in [pyembroidery.TRIM, pyembroidery.STOP]:
# Importing commands is not wanted:
# start a new color block without inserting the command
color_block = stitch_plan.new_color_block(thread)
@@ -53,7 +53,9 @@ def generate_stitch_plan(embroidery_file, import_commands=True): # noqa: C901
"height": str(extents[1] * 2),
"viewBox": "0 0 %s %s" % (extents[0] * 2, extents[1] * 2),
})
- render_stitch_plan(svg, stitch_plan)
+
+ visual_commands = True if import_commands == "symbols" else False
+ render_stitch_plan(svg, stitch_plan, visual_commands=visual_commands)
# rename the Stitch Plan layer so that it doesn't get overwritten by Embroider
layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']")
diff --git a/lib/svg/rendering.py b/lib/svg/rendering.py
index 5ee6d328..1f74e2df 100644
--- a/lib/svg/rendering.py
+++ b/lib/svg/rendering.py
@@ -195,6 +195,8 @@ def color_block_to_paths(color_block, svg, destination, visual_commands):
first = False
elif visual_commands:
add_commands(Stroke(destination[-1]), ["trim"])
+ else:
+ path.set(INKSTITCH_ATTRIBS['trim_after'], 'true')
color = color_block.color.visible_on_white.to_hex_str()
path = inkex.PathElement(attrib={
@@ -206,12 +208,17 @@ def color_block_to_paths(color_block, svg, destination, visual_commands):
})
destination.append(path)
- if path is not None and visual_commands:
- if color_block.trim_after:
+ if path is not None and color_block.trim_after:
+ if visual_commands:
add_commands(Stroke(path), ["trim"])
+ else:
+ path.set(INKSTITCH_ATTRIBS['trim_after'], 'true')
- if color_block.stop_after:
+ if path is not None and color_block.stop_after:
+ if visual_commands:
add_commands(Stroke(path), ["stop"])
+ else:
+ path.set(INKSTITCH_ATTRIBS['stop_after'], 'true')
def render_stitch_plan(svg, stitch_plan, realistic=False, visual_commands=True):