From f5c85183d9c874fca806917e50992daea4101496 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 14 Nov 2018 20:23:06 -0500 Subject: basic lettering (#344) Can handle multiple lines of text and routes the stitching in alternating directions on each line. --- lib/elements/utils.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lib/elements/utils.py (limited to 'lib/elements/utils.py') diff --git a/lib/elements/utils.py b/lib/elements/utils.py new file mode 100644 index 00000000..87dfa877 --- /dev/null +++ b/lib/elements/utils.py @@ -0,0 +1,47 @@ + +from ..commands import is_command +from ..svg.tags import SVG_POLYLINE_TAG, SVG_PATH_TAG + +from .auto_fill import AutoFill +from .element import EmbroideryElement +from .fill import Fill +from .polyline import Polyline +from .satin_column import SatinColumn +from .stroke import Stroke + + +def node_to_elements(node): + if node.tag == SVG_POLYLINE_TAG: + return [Polyline(node)] + elif node.tag == SVG_PATH_TAG: + element = EmbroideryElement(node) + + if element.get_boolean_param("satin_column"): + return [SatinColumn(node)] + else: + elements = [] + + if element.get_style("fill", "black"): + if element.get_boolean_param("auto_fill", True): + elements.append(AutoFill(node)) + else: + elements.append(Fill(node)) + + if element.get_style("stroke"): + if not is_command(element.node): + elements.append(Stroke(node)) + + if element.get_boolean_param("stroke_first", False): + elements.reverse() + + return elements + else: + return [] + + +def nodes_to_elements(nodes): + elements = [] + for node in nodes: + elements.extend(node_to_elements(node)) + + return elements -- cgit v1.2.3