Use path instead of points for polyline elements (#1661)

* use polyline-path instead of points
* handle empty polylines
pull/1666/head
Kaalleen 2022-05-20 17:26:11 +02:00 zatwierdzone przez GitHub
rodzic a4f8191dc2
commit dec43b9c5f
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 7 dodań i 14 usunięć

Wyświetl plik

@ -46,20 +46,10 @@ class Polyline(EmbroideryElement):
def polyline(self):
return self.get_boolean_param("polyline")
@property
def points(self):
# example: "1,2 0,0 1.5,3 4,2"
points = self.node.get('points').strip()
points = points.split(" ")
points = [[float(coord) for coord in point.split(",")] for point in points]
return points
@property
@cache
def shape(self):
return shgeo.LineString(self.points)
return shgeo.LineString(self.path)
@property
def path(self):
@ -68,9 +58,12 @@ class Polyline(EmbroideryElement):
# svg transforms that is in our superclass, we'll convert the polyline
# to a degenerate cubic superpath in which the bezier handles are on
# the segment endpoints.
path = self.node.get_path()
if self.node.get('points', None):
path = self.node.get_path()
else:
# Set path to (0, 0) for empty polylines
path = 'M 0 0'
path = Path(path).to_superpath()
return path
@property
@ -99,7 +92,7 @@ class Polyline(EmbroideryElement):
return stitches
def validation_warnings(self):
yield PolylineWarning(self.points[0])
yield PolylineWarning(self.path[0][0][0])
def to_stitch_groups(self, last_patch):
patch = StitchGroup(color=self.color)