Using the default argument supported by getattr makes this code a bit
simpler and probably (ever so slightly) faster.
See https://forum.freecadweb.org/viewtopic.php?f=10&t=58611 for previous
discussion.
This is not an exhaustive change, these are just a few I encounted while
working with the code.
TextAlignment is the vertical alignment, while Justification is the
horizontal alignment. here, get_text was passed the vertical, while it
expected the horizontal. This caused the alignment of a Label to be
wrong in the resulting SVG (e.g. in a TechDraw draft view).
This seems to have been broken since SVG support for Labels was first
introduced in commit d6f8ded4ca (Initial work, only text (no lines)).
Label objects would produce invalid SVG XML, because the stroke-linecap
property was added as if it was a style (with : and ;), but it was
inserted in the XML tag directly, rather than inside the style attribute
value. The invalid SVG prevented for example a TechDraw draft view from
rendering when it contained a label.
This was added in commit 6a7912d399 (Draft: Using square endcaps for
lines in SVG output).
This stroke-linecap is supported both as a presentation attribute inside
the style or a XML attribute, so for consistency with the surrounding
attributes, it is made a normal attribute, rather than putting it inside
the style.
See also https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap
Looking at the surrounding code, this should be `==` rather than `in`.
The code does work as intended, because a string is always a substring
of itself, but better to fix it anyway.
Seems this was broken since this code was first introduced in commit
193339991f (Draft: clean up ViewProviderLabel class)
* If all column vectors of the 3x3 sub-matrix are equal the function incorrectly claims that it's uniform scaling.
* Detect also non-uniform scaling and if was applied from the left or right side
* Replace the int with an enum and expose it to Python
* Add several new unit tests