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
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.
A sheetpath is required to correctly resolve text variables.
Depending on currentSheet is rife with bugs.
There are many places where we do *not* want to be prepending
field names to the field values, such as netlisting,
building PDF hypertext menus, etc.
Also, Find/Replace needs to work on unresolved text, as
that's what we're going to display (and if replace nuked
your variable references you wouldn't be happy).
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