summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/elements/element.py6
-rw-r--r--lib/marker.py10
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/elements/element.py b/lib/elements/element.py
index 84a9199b..5e8bb072 100644
--- a/lib/elements/element.py
+++ b/lib/elements/element.py
@@ -12,6 +12,7 @@ from inkex import bezier
from ..commands import find_commands
from ..debug import debug
from ..i18n import _
+from ..marker import get_marker_elements_cache_key_data
from ..patterns import apply_patterns, get_patterns_cache_key_data
from ..svg import (PIXELS_PER_MM, apply_transforms, convert_length,
get_node_transform)
@@ -438,6 +439,10 @@ class EmbroideryElement(object):
def _get_patterns_cache_key_data(self):
return get_patterns_cache_key_data(self.node)
+ @cache
+ def _get_guides_cache_key_data(self):
+ return get_marker_elements_cache_key_data(self.node, "guide-line")
+
def _get_cache_key(self, previous_stitch):
cache_key_generator = CacheKeyGenerator()
cache_key_generator.update(self.__class__.__name__)
@@ -447,6 +452,7 @@ class EmbroideryElement(object):
cache_key_generator.update(previous_stitch)
cache_key_generator.update([(c.command, c.target_point) for c in self.commands])
cache_key_generator.update(self._get_patterns_cache_key_data())
+ cache_key_generator.update(self._get_guides_cache_key_data())
cache_key = cache_key_generator.get_cache_key()
debug.log(f"cache key for {self.node.get('id')} {self.node.get(INKSCAPE_LABEL)} {previous_stitch}: {cache_key}")
diff --git a/lib/marker.py b/lib/marker.py
index 5d4637fe..977475b0 100644
--- a/lib/marker.py
+++ b/lib/marker.py
@@ -78,6 +78,16 @@ def get_marker_elements(node, marker, get_fills=True, get_strokes=True, get_sati
return {'fill': fills, 'stroke': strokes, 'satin': satins}
+def get_marker_elements_cache_key_data(node, marker):
+ marker_elements = get_marker_elements(node, marker, True, True, True)
+
+ marker_elements['fill'] = [shape.wkt for shape in marker_elements['fill']]
+ marker_elements['stroke'] = [shape.wkt for shape in marker_elements['stroke']]
+ marker_elements['satin'] = [satin.csp for satin in marker_elements['satin']]
+
+ return marker_elements
+
+
def has_marker(node, marker=list()):
if not marker:
marker = MARKER