summaryrefslogtreecommitdiff
path: root/lib/elements
diff options
context:
space:
mode:
authorKaalleen <reni@allenka.de>2021-06-27 22:29:57 +0200
committerKaalleen <reni@allenka.de>2021-06-27 22:29:57 +0200
commitc602c4c517cab40dfc2dc7dbc5c29c037cccafae (patch)
tree86a45909c36e307e13a0b9e009d7d2d6414b11a0 /lib/elements
parentd6df8084f4a0fe8c8e174ea230d158512bd8f094 (diff)
group patterns
Diffstat (limited to 'lib/elements')
-rw-r--r--lib/elements/satin_column.py10
-rw-r--r--lib/elements/utils.py4
2 files changed, 10 insertions, 4 deletions
diff --git a/lib/elements/satin_column.py b/lib/elements/satin_column.py
index 3f5f05e5..43948e42 100644
--- a/lib/elements/satin_column.py
+++ b/lib/elements/satin_column.py
@@ -6,7 +6,7 @@
from copy import deepcopy
from itertools import chain
-from inkex import paths
+from inkex import paths, NSS
from shapely import affinity as shaffinity
from shapely import geometry as shgeo
from shapely.ops import nearest_points
@@ -14,6 +14,7 @@ from shapely.ops import nearest_points
from ..i18n import _
from ..svg import (PIXELS_PER_MM, apply_transforms, line_strings_to_csp,
point_lists_to_csp)
+from ..svg.tags import EMBROIDERABLE_TAGS
from ..utils import Point, cache, collapse_duplicate_point, cut
from .element import EmbroideryElement, Patch, param
from .validation import ValidationError, ValidationWarning
@@ -577,10 +578,13 @@ class SatinColumn(EmbroideryElement):
return SatinColumn(node)
def get_patterns(self):
- xpath = ".//*[@inkstitch:pattern='%(id)s']" % dict(id=self.node.get('id'))
- patterns = self.node.getroottree().getroot().xpath(xpath)
+ xpath = "./ancestor::svg:g[svg:use[@xlink:href='#inkstitch_pattern_group']]//*[not(@inkstitch:satin_column='true')]"
+ patterns = self.node.xpath(xpath, namespaces=NSS)
line_strings = []
for pattern in patterns:
+ # TODO: exclude fills in case we will want to use them with the pattern too
+ if pattern.tag not in EMBROIDERABLE_TAGS:
+ continue
d = pattern.get_path()
path = paths.Path(d).to_superpath()
path = apply_transforms(path, pattern)
diff --git a/lib/elements/utils.py b/lib/elements/utils.py
index 03ea48d4..cbac3d40 100644
--- a/lib/elements/utils.py
+++ b/lib/elements/utils.py
@@ -17,6 +17,7 @@ from .polyline import Polyline
from .satin_column import SatinColumn
from .stroke import Stroke
from .text import TextObject
+from ..commands import group_commands
def node_to_elements(node): # noqa: C901
@@ -29,7 +30,8 @@ def node_to_elements(node): # noqa: C901
elif node.tag == SVG_PATH_TAG and not node.get('d', ''):
return [EmptyDObject(node)]
- elif node.get(INKSTITCH_ATTRIBS['pattern']):
+ # TODO: exclude fills
+ elif group_commands(node, 'pattern_group') and not node.get(INKSTITCH_ATTRIBS['satin_column']):
return [PatternObject(node)]
elif node.tag in EMBROIDERABLE_TAGS: