summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2023-12-28 06:53:05 +0100
committerGitHub <noreply@github.com>2023-12-28 06:53:05 +0100
commitc0bcdb6e25ff99bf21efcaaa479c7f15f834acd5 (patch)
tree97525b6a70b2c5b8720971df814bb43a55fc62ed
parentfcb1f4a12293bdff62e2525d992885ba48e6655c (diff)
add display stacking order extension (#2656)
-rw-r--r--lib/extensions/__init__.py2
-rw-r--r--lib/extensions/display_stacking_order.py60
-rw-r--r--templates/density_map.xml2
-rw-r--r--templates/display_stacking_order.xml18
-rw-r--r--templates/embroider.xml2
-rw-r--r--templates/print.xml2
-rw-r--r--templates/simulator.xml2
-rw-r--r--templates/stitch_plan_preview.xml2
-rw-r--r--templates/stitch_plan_preview_undo.xml2
9 files changed, 86 insertions, 6 deletions
diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py
index 1b923a44..3012ca5a 100644
--- a/lib/extensions/__init__.py
+++ b/lib/extensions/__init__.py
@@ -16,6 +16,7 @@ from .convert_to_stroke import ConvertToStroke
from .cut_satin import CutSatin
from .cutwork_segmentation import CutworkSegmentation
from .density_map import DensityMap
+from .display_stacking_order import DisplayStackingOrder
from .duplicate_params import DuplicateParams
from .element_info import ElementInfo
from .fill_to_stroke import FillToStroke
@@ -71,6 +72,7 @@ __all__ = extensions = [ApplyThreadlist,
CutSatin,
CutworkSegmentation,
DensityMap,
+ DisplayStackingOrder,
DuplicateParams,
ElementInfo,
FillToStroke,
diff --git a/lib/extensions/display_stacking_order.py b/lib/extensions/display_stacking_order.py
new file mode 100644
index 00000000..4056081d
--- /dev/null
+++ b/lib/extensions/display_stacking_order.py
@@ -0,0 +1,60 @@
+# Authors: see git history
+#
+# Copyright (c) 2022 Authors
+# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
+
+import inkex
+
+from ..i18n import _
+from ..svg.tags import INKSCAPE_GROUPMODE, INKSCAPE_LABEL
+from .base import InkstitchExtension
+
+
+class DisplayStackingOrder(InkstitchExtension):
+ def __init__(self, *args, **kwargs):
+ InkstitchExtension.__init__(self, *args, **kwargs)
+ self.arg_parser.add_argument("-s", "--font_size", type=int, default=4, dest="font_size")
+
+ def effect(self):
+ layer = self.create_layer()
+
+ nodes = self.get_nodes()
+ for i, node in enumerate(nodes):
+ if node.style['fill'] != 'none':
+ position = node.bounding_box(node.composed_transform()).minimum
+ self.insert_stacking_num(layer, i + 1, position)
+ else:
+ path = node.get_path().transform(node.composed_transform())
+ position = next(path.end_points)
+ self.insert_stacking_num(layer, i + 1, position)
+
+ # remove layer if empty
+ if len(layer) == 0:
+ self.svg.remove(layer)
+
+ def insert_stacking_num(self, layer, num, position):
+ text = inkex.TextElement(attrib={
+ 'x': str(position[0]),
+ 'y': str(position[1])
+ })
+ text.style = inkex.Style(f"text-anchor: middle;text-align: center;dominant-baseline: middle;font-size: { self.options.font_size }")
+ tspan = inkex.Tspan()
+ tspan.text = str(num)
+ text.add(tspan)
+ layer.add(text)
+
+ def create_layer(self):
+ layer = self.svg.find(".//*[@id='__inkstitch_stacking_order__']")
+
+ # Remove the existing layer
+ if layer is not None:
+ layer.getparent().remove(layer)
+
+ layer = inkex.Group(attrib={
+ 'id': '__inkstitch_stacking_order__',
+ INKSCAPE_LABEL: _('Stacking Order'),
+ INKSCAPE_GROUPMODE: 'layer',
+ })
+ self.svg.append(layer)
+
+ return layer
diff --git a/templates/density_map.xml b/templates/density_map.xml
index d1034fde..fdc6b2d1 100644
--- a/templates/density_map.xml
+++ b/templates/density_map.xml
@@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>
diff --git a/templates/display_stacking_order.xml b/templates/display_stacking_order.xml
new file mode 100644
index 00000000..c0793e60
--- /dev/null
+++ b/templates/display_stacking_order.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension translationdomain="inkstitch" xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <name>Display stacking order</name>
+ <id>org.inkstitch.display_stacking_order</id>
+ <param name="extension" type="string" gui-hidden="true">display_stacking_order</param>
+ <effect>
+ <object-type>all</object-type>
+ <effects-menu>
+ <submenu name="Ink/Stitch" translatable="no">
+ <submenu name="Visualize and Export" />
+ </submenu>
+ </effects-menu>
+ </effect>
+ <param name="font_size" type="int" min="0" max="100" gui-text="Font size">4</param>
+ <script>
+ {{ command_tag | safe }}
+ </script>
+</inkscape-extension>
diff --git a/templates/embroider.xml b/templates/embroider.xml
index a9442cf0..4dcead18 100644
--- a/templates/embroider.xml
+++ b/templates/embroider.xml
@@ -11,7 +11,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>
diff --git a/templates/print.xml b/templates/print.xml
index 2fcbe73d..8bcf12b4 100644
--- a/templates/print.xml
+++ b/templates/print.xml
@@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>
diff --git a/templates/simulator.xml b/templates/simulator.xml
index db13db2e..2d8b0300 100644
--- a/templates/simulator.xml
+++ b/templates/simulator.xml
@@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>
diff --git a/templates/stitch_plan_preview.xml b/templates/stitch_plan_preview.xml
index b7c41898..6524882d 100644
--- a/templates/stitch_plan_preview.xml
+++ b/templates/stitch_plan_preview.xml
@@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>
diff --git a/templates/stitch_plan_preview_undo.xml b/templates/stitch_plan_preview_undo.xml
index bb5e2308..8b26e956 100644
--- a/templates/stitch_plan_preview_undo.xml
+++ b/templates/stitch_plan_preview_undo.xml
@@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="Ink/Stitch" translatable="no">
- <submenu name="Visualise and Export" />
+ <submenu name="Visualize and Export" />
</submenu>
</effects-menu>
</effect>