writerfilter/source/dmapper/GraphicImport.cxx |   27 ++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

New commits:
commit 4f93234639101fd018aba3f6e6f091f0470e0407
Author:     Regina Henschel <rb.hensc...@t-online.de>
AuthorDate: Fri Jul 16 02:09:10 2021 +0200
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Fri Jul 16 12:16:17 2021 +0200

    use common unit converter in docx import of wrap contour
    
    This is a follow up to commit af99c01570adc0c9205e1650d10866f80bb8118a
    to address the review comment.
    
    Change-Id: Iac0a6cf9cb29273229833465cd2d84cdbcc4a3d0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119004
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/writerfilter/source/dmapper/GraphicImport.cxx 
b/writerfilter/source/dmapper/GraphicImport.cxx
index 69bbc94f1225..fde309061940 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -78,6 +78,7 @@
 #include <basegfx/numeric/ftools.hxx>
 #include <basegfx/polygon/b2dpolypolygontools.hxx>
 #include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <o3tl/unit_conversion.hxx>
 
 using namespace css;
 
@@ -1080,8 +1081,9 @@ void GraphicImport::lcl_attribute(Id nName, Value& rValue)
                             if (pShape)
                             {
                                 basegfx::B2DPolyPolygon aShapePolygon = 
pShape->TakeXorPoly(); // Twips
-                                constexpr double fTwips2Hmm = 127.0 / 72.0;
-                                aMatrix = 
basegfx::utils::createScaleB2DHomMatrix(fTwips2Hmm, fTwips2Hmm);
+                                aMatrix = 
basegfx::utils::createScaleB2DHomMatrix(
+                                    o3tl::convert(1.0, o3tl::Length::twip, 
o3tl::Length::mm100),
+                                    o3tl::convert(1.0, o3tl::Length::twip, 
o3tl::Length::mm100));
                                 aShapePolygon.transform(aMatrix);
                                 // Wrap polygon treats left/top of shape as 
origin, shift shape polygon accordingly
                                 aMatrix = 
basegfx::utils::createTranslateB2DHomMatrix(
@@ -1104,20 +1106,29 @@ void GraphicImport::lcl_attribute(Id nName, Value& 
rValue)
                             // Add difference between shape and wrap range to 
margin and remember
                             // difference in Twips for export.
                             comphelper::SequenceAsHashMap aAnchorDistDiff;
-                            constexpr double fHmm2Twips = 72.0 / 127.0;
+
                             const double fTopDiff = aShapeRange.getMinY() - 
aB2DWrapRange.getMinY();
                             m_pImpl->nTopMargin += basegfx::fround(fTopDiff);
-                            aAnchorDistDiff["distTDiff"] <<= 
basegfx::fround(fTopDiff * fHmm2Twips);
+                            aAnchorDistDiff["distTDiff"] <<= basegfx::fround(
+                                o3tl::convert(fTopDiff, o3tl::Length::mm100, 
o3tl::Length::twip));
+
                             const double fBottomDiff = aB2DWrapRange.getMaxY() 
- aShapeRange.getMaxY();
                             m_pImpl->nBottomMargin += 
basegfx::fround(fBottomDiff);
-                            aAnchorDistDiff["distBDiff"] <<= 
basegfx::fround(fBottomDiff * fHmm2Twips);
+                            aAnchorDistDiff["distBDiff"] <<= basegfx::fround(
+                                o3tl::convert(fBottomDiff, 
o3tl::Length::mm100, o3tl::Length::twip));
+
                             const double fLeftDiff = aShapeRange.getMinX() - 
aB2DWrapRange.getMinX();
                             m_pImpl->nLeftMargin += basegfx::fround(fLeftDiff);
-                            aAnchorDistDiff["distLDiff"] <<= 
basegfx::fround(fLeftDiff * fHmm2Twips);
+                            aAnchorDistDiff["distLDiff"] <<= basegfx::fround(
+                                o3tl::convert(fLeftDiff, o3tl::Length::mm100, 
o3tl::Length::twip));
+
                             const double fRightDiff = aB2DWrapRange.getMaxX() 
- aShapeRange.getMaxX();
                             m_pImpl->nRightMargin += 
basegfx::fround(fRightDiff);
-                            aAnchorDistDiff["distRDiff"] <<= 
basegfx::fround(fRightDiff * fHmm2Twips);
-                            m_pImpl->m_aInteropGrabBag["AnchorDistDiff"] <<= 
aAnchorDistDiff.getAsConstPropertyValueList();
+                            aAnchorDistDiff["distRDiff"] <<= basegfx::fround(
+                                o3tl::convert(fRightDiff, o3tl::Length::mm100, 
o3tl::Length::twip));
+
+                            m_pImpl->m_aInteropGrabBag["AnchorDistDiff"]
+                                <<= 
aAnchorDistDiff.getAsConstPropertyValueList();
 
                             // FixMe: tdf#141880. LibreOffice cannot handle 
negative horizontal margin in contour wrap
                             if (m_pImpl->nLeftMargin < 0)
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to