The m_imageData buffer in the BITMAP_BASE is an
internal implementation - the public API to persist the
data to a stream appears to be SaveImageData - so use that,
which hides the implementation (and generates the image data
"live" when needed).
Remove the public access to the m_imageData buffer as it isn't
needed for public use, and also is misleading.
Also break out the formatting of the data into KICAD_FORMAT,
as it's currently replicated in eeschema/pcb/pagelayout
formatting code.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/19772
We need to draw all layers on top of the layer behind us, the factor is
rather arbitrary but needs to ensure that the step is still below 0 when
subtracted using the full layer size
Fixes https://gitlab.com/kicad/code/kicad/issues/19795
The file watcher can throw errors on Linux that are very cryptic and
actually not very useful to users, so let's hide them since there isn't
really any problem that comes from this.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15717
Footprints in orgs have standard naming. We need to allow designers to
keep their standard namings outside of boards where they are fixed.
This belongs in the preferences as a set-once for local standards
The symbol library embedded files were implicit, which made them hard to
work with. Adding the panel makes it clearer and setting the panel
correctly to the callback ensures that the structure is updated on
close.
Adds some copy/move semantics for EMBEDDED_FILES to take advantage of
how the multiple copies are handled in the library editor
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18935
Each editor needs the embedded files tab in the
schematic/pcb/symbol/footprint settings. But the footprint may add an
embedded file from the 3d models tab and symbols/footprints may add
embedded files from the grid. This should be immediately visible in the
embedded files tab. Additionally, removing the reference to an embedded
file in the grid or 3d models now removes the embedded file as well.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18934
IPC2581 classifies pad rotation as clockwise from the top layer looking
down. Which means that if you have the exact same footprint with
rotated pads on the top layer and bottom layer, then that will need two
different packages because one package will have the pads rotated one
way, the other will have the pads rotated in the opposite direction.
The IPC committee clearly was too smart for its own good here. So we
hash the footprints based on layer as well and then introduce the
rotation into the pad. This increases the number of packages but keeps
the code compact
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19703
Using PnS router, when trying to create a blind/buried or micro via with layer
selection with no track in progress, the router crashed because the starting
layer was not defined.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19750