[pattern] add arg to , useful for whole-library scaling
This commit is contained in:
parent
5a4b9609bd
commit
1eac3baf6a
@ -648,21 +648,25 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
||||
cast(Scalable, entry).scale_by(c)
|
||||
return self
|
||||
|
||||
def scale_by(self, c: float) -> Self:
|
||||
def scale_by(self, c: float, scale_refs: bool = True) -> Self:
|
||||
"""
|
||||
Scale this Pattern by the given value
|
||||
(all shapes and refs and their offsets are scaled,
|
||||
as are all label and port offsets)
|
||||
All shapes and (optionally) refs and their offsets are scaled,
|
||||
as are all label and port offsets.
|
||||
|
||||
Args:
|
||||
c: factor to scale by
|
||||
scale_refs: Whether to scale refs. Ref offsets are always scaled,
|
||||
but it may be desirable to not scale the ref itself (e.g. if
|
||||
the target cell was also scaled).
|
||||
|
||||
Returns:
|
||||
self
|
||||
"""
|
||||
for entry in chain_elements(self.shapes, self.refs):
|
||||
cast(Positionable, entry).offset *= c
|
||||
cast(Scalable, entry).scale_by(c)
|
||||
if scale_refs or not isinstance(entry, Ref):
|
||||
cast(Scalable, entry).scale_by(c)
|
||||
|
||||
rep = cast(Repeatable, entry).repetition
|
||||
if rep:
|
||||
|
Loading…
x
Reference in New Issue
Block a user