Every basic data type is stored in Base module, color is standing out as
one that does not. Moving it to Base opens possibilities to integrate it
better with the rest of FreeCAD.
* [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
the PR fixes the following things:
- change the way centerlines between 2 lines are calculated. The current implementation leads to many bugs and even crashes (e.g. when the 2 selected lines are parallel ones of a square). There are different forum threads from the last 1.5 years.
The new endpoint line sorting is the one described here: https://forum.freecadweb.org/viewtopic.php?f=35&start=20&t=44255&sid=989a668890f954c13ef81e4a04ee6912#p501179
- as consequence the erroneous and misleading line end flipping can go and is removed (only used internally)
- when creating a new centerline, you see it immediately
- when creating a new or editing an existing centerline and press Cancel, the creation/editing is aborted
- fix crash when the 2 selected lines are bot horizontal and one tries to create a vertical centerline
- fix crash when changing the orientation of an existing centerline and the result would be invalid
- cleanup the code a bit