[Path] preserve cap extensions in normalized form, and scale them with scale()
This commit is contained in:
parent
1bcf5901d6
commit
3beadd2bf0
3 changed files with 52 additions and 2 deletions
|
|
@ -453,6 +453,8 @@ class Path(Shape):
|
|||
def scale_by(self, c: float) -> 'Path':
|
||||
self.vertices *= c
|
||||
self.width *= c
|
||||
if self.cap_extensions is not None:
|
||||
self.cap_extensions *= c
|
||||
return self
|
||||
|
||||
def normalized_form(self, norm_value: float) -> normalized_shape_tuple:
|
||||
|
|
@ -476,13 +478,15 @@ class Path(Shape):
|
|||
reordered_vertices = rotated_vertices
|
||||
|
||||
width0 = self.width / norm_value
|
||||
cap_extensions0 = None if self.cap_extensions is None else tuple(float(v) / norm_value for v in self.cap_extensions)
|
||||
|
||||
return ((type(self), reordered_vertices.data.tobytes(), width0, self.cap),
|
||||
return ((type(self), reordered_vertices.data.tobytes(), width0, self.cap, cap_extensions0),
|
||||
(offset, scale / norm_value, rotation, False),
|
||||
lambda: Path(
|
||||
reordered_vertices * norm_value,
|
||||
width=width0 * norm_value,
|
||||
cap=self.cap,
|
||||
cap_extensions=None if cap_extensions0 is None else tuple(v * norm_value for v in cap_extensions0),
|
||||
))
|
||||
|
||||
def clean_vertices(self) -> 'Path':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue