diff options
author | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2017-12-01 23:11:45 +0100 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2017-12-06 14:24:24 +0100 |
commit | 7b0f064dc4e7d33fe9bd927dae35ab0a4ef97b5f (patch) | |
tree | 216ca51df8580ec0be6af0a6d48389b776312862 /drawinglayer | |
parent | ae17566542777ad55620f7d03b3dbf559a51da3f (diff) |
tdf#109340 Improve performance by reducing matrix multiplication
Multiplication of two B2DHomMatrix with operator* is very CPU expensive,
because 24 of double-precision floating point multiplication
needs to be performed.
With this patch I have reduced Multiplication of matrix,
by creating combined Scale and Transform matrix at once.
It allows to reduce matrix multiplication by one,
and improve import time.
Change-Id: I85fde6354e458659a0214514c6e05b8e2ee04185
Reviewed-on: https://gerrit.libreoffice.org/45704
Reviewed-by: Patrick Jaap <patrick.jaap@tu-dresden.de>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/tools/emfphelperdata.cxx | 6 | ||||
-rw-r--r-- | drawinglayer/source/tools/emfphelperdata.hxx | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx index bd1f9e9b071a..a5dda5d2ad96 100644 --- a/drawinglayer/source/tools/emfphelperdata.cxx +++ b/drawinglayer/source/tools/emfphelperdata.cxx @@ -283,8 +283,8 @@ namespace emfplushelper // To evtl. correct and see where this came from, please compare with the implementations // of EmfPlusHelperData::MapToDevice and EmfPlusHelperData::Map* in prev versions maMapTransform = maWorldTransform; - maMapTransform *= basegfx::utils::createScaleB2DHomMatrix(100.0 * mnMmX / mnPixX, 100.0 * mnMmY / mnPixY); - maMapTransform *= basegfx::utils::createTranslateB2DHomMatrix(double(-mnFrameLeft), double(-mnFrameTop)); + maMapTransform *= basegfx::utils::createScaleTranslateB2DHomMatrix(100.0 * mnMmX / mnPixX, 100.0 * mnMmY / mnPixY, + double(-mnFrameLeft), double(-mnFrameTop)); maMapTransform *= maBaseTransform; } @@ -812,7 +812,7 @@ namespace emfplushelper { sal_uInt32 header, version; - rMS.ReadUInt32(header).ReadUInt32(version).ReadInt32(mnHDPI).ReadInt32(mnVDPI); + rMS.ReadUInt32(header).ReadUInt32(version).ReadUInt32(mnHDPI).ReadUInt32(mnVDPI); SAL_INFO("drawinglayer", "EMF+ Header"); SAL_INFO("drawinglayer", "EMF+\theader: 0x" << std::hex << header << " version: " << std::dec << version << " horizontal DPI: " << mnHDPI << " vertical DPI: " << mnVDPI << " dual: " << (flags & 1)); break; diff --git a/drawinglayer/source/tools/emfphelperdata.hxx b/drawinglayer/source/tools/emfphelperdata.hxx index 431e9b0a5c72..729835307633 100644 --- a/drawinglayer/source/tools/emfphelperdata.hxx +++ b/drawinglayer/source/tools/emfphelperdata.hxx @@ -198,8 +198,8 @@ namespace emfplushelper float mfPageScale; sal_Int32 mnOriginX; sal_Int32 mnOriginY; - sal_Int32 mnHDPI; - sal_Int32 mnVDPI; + sal_uInt32 mnHDPI; + sal_uInt32 mnVDPI; /* EMF+ emf header info */ sal_Int32 mnFrameLeft; |