diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2018-04-15 20:32:52 -0400 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2018-06-07 10:45:28 +0200 |
commit | 81dfcf9b251192841f5049b028d4039d17133b5a (patch) | |
tree | 80908b766ca15e35c217e410d53b90716ad926cc | |
parent | e3963007d028d4ab3347235d2c692dadbf7e4168 (diff) |
sd: support breaking any PDF page
Change-Id: Ifa5f58163bef209a988fc0f88e2b609b1973e0d4
-rw-r--r-- | svx/source/svdraw/svdpdf.cxx | 13 | ||||
-rw-r--r-- | svx/source/svdraw/svdpdf.hxx | 4 | ||||
-rw-r--r-- | vcl/source/gdi/impgraph.cxx | 4 |
3 files changed, 11 insertions, 10 deletions
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx index a69ce46e00de..b3e1f51730ed 100644 --- a/svx/source/svdraw/svdpdf.cxx +++ b/svx/source/svdraw/svdpdf.cxx @@ -207,16 +207,17 @@ ImpSdrPdfImport::~ImpSdrPdfImport() FPDF_DestroyLibrary(); } -void ImpSdrPdfImport::DoLoopActions(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport) +void ImpSdrPdfImport::DoLoopActions(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport, + int nPageIndex) { const int nPageCount = FPDF_GetPageCount(mpPdfDocument); - SAL_WARN("sd.filter", "Pages: " << nPageCount); - for (size_t nPageIndex = 0; nPageIndex <= 0; ++nPageIndex) + SAL_WARN("sd.filter", "Importing page " << nPageIndex << " of " << nPageCount); + if (nPageCount > 0 && nPageIndex >= 0 && nPageIndex < nPageCount) { // Render next page. FPDF_PAGE pPdfPage = FPDF_LoadPage(mpPdfDocument, nPageIndex); if (pPdfPage == nullptr) - break; + return; const double dPageWidth = FPDF_GetPageWidth(pPdfPage); const double dPageHeight = FPDF_GetPageHeight(pPdfPage); @@ -482,7 +483,7 @@ void ImpSdrPdfImport::SetupPageScale(const double dPageWidth, const double dPage << "(" << mfScaleY << ")"); } -size_t ImpSdrPdfImport::DoImport(SdrObjList& rOL, size_t nInsPos, size_t nPageNumber, +size_t ImpSdrPdfImport::DoImport(SdrObjList& rOL, size_t nInsPos, int nPageNumber, SvdProgressInfo* pProgrInfo) { if (pProgrInfo) @@ -493,7 +494,7 @@ size_t ImpSdrPdfImport::DoImport(SdrObjList& rOL, size_t nInsPos, size_t nPageNu sal_uInt32 nActionsToReport(0); // execute - DoLoopActions(pProgrInfo, &nActionsToReport); + DoLoopActions(pProgrInfo, &nActionsToReport, nPageNumber); if (pProgrInfo) { diff --git a/svx/source/svdraw/svdpdf.hxx b/svx/source/svdraw/svdpdf.hxx index dc62b234a688..2063788290d9 100644 --- a/svx/source/svdraw/svdpdf.hxx +++ b/svx/source/svdraw/svdpdf.hxx @@ -115,7 +115,7 @@ class ImpSdrPdfImport final bool CheckLastLineMerge(const basegfx::B2DPolygon& rSrcPoly); bool CheckLastPolyLineAndFillMerge(const basegfx::B2DPolyPolygon& rPolyPolygon); - void DoLoopActions(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport); + void DoLoopActions(SvdProgressInfo* pProgrInfo, sal_uInt32* pActionsToReport, int nPageIndex); // Copy assignment is forbidden and not implemented. ImpSdrPdfImport(const ImpSdrPdfImport&) = delete; @@ -128,7 +128,7 @@ public: int GetPageCount() const { return mnPageCount; } - size_t DoImport(SdrObjList& rDestList, size_t nInsPos, size_t nPageNumber, + size_t DoImport(SdrObjList& rDestList, size_t nInsPos, int nPageNumber, SvdProgressInfo* pProgrInfo = nullptr); }; diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 6c727a322f81..331f7927e4d2 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -200,7 +200,7 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic) , maGraphicExternalLink(rImpGraphic.maGraphicExternalLink) , maLastUsed (std::chrono::high_resolution_clock::now()) , mbPrepared (rImpGraphic.mbPrepared) - , mnPageNumber(-1) + , mnPageNumber(rImpGraphic.mnPageNumber) { if( rImpGraphic.mpGfxLink ) mpGfxLink = o3tl::make_unique<GfxLink>( *rImpGraphic.mpGfxLink ); @@ -229,7 +229,7 @@ ImpGraphic::ImpGraphic(ImpGraphic&& rImpGraphic) , maGraphicExternalLink(rImpGraphic.maGraphicExternalLink) , maLastUsed (std::chrono::high_resolution_clock::now()) , mbPrepared (rImpGraphic.mbPrepared) - , mnPageNumber(-1) + , mnPageNumber(rImpGraphic.mnPageNumber) { rImpGraphic.ImplClear(); rImpGraphic.mbDummyContext = false; |