sfx2/inc/SfxRedactionHelper.hxx        |    6 ++++--
 sfx2/source/doc/SfxRedactionHelper.cxx |   10 +++++++---
 sfx2/source/doc/objserv.cxx            |    5 +++--
 3 files changed, 14 insertions(+), 7 deletions(-)

New commits:
commit 26c1fd655ac8362d44caf8423df0429c0e9ce7f2
Author:     Muhammet Kara <muhammet.k...@collabora.com>
AuthorDate: Wed May 1 18:46:47 2019 +0300
Commit:     Muhammet Kara <muhammet.k...@collabora.com>
CommitDate: Mon Jun 17 22:53:48 2019 +0200

    tdf#125063: Don't depend on content size for Page sizing
    
    During redaction of Calc sheets
    
    Change-Id: If2a4f71c77a687a74b8f823152b76d2a7e2e21da
    Reviewed-on: https://gerrit.libreoffice.org/71627
    Tested-by: Jenkins
    Reviewed-by: Muhammet Kara <muhammet.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/74222
    Tested-by: Muhammet Kara <muhammet.k...@collabora.com>

diff --git a/sfx2/inc/SfxRedactionHelper.hxx b/sfx2/inc/SfxRedactionHelper.hxx
index d338143c608e..1cd653650557 100644
--- a/sfx2/inc/SfxRedactionHelper.hxx
+++ b/sfx2/inc/SfxRedactionHelper.hxx
@@ -15,6 +15,7 @@
 
 #include <sal/types.h>
 #include <rtl/ustring.hxx>
+#include <tools/gen.hxx>
 
 #include <vector>
 
@@ -47,7 +48,7 @@ public:
      * and pushes into the given vector.
      * */
     static void getPageMetaFilesFromDoc(std::vector<GDIMetaFile>& aMetaFiles,
-                                        const sal_Int32& nPages,
+                                        std::vector<::Size>& aPageSizes, const 
sal_Int32& nPages,
                                         DocumentToGraphicRenderer& aRenderer, 
bool bIsWriter,
                                         bool bIsCalc);
     /*
@@ -55,7 +56,8 @@ public:
      * and inserts the shapes into the newly created draw pages.
      * */
     static void addPagesToDraw(uno::Reference<XComponent>& xComponent, const 
sal_Int32& nPages,
-                               const std::vector<GDIMetaFile>& aMetaFiles, 
bool bIsCalc);
+                               const std::vector<GDIMetaFile>& aMetaFiles,
+                               const std::vector<::Size>& aPageSizes, bool 
bIsCalc);
     /*
      * Makes the Redaction toolbar visible to the user.
      * Meant to be called after converting a document to a Draw doc
diff --git a/sfx2/source/doc/SfxRedactionHelper.cxx 
b/sfx2/source/doc/SfxRedactionHelper.cxx
index 732b56092da2..b1743e5ba20b 100644
--- a/sfx2/source/doc/SfxRedactionHelper.cxx
+++ b/sfx2/source/doc/SfxRedactionHelper.cxx
@@ -61,6 +61,7 @@ OUString SfxRedactionHelper::getStringParam(const SfxRequest& 
rReq, const sal_uI
 }
 
 void SfxRedactionHelper::getPageMetaFilesFromDoc(std::vector<GDIMetaFile>& 
aMetaFiles,
+                                                 std::vector<::Size>& 
aPageSizes,
                                                  const sal_Int32& nPages,
                                                  DocumentToGraphicRenderer& 
aRenderer,
                                                  bool bIsWriter, bool bIsCalc)
@@ -76,6 +77,8 @@ void 
SfxRedactionHelper::getPageMetaFilesFromDoc(std::vector<GDIMetaFile>& aMeta
         // FIXME: This is a temporary hack. Need to figure out a proper way to 
derive this scale factor.
         ::Size aTargetSize(aDocumentSizePixel.Width() * 1.23, 
aDocumentSizePixel.Height() * 1.23);
 
+        aPageSizes.push_back(aLogic);
+
         Graphic aGraphic = aRenderer.renderToGraphic(nPage, 
aDocumentSizePixel, aTargetSize,
                                                      COL_TRANSPARENT, true);
         auto& rGDIMetaFile = 
const_cast<GDIMetaFile&>(aGraphic.GetGDIMetaFile());
@@ -109,7 +112,8 @@ void 
SfxRedactionHelper::getPageMetaFilesFromDoc(std::vector<GDIMetaFile>& aMeta
 
 void SfxRedactionHelper::addPagesToDraw(uno::Reference<XComponent>& xComponent,
                                         const sal_Int32& nPages,
-                                        const std::vector<GDIMetaFile>& 
aMetaFiles, bool bIsCalc)
+                                        const std::vector<GDIMetaFile>& 
aMetaFiles,
+                                        const std::vector<::Size>& aPageSizes, 
bool bIsCalc)
 {
     // Access the draw pages
     uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier(xComponent, 
uno::UNO_QUERY);
@@ -122,8 +126,8 @@ void 
SfxRedactionHelper::addPagesToDraw(uno::Reference<XComponent>& xComponent,
         GDIMetaFile rGDIMetaFile = aMetaFiles[nPage];
         Graphic aGraphic(rGDIMetaFile);
 
-        sal_Int32 nPageHeight(rGDIMetaFile.GetPrefSize().Height());
-        sal_Int32 nPageWidth(rGDIMetaFile.GetPrefSize().Width());
+        sal_Int32 nPageHeight(aPageSizes[nPage].Height());
+        sal_Int32 nPageWidth(aPageSizes[nPage].Width());
 
         uno::Reference<graphic::XGraphic> xGraph = aGraphic.GetXGraphic();
         uno::Reference<drawing::XDrawPage> xPage = 
xDrawPages->insertNewByIndex(nPage);
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index a34ad5c24113..72d46d50e217 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -558,9 +558,10 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
 
             sal_Int32 nPages = aRenderer.getPageCount();
             std::vector< GDIMetaFile > aMetaFiles;
+            std::vector< ::Size > aPageSizes;
 
             // Convert the pages of the document to gdimetafiles
-            SfxRedactionHelper::getPageMetaFilesFromDoc(aMetaFiles, nPages, 
aRenderer, bIsWriter, bIsCalc);
+            SfxRedactionHelper::getPageMetaFilesFromDoc(aMetaFiles, 
aPageSizes, nPages, aRenderer, bIsWriter, bIsCalc);
 
             // Create an empty Draw component.
             uno::Reference<frame::XDesktop2> xDesktop = 
css::frame::Desktop::create(comphelper::getProcessComponentContext());
@@ -568,7 +569,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
             uno::Reference<lang::XComponent> xComponent = 
xComponentLoader->loadComponentFromURL("private:factory/sdraw", "_default", 0, 
{});
 
             // Add the doc pages to the new draw document
-            SfxRedactionHelper::addPagesToDraw(xComponent, nPages, aMetaFiles, 
bIsCalc);
+            SfxRedactionHelper::addPagesToDraw(xComponent, nPages, aMetaFiles, 
aPageSizes, bIsCalc);
 
             // Show the Redaction toolbar
             SfxViewFrame* pViewFrame = SfxViewFrame::Current();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to