diff options
author | Jan Holesovsky <kendy@collabora.com> | 2019-10-18 11:19:04 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2020-03-17 22:01:15 +0100 |
commit | 6ac2d66c78d6c080aabfa46157113684c2f3a3b0 (patch) | |
tree | f9f3311931b517eeeca54701aa9dc772ee28698a /sd | |
parent | dc3c59a1d9e9240acfbc1a613115f04f577d1ca4 (diff) |
pdfium: Make Insert -> Image... use VectorGraphicData for PDF.
In principle, the current Svg/Emf/Wmf and PDF handling is trying to
achieve the same thing: Keep the original stream untouched, provide a
replacement graphics, and a kind of rendering.
To hold the data, the Svg/Emf/Wmf and PDF were using different structures
though. This commit consolidatates that, and makes the Insert
-> Image... (for PDF) actually using the VectorGraphicData to hold the
original stream.
This breaks loading the PDF as a document via PDFium - I'll fix it in
the next commit(s).
Change-Id: Iac102f32b757390a03438c165e430283851cc10b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90561
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/CppunitTest_sd_import_tests.mk | 1 | ||||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 23 |
2 files changed, 12 insertions, 12 deletions
diff --git a/sd/CppunitTest_sd_import_tests.mk b/sd/CppunitTest_sd_import_tests.mk index 63e75988c144..5f5c6ad56ccd 100644 --- a/sd/CppunitTest_sd_import_tests.mk +++ b/sd/CppunitTest_sd_import_tests.mk @@ -81,6 +81,7 @@ $(eval $(call gb_CppunitTest_use_components,sd_import_tests,\ filter/source/config/cache/filterconfig1 \ filter/source/odfflatxml/odfflatxml \ filter/source/svg/svgfilter \ + filter/source/pdf/pdffilter \ filter/source/xmlfilteradaptor/xmlfa \ filter/source/xmlfilterdetect/xmlfd \ filter/source/storagefilterdetect/storagefd \ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 85b7f5fa0cdf..addf393630a1 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -1301,8 +1301,7 @@ void SdImportTest::testPDFImportShared() // PDF with each image to allow for advanced editing. // Here we iterate over all Graphic instances embedded in the pages // and verify that they all point to the same object in memory. - std::vector<std::shared_ptr<std::vector<sal_Int8>>> aPdfSeqSharedPtrs; - std::vector<std::shared_ptr<GfxLink>> aGfxLinkSharedPtrs; + std::vector<Graphic> aGraphics; for (int nPageIndex = 0; nPageIndex < pDoc->GetPageCount(); ++nPageIndex) { @@ -1322,23 +1321,23 @@ void SdImportTest::testPDFImportShared() const GraphicObject& rGraphicObject = pSdrGrafObj->GetGraphicObject().GetGraphic(); const Graphic& rGraphic = rGraphicObject.GetGraphic(); - aPdfSeqSharedPtrs.push_back(rGraphic.getPdfData()); - aGfxLinkSharedPtrs.push_back(rGraphic.GetSharedGfxLink()); + aGraphics.push_back(rGraphic); } } - CPPUNIT_ASSERT_MESSAGE("Expected more than one page.", aPdfSeqSharedPtrs.size() > 1); - CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected as many PDF streams as GfxLinks.", - aPdfSeqSharedPtrs.size(), aGfxLinkSharedPtrs.size()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected more than one page.", size_t(3), aGraphics.size()); - const std::shared_ptr<std::vector<sal_Int8>> pPdfSeq = aPdfSeqSharedPtrs[0]; - const std::shared_ptr<GfxLink> pGfxLink = aGfxLinkSharedPtrs[0]; - for (size_t i = 0; i < aPdfSeqSharedPtrs.size(); ++i) + Graphic aFirstGraphic = aGraphics[0]; + + for (size_t i = 1; i < aGraphics.size(); ++i) { CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected all PDF streams to be identical.", - aPdfSeqSharedPtrs[i].get(), pPdfSeq.get()); + aFirstGraphic.getVectorGraphicData()->getVectorGraphicDataArray().getConstArray(), + aGraphics[i].getVectorGraphicData()->getVectorGraphicDataArray().getConstArray()); + CPPUNIT_ASSERT_EQUAL_MESSAGE("Expected all GfxLinks to be identical.", - aGfxLinkSharedPtrs[i].get(), pGfxLink.get()); + aFirstGraphic.GetSharedGfxLink().get(), + aGraphics[i].GetSharedGfxLink().get()); } xDocShRef->DoClose(); |