The IO_RELEASER is a thin-wrapper around a std::unique_ptr, but done
this way to allow easier addition of a custom deleter in the future if
something needs to call back into the IO_MGR.
This selection improvement feature is hidden behind the advanced
configuration key "PcbSelectionVisibilityRatio". It is turned off (1.0)
by default. Value values are from 0.0 to less that 1.0. From testing,
using a value between 0.1 and 0.3 produces the best results.
This fix uses normal alpha blending described in the link below. The
current design only uses the alpha of the object's color. It could be
improved by doing a full color alpha blending but using the color alpha
alone seems to result in satisfactory results.
https://en.wikipedia.org/wiki/Alpha_compositing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16126
A Pcbnew Python test in QA cli (to test SVG outputs) fails in old Python
because it uses a function only existing in Python 3.9 and newer.
So skip this test for older Python version
The old bottom to top layer stack up sequence from back to front layer was
only used for plotting so it was renamed appropriately. This will be used
for future board object select disambiguation improvements.
This fixes all of the warnings cause by using std::weak_ptr objects when
recursing the symbol inheritance tree to retrieve the root symbol. The
issue is that the weak pointers are not guaranteed to be valid for each
recursion because the lock will go out of scope. Using a std::shared_ptr
object will ensure the lock is valid until it goes out of scope.
stdlib checks do not allow dereferencing the first element of a vector
when there are no elements in the vector (regardless of whether we have
allocated memory for them). This whole function is rather
over-engineered, setting up multiple allocations and branches depending
of the string size. This commit reduces the function to the actions
needed (get the string size, print it into the output)
* Fix issue handling symbols with multiple inheritance.
* Remove unused code from the symbol library manager object.
* Splits out the library buffer and symbol buffer object so the can be unit
tested without having to mock the symbol library manager object.
* Add unit tests for library buffer and symbol buffer objects.