When selecting multiline text objects with non-default (outline) fonts
in the schematic editor, only a single line-height box was drawn as
the selection highlight. This happened because boxText() called
GetTextExtents() which used StringBoundaryLimits() treating the entire
multiline string as one line, producing a very wide but single-height
bounding box.
Replace the boxText() call with GetBoundingBox() which correctly
computes the bounding box for multiline text by measuring each line
individually and accounting for interline spacing.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23198
Apply a more localized fix which doesn't mess up
text positioning.
Also move it to shared code so that it can't get out
of sync with plotting again.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22921
When printing schematics in color mode, all layer colors are forced to
alpha 1.0 to work around Cairo/PostScript limitations. This caused the
normally transparent LAYER_SHEET_BACKGROUND color to become opaque
white, resulting in white backgrounds being drawn on sheet symbols even
when no explicit background color was set.
The fix checks if the sheet's background color has a visible alpha value
before drawing the fill, matching the behavior of the Plot() function.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18958
In particular:
Resolving the DNP/InBOM/OnBoard/etc. flags needs to take into account
the variant.
Writing a SPICE netlist needs to take into account the variant.
Updating a simulation tuned value needs to write to the current
variant (this is only partly implemented, with a TODO for the hard
part).
Painting of fields needs to paint the current variant value.
Still missing is reading/writing fields from the simulation model
dialog to/from the current variant.
The display of hatched shapes (HATCH, REVERSE_HATCH, CROSS_HATCH fill modes)
would flicker and show missing lines at certain zoom levels.
Fix by properly handling the dirty flag and enforcing a minimum line
width in the painters. Also changed the drawing function to only draw
with lines. The cross-hatch optimization is maintained for export, 3d
and hit tests
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20562
Allows multiple, top-level schematic sheets. Records of the sheets are
stored in the project file. All top-level sheets live under a virtual
root sheet in the hierarchy. This virtual root is suppressed for export
and general visibility
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2063
Please do not attempt to use this yet as it is a work in progress. Given
large number of merge conflicts, I pushed this partial commit to save time
rebasing.
All of the user interface is hidden behind the "EnableVariantUI" advanced
configuration flag until variants are ready.
Implement bracket notation for stacked pins ([1,2,3], [1-4], [1,3,5-7]).
Automatic net naming proceeds based on the smallest logical pin number
in stacked groups.
Provide explode/reform commands in symbol editor for conversion.
Supports arbitrary ranges including BGA alphanum ranges like
[AA1-AA3,CD14-CD22]
Adds some additional QA and trace logging
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2004
This still leaves a few things out in the cold,
such as hit-testing and polygon generation.
But at least it allows us to plot with a default
font.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19031