[Libreoffice-commits] core.git: comphelper/source desktop/source include/comphelper sc/source

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Wed Nov 6 00:20:13 UTC 2019


 comphelper/source/misc/lok.cxx |    2 +-
 desktop/source/lib/init.cxx    |    8 +-------
 include/comphelper/lok.hxx     |    4 ++--
 sc/source/ui/unoobj/docuno.cxx |   10 +++++-----
 sc/source/ui/view/gridwin4.cxx |   31 +++++++++----------------------
 5 files changed, 18 insertions(+), 37 deletions(-)

New commits:
commit 854caac9191b0d6a32fc1d4c9d110f11e7d1a311
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Mon Oct 28 20:43:46 2019 +0000
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Wed Nov 6 01:18:53 2019 +0100

    Revert "sc lok: Implement hi-dpi and zoom for spreadsheets."
    
    This reverts commit 498dceb43f870bf9e380f1f87e99c6ccadf1963c.
    
    Change-Id: Iadb9da47cf8c9a57385530ab888d55169db7639a
    Reviewed-on: https://gerrit.libreoffice.org/82088
    Tested-by: Jenkins
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/comphelper/source/misc/lok.cxx b/comphelper/source/misc/lok.cxx
index b18314d155e5..4c1337dd927e 100644
--- a/comphelper/source/misc/lok.cxx
+++ b/comphelper/source/misc/lok.cxx
@@ -40,7 +40,7 @@ static Compat g_eCompatFlags(Compat::none);
 
 static LanguageTag g_aLanguageTag("en-US", true);
 
-/// Scaling of the cairo or CoreGraphics canvas painting for HiDPI or zooming in Calc.
+/// Scaling of the cairo canvas painting for hi-dpi
 static double g_fDPIScale(1.0);
 
 /// List of <viewid, bMobile> pairs
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index ef201b32061e..5b5b301cdee9 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2720,15 +2720,9 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     // would do - because that one is trying to fit the lines between cells to integer multiples of
     // pixels.
     comphelper::ScopeGuard dpiScaleGuard([]() { comphelper::LibreOfficeKit::setDPIScale(1.0); });
-    double fDPIScaleX = 1.0;
-    if (doc_getDocumentType(pThis) == LOK_DOCTYPE_SPREADSHEET)
-    {
-        fDPIScaleX = (nCanvasWidth * 3840.0) / (256.0 * nTileWidth);
-        assert(fabs(fDPIScaleX - ((nCanvasHeight * 3840.0) / (256.0 * nTileHeight))) < 0.0001);
-        comphelper::LibreOfficeKit::setDPIScale(fDPIScaleX);
-    }
 
 #if defined(IOS)
+    double fDPIScaleX = 1.0;
     paintTileIOS(pThis, pBuffer, nCanvasWidth, nCanvasHeight, fDPIScaleX, nTilePosX, nTilePosY, nTileWidth, nTileHeight);
 #else
     ScopedVclPtrInstance< VirtualDevice > pDevice(DeviceFormat::DEFAULT);
diff --git a/include/comphelper/lok.hxx b/include/comphelper/lok.hxx
index 22d2c6931ab3..b4658913f0d1 100644
--- a/include/comphelper/lok.hxx
+++ b/include/comphelper/lok.hxx
@@ -65,9 +65,9 @@ COMPHELPER_DLLPUBLIC void setTiledPainting(bool bTiledPainting);
 COMPHELPER_DLLPUBLIC bool isDialogPainting();
 /// Set if we are painting the dialog.
 COMPHELPER_DLLPUBLIC void setDialogPainting(bool bDialogPainting);
-/// Set the DPI scale for rendering for HiDPI displays.  Used also for zoom in Calc.
+/// Set the DPI scale for rendering for HiDPI displays.
 COMPHELPER_DLLPUBLIC void setDPIScale(double fDPIScale);
-/// Get the DPI scale for rendering for HiDPI displays.  Used also for zoom in Calc.
+/// Get the DPI scale for rendering for HiDPI displays.
 COMPHELPER_DLLPUBLIC double getDPIScale();
 /// Set if we want no annotations rendering
 COMPHELPER_DLLPUBLIC void setTiledAnnotations(bool bTiledAnnotations);
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 689b785ab982..9b0ae9763001 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -888,12 +888,12 @@ bool ScModelObj::isMimeTypeSupported()
     return EditEngine::HasValidData(aDataHelper.GetTransferable());
 }
 
