After calling updateText(), updateGeometry() was sometimes re-run before the
current updateGeometry() was finished, thus creating a incorrect geometry
(duplicate items)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20076
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
Presumably the intention was that the RADIAL dimension could
also be a diameter type of dimension. However, as the recent
inward/outward work showed, this is actually rather fraught,
as a diameter type needs a different prefix (so now you can't
always tell when it's user-set or not) and there are different
numbers of control points.
Possibly, a real "Diameter" type should be a new class - either
a subclass of this one or another one entirely.
In the meantime, remove the m_isDiameter member, as it's never
set to anything other than 'false' and inaccessible.
This adds a toggle between outward ( |<--->| ) and inward
( -->|----|<-- ) dimensions.
The original merge request for this feature had more nice
features to it: automatic switching and an 'outward' version of the
radial dimension. However, both of these are very tricky problems, and
need more thought: for example, if the radial dimension is overloaded
into a diameter dimension based on the arrow direction, then you have
implement the fiddly concept of a prefix override, and it also make
the point editor much harder to make seamless.
So, rather then delay the very good and useful upgrade of
the "normal" ortho/aligned dimensions, just sidestep the
issue by not doing the radial lines or auto detection right now.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/5819
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.
Anything that changes the text may also need to change the geometry,
as the text might cause knockouts of the dimension lines.
Resolves several avenues for the property manager to make changes
that 'forget' to update aspects of dimensions.
Move text orientation to the text properties section (the
dimension IS an EDA_TEXT, but the user doesn't know that!)
Add the "keep aligned" checkbox, and make sure knockouts and
alignments are recomputed correctly.
Also adds some debugging to try to catch dangling pointers.
Also adds a cache for group bounding boxes (which will be expensive
to calculate for large groups).
Fixes https://gitlab.com/kicad/code/kicad/issues/12875
When building the connectivity database, we should not be using the
connectivity to check for shapes.
To make this deterministic, we introduce two flags (ALWAYS_FLASH and
NEVER_FLASH) that are used with connectivity building to determine
whether a pad is flashed for connectivity or not. ZONE <-> PAD/VIA
connectivity will be checked with ALWAYS_FLASHED and all other
connectivity will be checked with NEVER_FLASHED if they are marked for
potential annular ring removal. If they are not marked for removal,
they will be checked ALWAYS_FLASHED.
Fixes https://gitlab.com/kicad/code/kicad/issues/11114
This is because we don't yet support radial dimensions.
Also fixes a bug where we fail to read an Altium circular track. We
now convert it to a pair of 180-degree arcs.
Also fixes a bug where we were failing to import prefixes on linear
dimensions.
Fixes https://gitlab.com/kicad/code/kicad/issues/8789