diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2023-12-28 06:53:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-28 06:53:05 +0100 |
| commit | c0bcdb6e25ff99bf21efcaaa479c7f15f834acd5 (patch) | |
| tree | 97525b6a70b2c5b8720971df814bb43a55fc62ed | |
| parent | fcb1f4a12293bdff62e2525d992885ba48e6655c (diff) | |
add display stacking order extension (#2656)
| -rw-r--r-- | lib/extensions/__init__.py | 2 | ||||
| -rw-r--r-- | lib/extensions/display_stacking_order.py | 60 | ||||
| -rw-r--r-- | templates/density_map.xml | 2 | ||||
| -rw-r--r-- | templates/display_stacking_order.xml | 18 | ||||
| -rw-r--r-- | templates/embroider.xml | 2 | ||||
| -rw-r--r-- | templates/print.xml | 2 | ||||
| -rw-r--r-- | templates/simulator.xml | 2 | ||||
| -rw-r--r-- | templates/stitch_plan_preview.xml | 2 | ||||
| -rw-r--r-- | templates/stitch_plan_preview_undo.xml | 2 |
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> |