-void ScModelObj::setClientZoom(int /*nTilePixelWidth_*/, int /*nTilePixelHeight_*/, int /*nTileTwipWidth_*/, int /*nTileTwipHeight_*/)
+void ScModelObj::setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, int nTileTwipWidth_, int nTileTwipHeight_)
 {
-    mnTilePixelWidth = 256;
-    mnTilePixelHeight = 256;
-    mnTileTwipWidth = mnTilePixelWidth * TWIPS_PER_PIXEL;
-    mnTileTwipHeight = mnTilePixelHeight * TWIPS_PER_PIXEL;
+    mnTilePixelWidth = nTilePixelWidth_;
+    mnTilePixelHeight = nTilePixelHeight_;
+    mnTileTwipWidth = nTileTwipWidth_;
+    mnTileTwipHeight = nTileTwipHeight_;
 }
 
 OUString ScModelObj::getRowColumnHeaders(const tools::Rectangle& rRectangle)
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 76041fdc5b7a..9f924931b09b 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1129,30 +1129,17 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
     // coords only, and avoid all the SetMapMode()'s.
     // Similarly to Writer, we should set the mapmode once on the rDevice, and
     // not care about any zoom settings.
-    //
-    // But until that happens, we actually draw everything at 100%, and only
-    // set cairo's or CoreGraphic's scale factor accordingly, so that everything
-    // is painted  bigger or smaller. This is different to what Calc's internal
-    // scaling would do - because that one is trying to fit the lines between
-    // cells to integer multiples of pixels.
-    //
-    // See also desktop/source/lib/init.cxx for details, where we have to set
-    // the stuff accordingly for the VirtualDevice creation.
-
-    // page break zoom, and aLogicMode in ScViewData - hardcode that to what
-    // we mean as 100% (256px tiles meaning 3840 twips)
-    Fraction aFracX(long(256 * TWIPS_PER_PIXEL), 3840);
-    Fraction aFracY(long(256 * TWIPS_PER_PIXEL), 3840);
-    pViewData->SetZoom(aFracX, aFracY, true);
 
-    // Cairo or CoreGraphics scales for us, we have to compensate for that,
-    // otherwise we are painting too far away
-    const double fDPIScale = comphelper::LibreOfficeKit::getDPIScale();
+    Fraction aFracX(long(nOutputWidth * TWIPS_PER_PIXEL), nTileWidth);
+    Fraction aFracY(long(nOutputHeight * TWIPS_PER_PIXEL), nTileHeight);
+
+    // page break zoom, and aLogicMode in ScViewData
+    pViewData->SetZoom(aFracX, aFracY, true);
 
-    const double fTilePosXPixel = static_cast<double>(nTilePosX) * nOutputWidth / (nTileWidth * fDPIScale);
-    const double fTilePosYPixel = static_cast<double>(nTilePosY) * nOutputHeight / (nTileHeight * fDPIScale);
-    const double fTileBottomPixel = static_cast<double>(nTilePosY + nTileHeight) * nOutputHeight / (nTileHeight * fDPIScale);
-    const double fTileRightPixel = static_cast<double>(nTilePosX + nTileWidth) * nOutputWidth / (nTileWidth * fDPIScale);
+    const double fTilePosXPixel = static_cast<double>(nTilePosX) * nOutputWidth / nTileWidth;
+    const double fTilePosYPixel = static_cast<double>(nTilePosY) * nOutputHeight / nTileHeight;
+    const double fTileBottomPixel = static_cast<double>(nTilePosY + nTileHeight) * nOutputHeight / nTileHeight;
+    const double fTileRightPixel = static_cast<double>(nTilePosX + nTileWidth) * nOutputWidth / nTileWidth;
 
     SCTAB nTab = pViewData->GetTabNo();
     ScDocument* pDoc = pViewData->GetDocument();


More information about the Libreoffice-commits mailing list