1. Python does a range check for values passed to int, unsigned int, short, unsigned short
(and longs on Windows)
2. The round trip of a MIN_INT value through string now works
Previously the algorithm tried to dynamically build a convex envelope.
However, in case of the #2429 polygon, this rendered extremely skinny
triangles which could not be removed.
These caused numerical issues.
Problem was that integers are converted to "long long"
in Python, which creates Variants rendering "#l1" as
parsable strings. These are marked as invalid by the
Syntax highlighter of the user properties editor.
This patch fixes the user properties editor syntax
highlighter to cover all Variant variants and
uses "long" type for Variant if possible.
The bug was that the rebinding by name did not happen
because the name was looked up in the wrong layout.
A testcase has been added to test proper PCell rebinding
in case of technology switches.
1. The readers will overwrite the layer names if given in secondary fashion
(additionally to layer/datatype)
2. The layer properties nodes will update the "real source" according to
the actual name if the name is used in addition to layer/datatypes
Following review feedback, the reader now rejects a header claiming a
width or height beyond 65536, guarding against malformed byte streams
that would otherwise trigger an unreasonable allocation. The writer
stays full 32-bit ('unlimited'), and native little-endian order and the
transparency mask are kept as-is. Adds Ruby and Python tests for the
oversized-header rejection.
Ref: https://github.com/KLayout/klayout/pull/2387#issuecomment-4984941409
Problem was that the OASIS writer was simply ignoring
all top level proxy cells (PCells, Library references).
The original bug #1835 fixed that by changing the
reader behavior, so it would keep top level proxies.
However, doing the spin through the writer got them
removed and in addition, the cleanup happing during
editing would also remove them.
Solution is to centralize the strategy of cleaning
cells. The cleanup now is changed to not remove
proxy top cells if they are the only ones. This is
consistent with the previous reader-only behavior.
The writer implements the same behavior by means
dropping cells marked for cleanup, instead of simply
skipping all proxy cells.