Put the string manipuuation utils in the cpp, and
remove string_utils.h from the includes of netinfo.h.
This spams that header into about 350 files, not all of which
need it. Then go round and tidy up the places (most exporters
and dialogs) where CPP files weren't including string_utils.h
when they used it, as well as some other order-sensitive
include issues that turned up.
ADDED: description of jumper groups for PCB Footprint
Properties dialog.
Also untangles the internal storage of the DRC exclusion
flags from the fabrication attributes.
Also removes allow-missing-courtyards from PCB footprint
properties because you can't edit the courtyards there
so it makes no sense.
(Which means the library parity checker also doesn't
need to check it as it will always match the library.)
The arc center is a pseudo coordinate which is calculated for drawing
purposes. This mid point is fixed unless the arc is modified which
should result in more reliable arc parity footprint library DRC testing.
Also change EDA_SHAPE::Compare() to use the arc mid point.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15917
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
CHANGED: PCB file format now supports saving/loading complex padstacks
CHANGED: PTH pads are now rendered per copper layer in the copper color;
the PTH pad color is no longer used.
ADDED: support for importing complex pad stacks from Altium PCBs
Enforce padstack-aware access to pad properties across KiCad
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8182
PCB_SHAPE::Normalize() normalized a graphic segment by (sometimes) swapping
start and end points. But it creates an issue when flipping a segment: the
reference point can be changed.
This normalization was made for DRC purpose when comparing 2 footprints.
Now, PCB_SHAPE::Normalize() does not change end points of a segment, and a
specific PCB_SHAPE::NormalizeForCompare() normalize fct is used for DRC compare.
There was a gentle mish-mash of booleans, some with
true being left/right and some up/down, and some functions that
can flip in both axes (which is never actually done, and doesn't
really make geometric sense).
Replace all this with the FLIP_DIRECTION enum class, which makes
the intention completely unambiguous.
This also then allows a small scattering of simplifications,
because everything takes the same type and you don't have to
fiddle booleans to fit.
Board items should not be in a group when they are deleted, but these
are dummy ones, so their group membership doesn't matter.
Fixes KICAD-7P0
Fixes KICAD-6VX
Fixes KICAD-7KK
Fixes KICAD-6VH
Requires string change, but it's a bug, and worse, a DRC
bug. I did minimize the changes by using a single error
message string that then has the various settings (which
are already translated) put into it.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16671
- fix tests for zones: they were rotated/moved twice before comparing
- fix tests for some graphics (RECT and POLYGONS): they were not always compared
using the right order.
Fixes#16501https://gitlab.com/kicad/code/kicad/-/issues/16501
Instead of changing the footprint in test to have a non flipped, non rotated
fp, change the footprint template from library to have the same transform.
It reduce problems like rounding and graphic shape convert for rectangles.
Fixes#16075https://gitlab.com/kicad/code/kicad/-/issues/16075
in bool shapeNeedsUpdate(), if a shape is a rectangle and the other is a polygon,
we need to try to convert the polygon to a rectangle for comparison, because some
transforms ( and especially PCB_SHAPE::Normalize() ) can convert a polygon to a rectangle
So a poly and a rectangle can be in fact the same shape
Partial fix of bug 16075.
Moves apply defaults settings to Board Setup (where they were
duplicated anyway due to an earlier botched merge).
Modifies the apply-to-graphics algorithm to skip copper shapes.
Modifies DRC library check to skip STROKE_PARAMS for non-copper
shapes.