diff options
author | Muhammet Kara <muhammet.kara@collabora.com> | 2019-05-01 18:46:47 +0300 |
---|---|---|
committer | Muhammet Kara <muhammet.kara@collabora.com> | 2019-05-02 19:28:27 +0200 |
commit | b743d446d8cccabcf3d002da652da0a8854ad883 (patch) | |
tree | 12d1cae6dccfa63154a171031dcad7d731547aea /sfx2/source | |
parent | e6532f75e1901a783c50907fd5e94f1bb6a01f6b (diff) |
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.kara@collabora.com>
Diffstat (limited to 'sfx2/source')
-rw-r--r-- | sfx2/source/doc/SfxRedactionHelper.cxx | 10 | ||||
-rw-r--r-- | sfx2/source/doc/objserv.cxx | 5 |
2 files changed, 10 insertions, 5 deletions
diff --git a/sfx2/source/doc/SfxRedactionHelper.cxx b/sfx2/source/doc/SfxRedactionHelper.cxx index bc7f421444d7..67cdfa77c22f 100644 --- a/sfx2/source/doc/SfxRedactionHelper.cxx +++ b/sfx2/source/doc/SfxRedactionHelper.cxx @@ -62,6 +62,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) @@ -77,6 +78,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()); @@ -110,7 +113,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); @@ -123,8 +127,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 cd8bdd0ced85..7d5fa32738e6 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -561,9 +561,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()); @@ -571,7 +572,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(); |