From 0d77b99bfd4cb9937b6ce59235f0094624e19ba6 Mon Sep 17 00:00:00 2001
From: Kaalleen <36401965+kaalleen@users.noreply.github.com>
Date: Tue, 24 Oct 2023 19:21:15 +0200
Subject: [PATCH] Add indicator size option for density map (#2572)
* add indicator size option
* obey min stitch length setting
---
lib/extensions/density_map.py | 10 ++++++----
templates/density_map.xml | 3 +++
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/lib/extensions/density_map.py b/lib/extensions/density_map.py
index 6d23f3d91..854a4ebeb 100644
--- a/lib/extensions/density_map.py
+++ b/lib/extensions/density_map.py
@@ -25,6 +25,7 @@ class DensityMap(InkstitchExtension):
self.arg_parser.add_argument("-r", "--density-radius-red", type=float, default=0.5, dest="radius_red")
self.arg_parser.add_argument("-m", "--num-neighbors-yellow", type=int, default=3, dest="num_neighbors_yellow")
self.arg_parser.add_argument("-s", "--density-radius-yellow", type=float, default=0.5, dest="radius_yellow")
+ self.arg_parser.add_argument("-i", "--indicator-size", type=float, default=0.5, dest="indicator_size")
def effect(self):
# delete old stitch plan
@@ -37,14 +38,15 @@ class DensityMap(InkstitchExtension):
self.metadata = self.get_inkstitch_metadata()
collapse_len = self.metadata['collapse_len_mm']
+ min_stitch_len = self.metadata['min_stitch_len_mm']
patches = self.elements_to_stitch_groups(self.elements)
- stitch_plan = stitch_groups_to_stitch_plan(patches, collapse_len=collapse_len)
+ stitch_plan = stitch_groups_to_stitch_plan(patches, collapse_len=collapse_len, min_stitch_len=min_stitch_len)
layer = svg.find(".//*[@id='__inkstitch_density_plan__']")
color_groups = create_color_groups(layer)
density_options = [{'max_neighbors': self.options.num_neighbors_red, 'radius': self.options.radius_red},
{'max_neighbors': self.options.num_neighbors_yellow, 'radius': self.options.radius_yellow}]
- color_block_to_density_markers(svg, color_groups, stitch_plan, density_options)
+ color_block_to_density_markers(svg, color_groups, stitch_plan, density_options, self.options.indicator_size)
# update layer visibility 0 = unchanged, 1 = hidden, 2 = lower opacity
groups = self.document.getroot().findall(SVG_GROUP_TAG)
@@ -92,7 +94,7 @@ def create_color_groups(layer):
return color_groups
-def color_block_to_density_markers(svg, groups, stitch_plan, density_options):
+def color_block_to_density_markers(svg, groups, stitch_plan, density_options, indicator_size):
num_neighbors = []
for option in density_options:
radius = option['radius'] * PIXELS_PER_MM
@@ -113,7 +115,7 @@ def color_block_to_density_markers(svg, groups, stitch_plan, density_options):
'style': "fill: %s; stroke: #7e7e7e; stroke-width: 0.02%%;" % color,
'cx': "%s" % coord[0],
'cy': "%s" % coord[1],
- 'r': str(0.5),
+ 'r': str(indicator_size * 2),
'transform': get_correction_transform(svg)
})
group.append(density_marker)
diff --git a/templates/density_map.xml b/templates/density_map.xml
index d8348cbb3..d1034fde6 100644
--- a/templates/density_map.xml
+++ b/templates/density_map.xml
@@ -24,6 +24,9 @@
+
+ 0.5