vcl, BitmapEx transformed draw: special-case simple rotations

Desktop / LibreOffice - Miklos Vajna [collabora.com] - 10 October 2019 18:24 EDT

In case OutputDevice::DrawTransformedBitmapEx() has to do both shearing and rotation, then recording to a metafile is unchanged. But if we need to do rotation, then it's not necessary to go via transformations.

This has the additional benefit that 90/180/270 degree rotations don't introduce an off-by-one error, where the first row and col of the transformed bitmap is transparent.

(At the moment it's not clear what introduces the unwanted translation, but at least the direct Rotate() way resolves the visible end-user problem, see the test.)

Change-Id: Ie1adbdb2221b086c19cc66f69308b6b7256fe29a Reviewed-on: https://gerrit.libreoffice.org/80626

68549e00d5e2 vcl, BitmapEx transformed draw: special-case simple rotations
vcl/qa/cppunit/outdev.cxx | 37 +++++++++++++++++++++++++++++++++++++
vcl/source/outdev/bitmap.cxx | 22 ++++++++++++++++++----
2 files changed, 55 insertions(+), 4 deletions(-)

Upstream: cgit.freedesktop.org


  • Share