Blame SOURCES/0258-sc-lok-fix-rounding-errors-with-non-100-zoom.patch

135360
From 9d9749fb86461eefdb2bab01de003409b236dde0 Mon Sep 17 00:00:00 2001
135360
From: Miklos Vajna <vmiklos@collabora.co.uk>
135360
Date: Mon, 2 Nov 2015 15:18:09 +0100
135360
Subject: [PATCH 258/398] sc lok: fix rounding errors with non-100% zoom
135360
135360
There were two problems here:
135360
135360
1) ScTabView::getRowColumnHeaders() did not expose twip values directly,
135360
but used ScRow/ColBar::GetEntrySize(), which does a twip -> pixel
135360
conversion, and then converted it back to twip. Avoid this unnecessary
135360
roundtrip.
135360
135360
2) ScViewData::ToPixel() trunaces the resulting float to an integer, so
135360
if the result is e.g. 67.7 pixels, then Calc handled that as 67, but
135360
gtktiledviewer rounded that up to 68, resulting in non-matching headers
135360
for the rendered tiles.
135360
135360
Change-Id: Ie6ed1ea923a423d1526eeb235b7b87106fd2f20b
135360
(cherry picked from commit 861b28b88909ec39fc83fccc0ab23d288128aa0e)
135360
---
135360
 libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx |  4 ++--
135360
 sc/source/ui/view/tabview.cxx                       | 11 ++++-------
135360
 2 files changed, 6 insertions(+), 9 deletions(-)
135360
135360
diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
135360
index c6821065d147..7e6379124678 100644
135360
--- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
135360
+++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx
135360
@@ -256,7 +256,7 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* pDocView, GdkEventConfi
135360
         rWindow.m_pRowBar->m_aHeaders.clear();
135360
         for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("rows"))
135360
         {
135360
-            int nSize = std::round(lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), std::atof(rValue.second.get<std::string>("size").c_str())));
135360
+            int nSize = lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), std::atof(rValue.second.get<std::string>("size").c_str()));
135360
             Header aHeader(nSize, rValue.second.get<std::string>("text"));
135360
             rWindow.m_pRowBar->m_aHeaders.push_back(aHeader);
135360
         }
135360
@@ -266,7 +266,7 @@ gboolean TiledRowColumnBar::docConfigureEvent(GtkWidget* pDocView, GdkEventConfi
135360
         rWindow.m_pColumnBar->m_aHeaders.clear();
135360
         for (boost::property_tree::ptree::value_type& rValue : aTree.get_child("columns"))
135360
         {
135360
-            int nSize = std::round(lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), std::atof(rValue.second.get<std::string>("size").c_str())));
135360
+            int nSize = lok_doc_view_twip_to_pixel(LOK_DOC_VIEW(pDocView), std::atof(rValue.second.get<std::string>("size").c_str()));
135360
             Header aHeader(nSize, rValue.second.get<std::string>("text"));
135360
             rWindow.m_pColumnBar->m_aHeaders.push_back(aHeader);
135360
         }
135360
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
135360
index f2f6179eaaf9..2d886bca6003 100644
135360
--- a/sc/source/ui/view/tabview.cxx
135360
+++ b/sc/source/ui/view/tabview.cxx
135360
@@ -2313,15 +2313,12 @@ OUString ScTabView::getRowColumnHeaders()
135360
     SCROW nEndRow = 0;
135360
     pDoc->GetTiledRenderingArea(aViewData.GetTabNo(), nEndCol, nEndRow);
135360
 
135360
-    double nPPTX = aViewData.GetPPTX();
135360
-    double nPPTY = aViewData.GetPPTY();
135360
-
135360
     boost::property_tree::ptree aRows;
135360
     for (SCROW nRow = 0; nRow <= nEndRow; ++nRow)
135360
     {
135360
         boost::property_tree::ptree aRow;
135360
-        sal_uInt16 nSize = pRowBar[SC_SPLIT_BOTTOM]->GetEntrySize(nRow);
135360
-        aRow.put("size", OString::number(nSize / nPPTY).getStr());
135360
+        sal_uInt16 nSize = pDoc->GetOriginalHeight(nRow, aViewData.GetTabNo());
135360
+        aRow.put("size", OString::number(nSize).getStr());
135360
         OUString aText = pRowBar[SC_SPLIT_BOTTOM]->GetEntryText(nRow);
135360
         aRow.put("text", aText.toUtf8().getStr());
135360
         aRows.push_back(std::make_pair("", aRow));
135360
@@ -2331,8 +2328,8 @@ OUString ScTabView::getRowColumnHeaders()
135360
     for (SCCOL nCol = 0; nCol <= nEndCol; ++nCol)
135360
     {
135360
         boost::property_tree::ptree aCol;
135360
-        sal_uInt16 nSize = pColBar[SC_SPLIT_LEFT]->GetEntrySize(nCol);
135360
-        aCol.put("size", OString::number(nSize / nPPTX).getStr());
135360
+        sal_uInt16 nSize = pDoc->GetColWidth(nCol, aViewData.GetTabNo());
135360
+        aCol.put("size", OString::number(nSize).getStr());
135360
         OUString aText = pColBar[SC_SPLIT_LEFT]->GetEntryText(nCol);
135360
         aCol.put("text", aText.toUtf8().getStr());
135360
         aCols.push_back(std::make_pair("", aCol));
135360
-- 
135360
2.12.0
135360