pull/1548/head
Andreas 2022-02-01 19:47:19 +01:00 zatwierdzone przez Kaalleen
rodzic 3d1600ed03
commit b14e445dae
1 zmienionych plików z 22 dodań i 9 usunięć

Wyświetl plik

@ -43,14 +43,17 @@ class UnderlayInsetWarning(ValidationWarning):
description = _("The underlay inset parameter for this fill object cannot be applied. "
"Ink/Stitch will ignore it and will use the original size instead.")
class MissingGuideLineWarning(ValidationWarning):
name = _("Missing Guideline")
description = _('This object is set to "Guided AutoFill", but has no guide line.')
description = _(
'This object is set to "Guided AutoFill", but has no guide line.')
steps_to_solve = [
_('* Create a stroke object'),
_('* Select this object and run Extensions > Ink/Stitch > Edit > Selection to guide line')
]
class DisjointGuideLineWarning(ValidationWarning):
name = _("Disjointed Guide Line")
description = _("The guide line of this object isn't within the object borders. "
@ -59,13 +62,16 @@ class DisjointGuideLineWarning(ValidationWarning):
_('* Move the guide line into the element')
]
class MultipleGuideLineWarning(ValidationWarning):
name = _("Multiple Guide Lines")
description = _("This object has multiple guide lines, but only the first one will be used.")
description = _(
"This object has multiple guide lines, but only the first one will be used.")
steps_to_solve = [
_("* Remove all guide lines, except for one.")
]
class UnconnectedError(ValidationError):
name = _("Unconnected")
description = _("Fill: This object is made up of unconnected shapes. This is not allowed because "
@ -78,7 +84,8 @@ class UnconnectedError(ValidationError):
class InvalidShapeError(ValidationError):
name = _("Border crosses itself")
description = _("Fill: Shape is not valid. This can happen if the border crosses over itself.")
description = _(
"Fill: Shape is not valid. This can happen if the border crosses over itself.")
steps_to_solve = [
_('* Extensions > Ink/Stitch > Fill Tools > Break Apart Fill Objects')
]
@ -208,7 +215,8 @@ class FillStitch(EmbroideryElement):
# ensure path length
for i, path in enumerate(paths):
if len(path) < 3:
paths[i] = [(path[0][0], path[0][1]), (path[0][0]+1.0, path[0][1]), (path[0][0], path[0][1]+1.0)]
paths[i] = [(path[0][0], path[0][1]), (path[0][0] +
1.0, path[0][1]), (path[0][0], path[0][1]+1.0)]
return paths
@property
@ -218,7 +226,8 @@ class FillStitch(EmbroideryElement):
# from the first. So let's at least make sure the "first" thing is the
# biggest path.
paths = self.paths
paths.sort(key=lambda point_list: shgeo.Polygon(point_list).area, reverse=True)
paths.sort(key=lambda point_list: shgeo.Polygon(
point_list).area, reverse=True)
# Very small holes will cause a shape to be rendered as an outline only
# they are too small to be rendered and only confuse the auto_fill algorithm.
# So let's ignore them
@ -483,11 +492,14 @@ class FillStitch(EmbroideryElement):
underlay_stitch_groups, start = self.do_underlay(start)
stitch_groups.extend(underlay_stitch_groups)
if self.fill_method == 0:
stitch_groups.extend(self.do_auto_fill(last_patch, start, end))
stitch_groups.extend(
self.do_auto_fill(last_patch, start, end))
if self.fill_method == 1:
stitch_groups.extend(self.do_tangential_fill(last_patch, start))
stitch_groups.extend(
self.do_tangential_fill(last_patch, start))
elif self.fill_method == 2:
stitch_groups.extend(self.do_guided_fill(last_patch, start, end))
stitch_groups.extend(
self.do_guided_fill(last_patch, start, end))
except Exception:
self.fatal_fill_error()
@ -599,8 +611,9 @@ class FillStitch(EmbroideryElement):
def _get_guide_lines(self, multiple=False):
guide_lines = get_marker_elements(self.node, "guide-line", False, True)
# No or empty guide line
if not guide_lines or guide_lines['stroke'][0].is_empty:
if not guide_lines or not guide_lines['stroke']:
return None
if multiple:
return guide_lines['stroke']
else: