* [TD]Cosmetic geometry and tools update
- all cosmetics to store geometry in same form
- all cosmetics to survive scaling and rotation
- extension functions to survive scaling and rotation
* [TD]overhaul leader point storage and editing
- add py routine makeLeader(points)
* [TD]add leader conversion utility
* [TD]Set Leader RotateWithView default to true
* [TD]fix intersection vertex position
* [TD]add CosmeticEdge::makeLineFromCanonicalPoints
* [TD]fix 2 Extension tools
- positioning in DrawCosmeticCircle
- mishandling of points in execLineParallelPerpendicular
* [TD]Remove duplicate constexpr
* [TD]fix 2x Cosmetic arc tools
* [TD]refactor LineFormat out of Cosmetic
* [TD]move cosmetic appearance settings to LineFormat
* [TD]remove 2 unused methods
* [TD]apply format to blue line & circle tools
* [TD]fix ballon arrowhead does not rotate with view
* [TD]fix CosmeticCircle3Points
* [TD]allow multiple cosmetic object deletions
* [TD]fix extend/shorten centerline
Coverity warnings fixed:
CID 316559 (#1 of 1): Uninitialized scalar variable (UNINIT)
3. uninit_use_in_call: Using uninitialized value we. Field we.idx is uninitialized when calling push_back
CID 316549 (#1 of 1): Uninitialized scalar field (UNINIT_CTOR)
4. uninit_member: Non-static class member pageheight is not initialized in this constructor nor in any functions that it calls.
CID 186161 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)
2. uninit_member: Non-static class member parent is not initialized in this constructor nor in any functions that it calls.
CID 305170 (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking this->m_baseFeat suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
CID 186152 (#2 of 2): Uninitialized pointer field (UNINIT_CTOR)
3. uninit_member: Non-static class member m_mdi is not initialized in this constructor nor in any functions that it calls.
CID 192588 (#1 of 1): Same on both sides (CONSTANT_EXPRESSION_RESULT)
pointless_expression
At the moment one has to specify the LineGroup as string. But one doesn't know what groups exist. So one has to check the Wiki, learn there where the groups are defined and then open the definition file with a text editor.
This PR simplifies this by reading the existing groups out of the definition file and fill the combobox accordingly.
It also give the user info what the selected LineGroup defines via the tooltip.
A nice side effect is that no typos can occur since you don't have to enter the LineGroup name as text.