summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLex Neva <github.com@lexneva.name>2022-08-06 22:59:00 -0400
committerLex Neva <github.com@lexneva.name>2023-02-18 22:34:47 -0500
commitaa65a2bf3fb747dc89e2d905f1fc45b269b5cab4 (patch)
tree5592d1cbcfe92b5302993ddc9b68ad108a5083d9
parent2865f4161e4b2e8dc63177ef60a83820ea4f761d (diff)
include guides in cache key
-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