desktop/source/lib/init.cxx                   |    6 -
 include/LibreOfficeKit/LibreOfficeKit.h       |    2 
 include/LibreOfficeKit/LibreOfficeKit.hxx     |    4 -
 include/vcl/ITiledRenderable.hxx              |    2 
 sd/qa/unit/tiledrendering/tiledrendering.cxx  |  103 +++++++++++++++++---------
 sd/source/ui/inc/SlideshowLayerRenderer.hxx   |    2 
 sd/source/ui/inc/unomodel.hxx                 |    2 
 sd/source/ui/tools/SlideshowLayerRenderer.cxx |   13 ++-
 sd/source/ui/unoidl/unomodel.cxx              |    4 -
 9 files changed, 88 insertions(+), 50 deletions(-)

New commits:
commit 7174a1a7b4cd52ad9e9f4fff887821e60e63693f
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Mon Dec 16 07:42:05 2024 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Mon Jan 6 17:09:14 2025 +0100

    lokit: add scale parameter to "renderNextSlideLayer"
    
    When client side change the device pixel ratio.
    
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: I6356ff2a2e6513ac835b5f02a755173aafe01dc9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178580
    Reviewed-by: Marco Cecchetti <marco.cecche...@collabora.com>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179825
    Tested-by: Jenkins

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 389225e4fc31..dc0f4fdd5e89 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1339,7 +1339,7 @@ static bool doc_createSlideRenderer(
 static void doc_postSlideshowCleanup(LibreOfficeKitDocument* pThis);
 
 static bool doc_renderNextSlideLayer(
-    LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
bIsBitmapLayer, char** pJsonMsg);
+    LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
bIsBitmapLayer, double* pScale, char** pJsonMsg);
 
 static void doc_setViewOption(LibreOfficeKitDocument* pDoc, const char* 
pOption, const char* pValue);
 
@@ -5807,7 +5807,7 @@ static void 
doc_postSlideshowCleanup(LibreOfficeKitDocument* pThis)
 }
 
 static bool doc_renderNextSlideLayer(
-    LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
pIsBitmapLayer, char** pJsonMessage)
+    LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
pIsBitmapLayer, double* pScale, char** pJsonMessage)
 {
     SolarMutexGuard aGuard;
     SetLastExceptionMsg();
@@ -5820,7 +5820,7 @@ static bool doc_renderNextSlideLayer(
     }
     OUString sJsonMesssage;
     bool bIsBitmapLayer = false;
-    bool bDone = pDoc->renderNextSlideLayer(pBuffer, bIsBitmapLayer, 
sJsonMesssage);
+    bool bDone = pDoc->renderNextSlideLayer(pBuffer, bIsBitmapLayer, *pScale, 
sJsonMesssage);
 
     if (pJsonMessage)
         *pJsonMessage = convertOUString(sJsonMesssage);
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h 
b/include/LibreOfficeKit/LibreOfficeKit.h
index b06b978db16c..4fa48395c19a 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -550,7 +550,7 @@ struct _LibreOfficeKitDocumentClass
 
     /// @see lok::Document::renderNextSlideLayer
     bool (*renderNextSlideLayer)(
-        LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
bIsBitmapLayer, char** pJsonMessage);
+        LibreOfficeKitDocument* pThis, unsigned char* pBuffer, bool* 
bIsBitmapLayer, double* pScale, char** pJsonMessage);
 
     /// @see lok::Document::setViewOption
     void (*setViewOption)(LibreOfficeKitDocument* pThis, const char* pOption, 
const char* pValue);
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx 
b/include/LibreOfficeKit/LibreOfficeKit.hxx
index b311fa03d1a9..f6f581c1ca43 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -932,9 +932,9 @@ public:
     }
 
     /// Render the slide layer
-    bool renderNextSlideLayer(unsigned char* pBuffer, bool* bIsBitmapLayer, 
char** pJsonMessage)
+    bool renderNextSlideLayer(unsigned char* pBuffer, bool* bIsBitmapLayer, 
double* pScale, char** pJsonMessage)
     {
-        return mpDoc->pClass->renderNextSlideLayer(mpDoc, pBuffer, 
bIsBitmapLayer, pJsonMessage);
+        return mpDoc->pClass->renderNextSlideLayer(mpDoc, pBuffer, 
bIsBitmapLayer, pScale, pJsonMessage);
     }
 
     /// Set named view options
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index 9e57fc53b0a0..fa42c077df5f 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -405,7 +405,7 @@ public:
     }
 
     /** render slideshow layer*/
-    virtual bool renderNextSlideLayer(unsigned char* /*pBuffer*/, bool& 
/*bIsBitmapLayer*/, OUString& /*rJsonMsg*/)
+    virtual bool renderNextSlideLayer(unsigned char* /*pBuffer*/, bool& 
/*bIsBitmapLayer*/, double& /*rScale*/, OUString& /*rJsonMsg*/)
     {
         return true;
     }
diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx 
b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 066d2306844c..0860126b6367 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -2837,15 +2837,17 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering)
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
         // TODO - check JSON content
 
@@ -2865,8 +2867,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering)
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
         // TODO - check JSON content
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
@@ -2886,8 +2889,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering)
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
     pXImpressDocument->postSlideshowCleanup();
 }
@@ -2918,15 +2922,17 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_WithFie
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
         // TODO - check JSON content
         debugWriteImageToFile(1, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
@@ -2946,8 +2952,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_WithFie
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
         // TODO - check JSON content
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
@@ -2967,8 +2974,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_WithFie
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
         // TODO - check JSON content
         debugWriteImageToFile(3, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
@@ -2988,8 +2996,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_WithFie
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     pXImpressDocument->postSlideshowCleanup();
@@ -3013,8 +3022,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"Background\"") >= 0);
@@ -3030,8 +3040,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"MasterPage\"") >= 0);
@@ -3047,8 +3058,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"MasterPage\"") >= 0);
@@ -3064,8 +3076,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3081,8 +3094,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3098,8 +3112,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     pXImpressDocument->postSlideshowCleanup();
@@ -3123,8 +3138,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"Background\"") >= 0);
@@ -3141,8 +3157,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"MasterPage\"") >= 0);
@@ -3156,8 +3173,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"MasterPage\"") >= 0);
@@ -3171,8 +3189,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3187,8 +3206,10 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
+
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3203,8 +3224,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3220,8 +3242,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3236,8 +3259,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
         CPPUNIT_ASSERT(bIsBitmapLayer);
 
         CPPUNIT_ASSERT(rJsonMsg.indexOf(u"\"group\": \"DrawPage\"") >= 0);
