diff options
author | Regina Henschel <rb.henschel@t-online.de> | 2020-01-02 17:37:32 +0100 |
---|---|---|
committer | Regina Henschel <rb.henschel@t-online.de> | 2020-01-17 18:03:38 +0100 |
commit | bc886f523872d4f9845c188c7d525d72a1a60946 (patch) | |
tree | 8677487eb45e619a9dcbc135c9c934e1a8e201d4 /svl | |
parent | 21a5c7f77dea3c880ee1808f5385205f53271338 (diff) |
tdf#98584 Correct import draw:transform values skewY and matrix
Covers tdf#98583 and tdf#98565 too.
TRBaseGeomety (API) uses for skewX the same angle orientation as
written to file. But that results in mathematically wrong matrices.
Change sign where needed.
Vertical shearing is converted and written to file by LO as sequence
rotation * shear horizontal * scale. Same should happen on reading.
Because LO does not write skewY itself, I have used the angle
orientation, that was used in OOo1.1.5 and that is used in
Scribus 1.5.4.
Import generates a transformation matrix from the draw:transform
attribute. That is a mathematically correct matrix. It is applied
to the shape via TRSetBaseGeometry. But that uses a wrong sign in
the shear angle. Therefore conversion of mathematical matrix to
TRBaseGeometry matrix is needed.
The draw:transform attribute can generate a scaling, which needs to
be applied on top of the scaling made from svg:width and svg:height.
Such happens on import of skewY() and might happen with matrix().
SdrPathObject puts scaling form svg:width and svg:height directly
into the coordinates of its points. It had ignored any additional
scaling. I have add a part to detect and apply it.
Change-Id: I7636b9feec432cf403e7c6ef8dbd6a769793d144
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86244
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
Diffstat (limited to 'svl')
0 files changed, 0 insertions, 0 deletions