From 9c73e4be17e1649215f0b5ebfeae7e773c6c65e0 Mon Sep 17 00:00:00 2001 From: Lex Neva <github.com@lexneva.name> Date: Sun, 28 Jan 2018 20:32:08 -0500 Subject: [PATCH] protect against bad values for certain params This is a stopgap measure to prevent the extension from infinitely looping if the user mistakenly gives a zero or negative value for zig-zag spacing or running stitch length. It's definitely not ideal -- the user is still allowed to enter invalid numbers, but the extension just interprets any zero value as 0.01. In the future, I'll refactor things to add proper bounds-checking for parameters and limit the values that can be entered in the UI. --- embroider.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/embroider.py b/embroider.py index feda368f5..da0350b20 100644 --- a/embroider.py +++ b/embroider.py @@ -65,7 +65,7 @@ class Fill(EmbroideryElement): @property @param('row_spacing_mm', 'Spacing between rows', unit='mm', type='float', default=0.25) def row_spacing(self): - return self.get_float_param("row_spacing_mm", 0.25) + return max(self.get_float_param("row_spacing_mm", 0.25), 0.01) @property def end_row_spacing(self): @@ -74,7 +74,7 @@ class Fill(EmbroideryElement): @property @param('max_stitch_length_mm', 'Maximum fill stitch length', unit='mm', type='float', default=3.0) def max_stitch_length(self): - return self.get_float_param("max_stitch_length_mm", 3.0) + return max(self.get_float_param("max_stitch_length_mm", 3.0), 0.01) @property @param('staggers', 'Stagger rows this many times before repeating', type='int', default=4) @@ -392,7 +392,7 @@ class AutoFill(Fill): @property @param('running_stitch_length_mm', 'Running stitch length (traversal between sections)', unit='mm', type='float', default=1.5) def running_stitch_length(self): - return self.get_float_param("running_stitch_length_mm", 1.5) + return max(self.get_float_param("running_stitch_length_mm", 1.5), 0.01) @property @param('fill_underlay', 'Underlay', type='toggle', group='AutoFill Underlay', default=False) @@ -907,13 +907,13 @@ class Stroke(EmbroideryElement): @property @param('running_stitch_length_mm', 'Running stitch length', unit='mm', type='float', default=1.5) def running_stitch_length(self): - return self.get_float_param("running_stitch_length_mm", 1.5) + return max(self.get_float_param("running_stitch_length_mm", 1.5), 0.01) @property @param('zigzag_spacing_mm', 'Zig-zag spacing (peak-to-peak)', unit='mm', type='float', default=0.4) @cache def zigzag_spacing(self): - return self.get_float_param("zigzag_spacing_mm", 0.4) + return max(self.get_float_param("zigzag_spacing_mm", 0.4), 0.01) @property @param('repeats', 'Repeats', type='int', default="1") @@ -1009,7 +1009,7 @@ class SatinColumn(EmbroideryElement): @param('zigzag_spacing_mm', 'Zig-zag spacing (peak-to-peak)', unit='mm', type='float', default=0.4) def zigzag_spacing(self): # peak-to-peak distance between zigzags - return self.get_float_param("zigzag_spacing_mm", 0.4) + return max(self.get_float_param("zigzag_spacing_mm", 0.4), 0.01) @property @param('pull_compensation_mm', 'Pull compensation', unit='mm', type='float') @@ -1029,7 +1029,7 @@ class SatinColumn(EmbroideryElement): @property @param('contour_underlay_stitch_length_mm', 'Stitch length', unit='mm', group='Contour Underlay', type='float', default=1.5) def contour_underlay_stitch_length(self): - return self.get_float_param("contour_underlay_stitch_length_mm", 1.5) + return max(self.get_float_param("contour_underlay_stitch_length_mm", 1.5), 0.01) @property @param('contour_underlay_inset_mm', 'Contour underlay inset amount', unit='mm', group='Contour Underlay', type='float', default=0.4) @@ -1047,7 +1047,7 @@ class SatinColumn(EmbroideryElement): @property @param('center_walk_underlay_stitch_length_mm', 'Stitch length', unit='mm', group='Center-Walk Underlay', type='float', default=1.5) def center_walk_underlay_stitch_length(self): - return self.get_float_param("center_walk_underlay_stitch_length_mm", 1.5) + return max(self.get_float_param("center_walk_underlay_stitch_length_mm", 1.5), 0.01) @property @param('zigzag_underlay', 'Zig-zag underlay', type='toggle', group='Zig-zag Underlay') @@ -1057,7 +1057,7 @@ class SatinColumn(EmbroideryElement): @property @param('zigzag_underlay_spacing_mm', 'Zig-Zag spacing (peak-to-peak)', unit='mm', group='Zig-zag Underlay', type='float', default=3) def zigzag_underlay_spacing(self): - return self.get_float_param("zigzag_underlay_spacing_mm", 3) + return max(self.get_float_param("zigzag_underlay_spacing_mm", 3), 0.01) @property @param('zigzag_underlay_inset_mm', 'Inset amount (default: half of contour underlay inset)', unit='mm', group='Zig-zag Underlay', type='float')