@@ -3253,8 +3277,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     pXImpressDocument->postSlideshowCleanup();
@@ -3279,8 +3304,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(1, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3288,8 +3314,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3297,8 +3324,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(3, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3306,8 +3334,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(4, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3315,8 +3344,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(5, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3325,8 +3355,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     pXImpressDocument->postSlideshowCleanup();
@@ -3351,8 +3382,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(1, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3360,8 +3392,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(2, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3369,8 +3402,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        
CPPUNIT_ASSERT(!pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
 
         debugWriteImageToFile(3, pBuffer, nViewWidth, nViewHeight, 
rJsonMsg.toUtf8().getStr());
     }
@@ -3379,8 +3413,9 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, 
testSlideshowLayeredRendering_Animati
     {
         std::vector<sal_uInt8> pBuffer(nViewWidth * nViewHeight * 4);
         bool bIsBitmapLayer = false;
+        double dScale = 1.0;
         OUString rJsonMsg;
-        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, rJsonMsg));
+        CPPUNIT_ASSERT(pXImpressDocument->renderNextSlideLayer(pBuffer.data(), 
bIsBitmapLayer, dScale, rJsonMsg));
     }
 
     pXImpressDocument->postSlideshowCleanup();
diff --git a/sd/source/ui/inc/SlideshowLayerRenderer.hxx 
b/sd/source/ui/inc/SlideshowLayerRenderer.hxx
index e83eae573a40..48490c981512 100644
--- a/sd/source/ui/inc/SlideshowLayerRenderer.hxx
+++ b/sd/source/ui/inc/SlideshowLayerRenderer.hxx
@@ -185,7 +185,7 @@ public:
      * The properties of the layer are written to the input string in JSON 
format.
      *
      * @returns false, if nothing was rendered and rendering is done */
-    bool render(unsigned char* pBuffer, OString& rJsonMsg);
+    bool render(unsigned char* pBuffer, double& scale, OString& rJsonMsg);
 };
 
 } // end of namespace sd
diff --git a/sd/source/ui/inc/unomodel.hxx b/sd/source/ui/inc/unomodel.hxx
index 4e4019db3147..7a299c54c280 100644
--- a/sd/source/ui/inc/unomodel.hxx
+++ b/sd/source/ui/inc/unomodel.hxx
@@ -308,7 +308,7 @@ public:
     /// @see vcl::ITiledRenderable::postSlideshowCleanup().
     SD_DLLPUBLIC void postSlideshowCleanup() override;
     /// @see vcl::ITiledRenderable::renderNextSlideLayer().
-    SD_DLLPUBLIC bool renderNextSlideLayer(unsigned char* pBuffer, bool& 
bIsBitmapLayer, OUString& rJsonMsg) override;
+    SD_DLLPUBLIC bool renderNextSlideLayer(unsigned char* pBuffer, bool& 
bIsBitmapLayer, double& rScale, OUString& rJsonMsg) override;
 
     rtl::Reference< SdDrawPagesAccess > getSdDrawPages();
 
diff --git a/sd/source/ui/tools/SlideshowLayerRenderer.cxx 
b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
index 19ec3020829d..43b0e0455f7d 100644
--- a/sd/source/ui/tools/SlideshowLayerRenderer.cxx
+++ b/sd/source/ui/tools/SlideshowLayerRenderer.cxx
@@ -49,10 +49,13 @@ struct RenderContext
     SdrModel& mrModel;
 
     EEControlBits mnSavedControlBits;
+    Fraction maScale;
     ScopedVclPtrInstance<VirtualDevice> maVirtualDevice;
 
-    RenderContext(unsigned char* pBuffer, SdrModel& rModel, SdrPage& rPage, 
Size const& rSlideSize)
+    RenderContext(unsigned char* pBuffer, SdrModel& rModel, SdrPage& rPage, 
Size const& rSlideSize,
+                  const Fraction& rScale)
         : mrModel(rModel)
+        , maScale(rScale)
         , maVirtualDevice(DeviceFormat::WITHOUT_ALPHA)
     {
         // Turn off spelling
@@ -62,8 +65,8 @@ struct RenderContext
 
         maVirtualDevice->SetBackground(Wallpaper(COL_TRANSPARENT));
 
-        maVirtualDevice->SetOutputSizePixelScaleOffsetAndLOKBuffer(rSlideSize, 
Fraction(1.0),
-                                                                   Point(), 
pBuffer);
+        maVirtualDevice->SetOutputSizePixelScaleOffsetAndLOKBuffer(rSlideSize, 
maScale, Point(),
+                                                                   pBuffer);
         Size aPageSize(rPage.GetSize());
 
         MapMode aMapMode(MapUnit::Map100thMM);
@@ -598,14 +601,14 @@ void SlideshowLayerRenderer::writeJSON(OString& rJsonMsg)
     maRenderState.incrementIndex();
 }
 
-bool SlideshowLayerRenderer::render(unsigned char* pBuffer, OString& rJsonMsg)
+bool SlideshowLayerRenderer::render(unsigned char* pBuffer, double& rScale, 
OString& rJsonMsg)
 {
     // We want to render one pass (one iteration through objects)
 
     // Reset state for this pass
     maRenderState.resetPass();
 
-    RenderContext aRenderContext(pBuffer, mrModel, mrPage, maSlideSize);
+    RenderContext aRenderContext(pBuffer, mrModel, mrPage, maSlideSize, 
Fraction(rScale));
     createViewAndDraw(aRenderContext);
 
     // Check if we are done rendering all passes and there is no more output
diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 809c2a982db1..b5fb118a2957 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -4587,7 +4587,7 @@ void SdXImpressDocument::postSlideshowCleanup()
     pViewSh->destroyXSlideShowInstance();
 }
 
-bool SdXImpressDocument::renderNextSlideLayer(unsigned char* pBuffer, bool& 
bIsBitmapLayer, OUString& rJsonMsg)
+bool SdXImpressDocument::renderNextSlideLayer(unsigned char* pBuffer, bool& 
bIsBitmapLayer, double& rScale, OUString& rJsonMsg)
 {
     bool bDone = true;
 
@@ -4595,7 +4595,7 @@ bool SdXImpressDocument::renderNextSlideLayer(unsigned 
char* pBuffer, bool& bIsB
         return bDone;
 
     OString sMsg;
-    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, sMsg);
+    bool bOK = mpSlideshowLayerRenderer->render(pBuffer, rScale, sMsg);
 
     if (bOK)
     {

Reply via email to