sc/source/ui/view/output.cxx |   25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

New commits:
commit 67c9d3d30308b4353e27eb4a75ba72ad2f6081c3
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Mon Jan 10 14:43:38 2022 +0900
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Jan 13 10:06:26 2022 +0100

    sc: fix cond. format icon size, when we work with pixels
    
    This is the case when the device is bWorksInPixels is true, which
    is the case when running LOKit.
    
    (cherry picked from commit b59e7800b777332ba3883ff1ab0509ffd58cff2a)
    
    Change-Id: If7293d95589f52d46f24bc7254f1eeb6f50729b4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128226
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index 9948b666eebf..3585908d7e07 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -906,7 +906,7 @@ const BitmapEx& getIcon(sc::IconSetBitmapMap & 
rIconSetBitmapMap, ScIconSetType
 }
 
 void drawIconSets(vcl::RenderContext& rRenderContext, const ScIconSetInfo* 
pOldIconSetInfo, const tools::Rectangle& rRect, long nOneX, long nOneY,
-        sc::IconSetBitmapMap & rIconSetBitmapMap)
+        sc::IconSetBitmapMap & rIconSetBitmapMap, bool bWorksInPixels)
 {
     ScIconSetType eType = pOldIconSetInfo->eIconSetType;
     sal_Int32 nIndex = pOldIconSetInfo->nIconIndex;
@@ -915,7 +915,18 @@ void drawIconSets(vcl::RenderContext& rRenderContext, 
const ScIconSetInfo* pOldI
     long aHeight = 300;
 
     if (pOldIconSetInfo->mnHeight)
-        aHeight = convertTwipToMm100(pOldIconSetInfo->mnHeight);
+    {
+        if (bWorksInPixels)
+        {
+            aHeight = rRenderContext.LogicToPixel(Size(0, 
pOldIconSetInfo->mnHeight), MapMode(MapUnit::MapTwip)).Height();
+            if (comphelper::LibreOfficeKit::isActive())
+            {
+                aHeight *= comphelper::LibreOfficeKit::getDPIScale();
+            }
+        }
+        else
+            aHeight = convertTwipToMm100(pOldIconSetInfo->mnHeight);
+    }
 
     Size aSize = rIcon.GetSizePixel();
     double fRatio = aSize.Width() / aSize.Height();
@@ -930,7 +941,7 @@ void drawIconSets(vcl::RenderContext& rRenderContext, const 
ScIconSetInfo* pOldI
 void drawCells(vcl::RenderContext& rRenderContext, boost::optional<Color> 
const & pColor, const SvxBrushItem* pBackground, boost::optional<Color>& 
pOldColor, const SvxBrushItem*& pOldBackground,
         tools::Rectangle& rRect, long nPosX, long nLayoutSign, long nOneX, 
long nOneY, const ScDataBarInfo* pDataBarInfo, const ScDataBarInfo*& 
pOldDataBarInfo,
         const ScIconSetInfo* pIconSetInfo, const ScIconSetInfo*& 
pOldIconSetInfo,
-        sc::IconSetBitmapMap & rIconSetBitmapMap)
+        sc::IconSetBitmapMap & rIconSetBitmapMap, bool bWorksInPixels)
 {
     long nSignedOneX = nOneX * nLayoutSign;
     // need to paint if old color scale has been used and now
@@ -947,7 +958,7 @@ void drawCells(vcl::RenderContext& rRenderContext, 
boost::optional<Color> const
         if( pOldDataBarInfo )
             drawDataBars(rRenderContext, pOldDataBarInfo, rRect, nOneX, nOneY);
         if( pOldIconSetInfo )
-            drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, 
rIconSetBitmapMap);
+            drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, 
rIconSetBitmapMap, bWorksInPixels);
 
         rRect.SetLeft( nPosX - nSignedOneX );
     }
@@ -967,7 +978,7 @@ void drawCells(vcl::RenderContext& rRenderContext, 
boost::optional<Color> const
         if( pOldDataBarInfo )
             drawDataBars(rRenderContext, pOldDataBarInfo, rRect, nOneX, nOneY);
         if( pOldIconSetInfo )
-            drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, 
rIconSetBitmapMap);
+            drawIconSets(rRenderContext, pOldIconSetInfo, rRect, nOneX, nOneY, 
rIconSetBitmapMap, bWorksInPixels);
 
         rRect.SetLeft( nPosX - nSignedOneX );
     }
@@ -1130,7 +1141,7 @@ void ScOutputData::DrawBackground(vcl::RenderContext& 
rRenderContext)
                     if (bWorksInPixels)
                         nPosXLogic = rRenderContext.PixelToLogic(Point(nPosX, 
0)).X();
 
-                    drawCells(rRenderContext, pColor, pBackground, pOldColor, 
pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic, 
pDataBarInfo, pOldDataBarInfo, pIconSetInfo, pOldIconSetInfo, 
mpDoc->GetIconSetBitmapMap());
+                    drawCells(rRenderContext, pColor, pBackground, pOldColor, 
pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, nOneYLogic, 
pDataBarInfo, pOldDataBarInfo, pIconSetInfo, pOldIconSetInfo, 
mpDoc->GetIconSetBitmapMap(), bWorksInPixels);
 
                     // extend for all merged cells
                     nMergedCols = 1;
@@ -1154,7 +1165,7 @@ void ScOutputData::DrawBackground(vcl::RenderContext& 
rRenderContext)
                 if (bWorksInPixels)
                     nPosXLogic = rRenderContext.PixelToLogic(Point(nPosX, 
0)).X();
 
-                drawCells(rRenderContext, boost::optional<Color>(), nullptr, 
pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, 
nOneYLogic, nullptr, pOldDataBarInfo, nullptr, pOldIconSetInfo, 
mpDoc->GetIconSetBitmapMap());
+                drawCells(rRenderContext, boost::optional<Color>(), nullptr, 
pOldColor, pOldBackground, aRect, nPosXLogic, nLayoutSign, nOneXLogic, 
nOneYLogic, nullptr, pOldDataBarInfo, nullptr, pOldIconSetInfo, 
mpDoc->GetIconSetBitmapMap(), bWorksInPixels);
 
                 nArrY += nSkip;
             }

Reply via email to