summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2017-12-01 23:11:45 +0100
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-12-08 13:00:18 +0100
commit6f609433730ecdbc23096b9362df596a0b703d37 (patch)
tree427f15fa6ebfeb8e0ee6917ee94b0be6f89ef5ed
parent4328cfc535ddbfe70fa9c5f631d84c3fe250dd19 (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/45828 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Patrick Jaap <patrick.jaap@tu-dresden.de> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--drawinglayer/source/tools/emfphelperdata.cxx6
-rw-r--r--drawinglayer/source/tools/emfphelperdata.hxx4
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;