summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2019-10-18 11:19:04 +0200
committerTomaž Vajngerl <quikee@gmail.com>2020-03-17 22:01:15 +0100
commit6ac2d66c78d6c080aabfa46157113684c2f3a3b0 (patch)
treef9f3311931b517eeeca54701aa9dc772ee28698a /svx
parentdc3c59a1d9e9240acfbc1a613115f04f577d1ca4 (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 'svx')
-rw-r--r--svx/source/svdraw/svdedtv.cxx3
-rw-r--r--svx/source/svdraw/svdedtv2.cxx11
-rw-r--r--svx/source/svdraw/svdograf.cxx13
-rw-r--r--svx/source/xml/xmlgrhlp.cxx26
-rw-r--r--svx/source/xoutdev/_xoutbmp.cxx21
5 files changed, 5 insertions, 69 deletions
diff --git a/svx/source/svdraw/svdedtv.cxx b/svx/source/svdraw/svdedtv.cxx
index b0825c0b4a58..2e63c58d32b4 100644
--- a/svx/source/svdraw/svdedtv.cxx
+++ b/svx/source/svdraw/svdedtv.cxx
@@ -607,8 +607,7 @@ void SdrEditView::CheckPossibilities()
if (pSdrGrafObj != nullptr)
{
if ((pSdrGrafObj->HasGDIMetaFile() && !pSdrGrafObj->IsEPS()) ||
- pSdrGrafObj->isEmbeddedVectorGraphicData() ||
- pSdrGrafObj->isEmbeddedPdfData())
+ pSdrGrafObj->isEmbeddedVectorGraphicData())
{
m_bImportMtfPossible = true;
}
diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx
index 6672f742d534..9879d6adcee6 100644
--- a/svx/source/svdraw/svdedtv2.cxx
+++ b/svx/source/svdraw/svdedtv2.cxx
@@ -2106,17 +2106,6 @@ void SdrEditView::DoImportMarkedMtf(SvdProgressInfo *pProgrInfo)
nInsCnt = aFilter.DoImport(aMetaFile, *pOL, nInsPos, pProgrInfo);
}
}
- else if (pGraf->isEmbeddedPdfData())
- {
-#if HAVE_FEATURE_PDFIUM
- aLogicRect = pGraf->GetLogicRect();
- ImpSdrPdfImport aFilter(*mpModel, pObj->GetLayer(), aLogicRect, pGraf->getEmbeddedPdfData());
- if (pGraf->getEmbeddedPageNumber() < aFilter.GetPageCount())
- {
- nInsCnt = aFilter.DoImport(*pOL, nInsPos, pGraf->getEmbeddedPageNumber(), pProgrInfo);
- }
-#endif // HAVE_FEATURE_PDFIUM
- }
}
SdrOle2Obj* pOle2 = dynamic_cast<SdrOle2Obj*>(pObj);
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 37246e1c21fa..a924a9694a6e 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -282,8 +282,7 @@ const GraphicObject* SdrGrafObj::GetReplacementGraphicObject() const
{
const_cast< SdrGrafObj* >(this)->mpReplacementGraphicObject.reset(new GraphicObject(rVectorGraphicDataPtr->getReplacement()));
}
- else if (mpGraphicObject->GetGraphic().hasPdfData() ||
- mpGraphicObject->GetGraphic().GetType() == GraphicType::GdiMetafile)
+ else if (mpGraphicObject->GetGraphic().GetType() == GraphicType::GdiMetafile)
{
// Replacement graphic for PDF and metafiles is just the bitmap.
const_cast<SdrGrafObj*>(this)->mpReplacementGraphicObject.reset(new GraphicObject(mpGraphicObject->GetGraphic().GetBitmapEx()));
@@ -882,16 +881,6 @@ GDIMetaFile SdrGrafObj::GetMetaFile(GraphicType &rGraphicType) const
return GDIMetaFile();
}
-bool SdrGrafObj::isEmbeddedPdfData() const
-{
- return mpGraphicObject->GetGraphic().hasPdfData();
-}
-
-const std::shared_ptr<std::vector<sal_Int8>> & SdrGrafObj::getEmbeddedPdfData() const
-{
- return mpGraphicObject->GetGraphic().getPdfData();
-}
-
sal_Int32 SdrGrafObj::getEmbeddedPageNumber() const
{
return mpGraphicObject->GetGraphic().getPageNumber();
diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx
index ed5b97aa15b9..e456900f78cf 100644
--- a/svx/source/xml/xmlgrhlp.cxx
+++ b/svx/source/xml/xmlgrhlp.cxx
@@ -754,29 +754,7 @@ OUString SvXMLGraphicHelper::implSaveGraphic(css::uno::Reference<css::graphic::X
std::unique_ptr<SvStream> pStream(utl::UcbStreamHelper::CreateStream(aStream.xStream));
if (bUseGfxLink && aGfxLink.GetDataSize() && aGfxLink.GetData())
{
- const std::shared_ptr<std::vector<sal_Int8>> rPdfData = aGraphic.getPdfData();
- if (rPdfData && !rPdfData->empty())
- {
- // See if we have this PDF already, and avoid duplicate storage.
- auto aIt = maExportPdf.find(rPdfData.get());
- if (aIt != maExportPdf.end())
- {
- auto const& aURLAndMimePair = aIt->second;
- rOutSavedMimeType = aURLAndMimePair.second;
- return aURLAndMimePair.first;
- }
-
- // The graphic has PDF data attached to it, use that.
- // vcl::ImportPDF() possibly downgraded the PDF data from a
- // higher PDF version, while aGfxLink still contains the
- // original data provided by the user.
- pStream->WriteBytes(rPdfData->data(), rPdfData->size());
- }
- else
- {
- pStream->WriteBytes(aGfxLink.GetData(), aGfxLink.GetDataSize());
- }
-
+ pStream->WriteBytes(aGfxLink.GetData(), aGfxLink.GetDataSize());
rOutSavedMimeType = aMimeType;
bSuccess = (pStream->GetError() == ERRCODE_NONE);
}
@@ -842,8 +820,6 @@ OUString SvXMLGraphicHelper::implSaveGraphic(css::uno::Reference<css::graphic::X
// put into cache
maExportGraphics[aGraphic] = std::make_pair(aStoragePath, rOutSavedMimeType);
- if (aGraphic.hasPdfData())
- maExportPdf[aGraphic.getPdfData().get()] = std::make_pair(aStoragePath, rOutSavedMimeType);
return aStoragePath;
}
diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx
index 3b6852467a72..7eadfe7cacc4 100644
--- a/svx/source/xoutdev/_xoutbmp.cxx
+++ b/svx/source/xoutdev/_xoutbmp.cxx
@@ -138,8 +138,9 @@ ErrCode XOutBitmap::WriteGraphic( const Graphic& rGraphic, OUString& rFileName,
const bool bIsSvg(rFilterName.equalsIgnoreAsciiCase("svg") && VectorGraphicDataType::Svg == aVectorGraphicDataPtr->getVectorGraphicDataType());
const bool bIsWmf(rFilterName.equalsIgnoreAsciiCase("wmf") && VectorGraphicDataType::Wmf == aVectorGraphicDataPtr->getVectorGraphicDataType());
const bool bIsEmf(rFilterName.equalsIgnoreAsciiCase("emf") && VectorGraphicDataType::Emf == aVectorGraphicDataPtr->getVectorGraphicDataType());
+ const bool bIsPdf(rFilterName.equalsIgnoreAsciiCase("pdf") && VectorGraphicDataType::Pdf == aVectorGraphicDataPtr->getVectorGraphicDataType());
- if (bIsSvg || bIsWmf || bIsEmf)
+ if (bIsSvg || bIsWmf || bIsEmf || bIsPdf)
{
if (!(nFlags & XOutFlags::DontAddExtension))
{
@@ -163,24 +164,6 @@ ErrCode XOutBitmap::WriteGraphic( const Graphic& rGraphic, OUString& rFileName,
}
}
- // Write PDF data in original form if possible.
- if (rGraphic.hasPdfData() && rFilterName.equalsIgnoreAsciiCase("pdf"))
- {
- if (!(nFlags & XOutFlags::DontAddExtension))
- aURL.setExtension(rFilterName);
-
- rFileName = aURL.GetMainURL(INetURLObject::DecodeMechanism::NONE);
- SfxMedium aMedium(aURL.GetMainURL(INetURLObject::DecodeMechanism::NONE), StreamMode::WRITE|StreamMode::SHARE_DENYNONE|StreamMode::TRUNC);
- if (SvStream* pOutStream = aMedium.GetOutStream())
- {
- const std::shared_ptr<std::vector<sal_Int8>> rPdfData(rGraphic.getPdfData());
- pOutStream->WriteBytes(rPdfData->data(), rPdfData->size());
- aMedium.Commit();
- if (!aMedium.GetError())
- nErr = ERRCODE_NONE;
- }
- }
-
if( ERRCODE_NONE != nErr )
{
if( ( nFlags & XOutFlags::UseNativeIfPossible ) &&