[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - 5 commits - include/vcl sd/source vcl/inc vcl/source
Jan Holesovsky (via logerrit)
logerrit at kemper.freedesktop.org
Thu Mar 28 08:28:20 UTC 2019
include/vcl/graph.hxx | 1
include/vcl/pdfread.hxx | 5 -
sd/source/filter/pdf/sdpdffilter.cxx | 5 -
vcl/inc/impgraph.hxx | 3
vcl/source/filter/graphicfilter.cxx | 2
vcl/source/filter/ipdf/pdfread.cxx | 125 +++++++++++++++--------------------
vcl/source/gdi/graph.cxx | 6 -
vcl/source/gdi/impgraph.cxx | 82 +++++++---------------
vcl/source/gdi/pdfextoutdevdata.cxx | 2
9 files changed, 87 insertions(+), 144 deletions(-)
New commits:
commit bb4f5258a221dd6c429d94686f1641377d61b951
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Mar 28 09:07:13 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Mar 28 09:07:13 2019 +0100
Revert "vcl: share GfxLink"
This reverts commit c8f81dbb30e89a19bb7a82f8b52cc02b9049e717.
diff --git a/sd/source/filter/pdf/sdpdffilter.cxx b/sd/source/filter/pdf/sdpdffilter.cxx
index a4747456123b..26d7c70bdd54 100644
--- a/sd/source/filter/pdf/sdpdffilter.cxx
+++ b/sd/source/filter/pdf/sdpdffilter.cxx
@@ -111,8 +111,7 @@ bool SdPdfFilter::Import()
const size_t nGraphicContentSize = aPdfData.getLength();
std::unique_ptr<sal_uInt8[]> pGraphicContent(new sal_uInt8[nGraphicContentSize]);
memcpy(pGraphicContent.get(), aPdfData.get(), nGraphicContentSize);
- std::shared_ptr<GfxLink> pGfxLink(std::make_shared<GfxLink>(
- std::move(pGraphicContent), nGraphicContentSize, GfxLinkType::NativePdf));
+ GfxLink aGfxLink(std::move(pGraphicContent), nGraphicContentSize, GfxLinkType::NativePdf);
auto pPdfData = std::make_shared<uno::Sequence<sal_Int8>>(aPdfData);
mrDocument.CreateFirstPages();
diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx
index c462dc2c67ac..1a8563e95db0 100644
--- a/vcl/inc/impgraph.hxx
+++ b/vcl/inc/impgraph.hxx
@@ -45,7 +45,7 @@ private:
std::unique_ptr<Animation> mpAnimation;
std::shared_ptr<GraphicReader> mpContext;
std::shared_ptr<ImpSwapFile> mpSwapFile;
- std::shared_ptr<GfxLink> mpGfxLink;
+ std::unique_ptr<GfxLink> mpGfxLink;
GraphicType meType;
mutable sal_uLong mnSizeBytes;
bool mbSwapOut;
@@ -160,7 +160,7 @@ private:
bool ImplIsSwapOut() const { return mbSwapOut;}
bool ImplIsDummyContext() const { return mbDummyContext; }
- void ImplSetLink( const std::shared_ptr<GfxLink>& );
+ void ImplSetLink( const GfxLink& );
GfxLink ImplGetLink();
bool ImplIsLink() const;
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 7a869a7aee4b..e7f86486d792 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -1854,7 +1854,7 @@ ErrCode GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPath,
}
if( nStatus == ERRCODE_NONE )
{
- rGraphic.SetLink(GfxLink(std::move(pGraphicContent), nGraphicContentSize, eLinkType));
+ rGraphic.SetLink( GfxLink( std::move(pGraphicContent), nGraphicContentSize, eLinkType ) );
}
}
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 2d73357ec43d..8027d0d85b1d 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -115,7 +115,6 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic)
, maSwapInfo(rImpGraphic.maSwapInfo)
, mpContext(rImpGraphic.mpContext)
, mpSwapFile(rImpGraphic.mpSwapFile)
- , mpGfxLink(rImpGraphic.mpGfxLink)
, meType(rImpGraphic.meType)
, mnSizeBytes(rImpGraphic.mnSizeBytes)
, mbSwapOut(rImpGraphic.mbSwapOut)
@@ -125,6 +124,9 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic)
, maGraphicExternalLink(rImpGraphic.maGraphicExternalLink)
, mnPageNumber(rImpGraphic.mnPageNumber)
{
+ if( rImpGraphic.mpGfxLink )
+ mpGfxLink = o3tl::make_unique<GfxLink>( *rImpGraphic.mpGfxLink );
+
if( rImpGraphic.mpAnimation )
{
mpAnimation = o3tl::make_unique<Animation>( *rImpGraphic.mpAnimation );
@@ -237,7 +239,10 @@ ImpGraphic& ImpGraphic::operator=( const ImpGraphic& rImpGraphic )
mbSwapOut = rImpGraphic.mbSwapOut;
mpSwapFile = rImpGraphic.mpSwapFile;
- mpGfxLink = rImpGraphic.mpGfxLink;
+ mpGfxLink.reset();
+
+ if( rImpGraphic.mpGfxLink )
+ mpGfxLink = o3tl::make_unique<GfxLink>( *rImpGraphic.mpGfxLink );
maVectorGraphicData = rImpGraphic.maVectorGraphicData;
mpPdfData = rImpGraphic.mpPdfData;
@@ -1365,11 +1370,11 @@ bool ImpGraphic::ImplSwapIn( SvStream* xIStm )
return bRet;
}
-void ImpGraphic::ImplSetLink(const GfxLink& rGfxLink)
+void ImpGraphic::ImplSetLink( const GfxLink& rGfxLink )
{
- mpGfxLink = rGfxLink;
+ mpGfxLink = o3tl::make_unique<GfxLink>( rGfxLink );
- if (mpGfxLink && mpGfxLink->IsNative())
+ if( mpGfxLink->IsNative() )
mpGfxLink->SwapOut();
}
@@ -1484,7 +1489,7 @@ void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
// set dummy link to avoid creation of additional link after filtering;
// we set a default link to avoid unnecessary swapping of native data
- aGraphic.SetLink(GfxLink());
+ aGraphic.SetLink( GfxLink() );
if( !rIStm.GetError() && aLink.LoadNative( aGraphic ) )
{
@@ -1501,7 +1506,7 @@ void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
rImpGraphic.ImplSetPrefSize( aLink.GetPrefSize() );
if( bSetLink )
- rImpGraphic.ImplSetLink(aLink);
+ rImpGraphic.ImplSetLink( aLink );
}
else
{
diff --git a/vcl/source/gdi/pdfextoutdevdata.cxx b/vcl/source/gdi/pdfextoutdevdata.cxx
index 73581f04ca3f..d74996ce2403 100644
--- a/vcl/source/gdi/pdfextoutdevdata.cxx
+++ b/vcl/source/gdi/pdfextoutdevdata.cxx
@@ -846,7 +846,7 @@ bool PDFExtOutDevData::HasAdequateCompression( const Graphic &rGraphic,
// 4 means CMYK, which is not handled.
return false;
- const Size aSize = rGraphic.GetSizePixel();
+ Size aSize = rGraphic.GetSizePixel();
// small items better off as PNG anyway
if ( aSize.Width() < 32 &&
commit a0ac37b9bc45c6016336447ab2ff5a5a251d5bdc
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Mar 28 09:07:05 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Mar 28 09:07:05 2019 +0100
Revert "pdfium: Share the GfxLink for PDF files."
This reverts commit 62654a8c29b945d00afe9f32e87b44ba0d8b84a2.
diff --git a/include/vcl/graph.hxx b/include/vcl/graph.hxx
index 881abda221e4..45268462155a 100644
--- a/include/vcl/graph.hxx
+++ b/include/vcl/graph.hxx
@@ -216,7 +216,6 @@ private:
public:
void SetLink( const GfxLink& );
- void SetSharedLink(const std::shared_ptr<GfxLink>& pGfxLink);
GfxLink GetLink() const;
bool IsLink() const;
diff --git a/sd/source/filter/pdf/sdpdffilter.cxx b/sd/source/filter/pdf/sdpdffilter.cxx
index 95daaeb479f1..a4747456123b 100644
--- a/sd/source/filter/pdf/sdpdffilter.cxx
+++ b/sd/source/filter/pdf/sdpdffilter.cxx
@@ -128,7 +128,7 @@ bool SdPdfFilter::Import()
Graphic aGraphic(aBitmap);
aGraphic.setPdfData(pPdfData);
aGraphic.setPageNumber(nPageNumber);
- aGraphic.SetSharedLink(pGfxLink);
+ aGraphic.SetLink(aGfxLink);
aGraphic.setOriginURL(aFileName);
// Create the page and insert the Graphic.
diff --git a/vcl/inc/impgraph.hxx b/vcl/inc/impgraph.hxx
index 3d998ec94ac5..c462dc2c67ac 100644
--- a/vcl/inc/impgraph.hxx
+++ b/vcl/inc/impgraph.hxx
@@ -160,8 +160,7 @@ private:
bool ImplIsSwapOut() const { return mbSwapOut;}
bool ImplIsDummyContext() const { return mbDummyContext; }
- void ImplSetLink( const GfxLink& );
- void ImplSetSharedLink(const std::shared_ptr<GfxLink>& pGfxLink);
+ void ImplSetLink( const std::shared_ptr<GfxLink>& );
GfxLink ImplGetLink();
bool ImplIsLink() const;
diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx
index 04e567e44d5d..1fc7897ac90b 100644
--- a/vcl/source/gdi/graph.cxx
+++ b/vcl/source/gdi/graph.cxx
@@ -569,12 +569,6 @@ void Graphic::SetLink( const GfxLink& rGfxLink )
mxImpGraphic->ImplSetLink( rGfxLink );
}
-void Graphic::SetSharedLink(const std::shared_ptr<GfxLink>& pGfxLink)
-{
- ImplTestRefCount();
- mxImpGraphic->ImplSetSharedLink(pGfxLink);
-}
-
GfxLink Graphic::GetLink() const
{
return mxImpGraphic->ImplGetLink();
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 6e837c979e78..2d73357ec43d 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -125,14 +125,6 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic)
, maGraphicExternalLink(rImpGraphic.maGraphicExternalLink)
, mnPageNumber(rImpGraphic.mnPageNumber)
{
- if( rImpGraphic.mpGfxLink )
- {
- if (rImpGraphic.mpGfxLink->GetType() == GfxLinkType::NativePdf)
- mpGfxLink = rImpGraphic.mpGfxLink;
- else
- mpGfxLink = std::make_shared<GfxLink>(*rImpGraphic.mpGfxLink);
- }
-
if( rImpGraphic.mpAnimation )
{
mpAnimation = o3tl::make_unique<Animation>( *rImpGraphic.mpAnimation );
@@ -245,18 +237,9 @@ ImpGraphic& ImpGraphic::operator=( const ImpGraphic& rImpGraphic )
mbSwapOut = rImpGraphic.mbSwapOut;
mpSwapFile = rImpGraphic.mpSwapFile;
- if (rImpGraphic.mpGfxLink)
- {
- if (rImpGraphic.mpGfxLink->GetType() == GfxLinkType::NativePdf)
- mpGfxLink = rImpGraphic.mpGfxLink;
- else
- {
- mpGfxLink.reset();
-
- mpGfxLink = std::make_shared<GfxLink>(*rImpGraphic.mpGfxLink);
- }
- }
+ mpGfxLink = rImpGraphic.mpGfxLink;
+ maVectorGraphicData = rImpGraphic.maVectorGraphicData;
mpPdfData = rImpGraphic.mpPdfData;
}
@@ -1384,15 +1367,7 @@ bool ImpGraphic::ImplSwapIn( SvStream* xIStm )
void ImpGraphic::ImplSetLink(const GfxLink& rGfxLink)
{
- mpGfxLink = std::make_shared<GfxLink>( rGfxLink );
-
- if( mpGfxLink->IsNative() )
- mpGfxLink->SwapOut();
-}
-
-void ImpGraphic::ImplSetSharedLink(const std::shared_ptr<GfxLink>& pGfxLink)
-{
- mpGfxLink = pGfxLink;
+ mpGfxLink = rGfxLink;
if (mpGfxLink && mpGfxLink->IsNative())
mpGfxLink->SwapOut();
commit f1552a8bb74a5eb07ad7e675a50f60dec935b9e3
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Mar 28 09:06:53 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Mar 28 09:06:53 2019 +0100
Revert "pdfium: Keep the PDF data in memory, so that we can really share them."
This reverts commit 6a96ea6378986ad7a8951dde583ae590edae1a65.
diff --git a/include/vcl/pdfread.hxx b/include/vcl/pdfread.hxx
index c491f50ef34b..1a1ff0d680cb 100644
--- a/include/vcl/pdfread.hxx
+++ b/include/vcl/pdfread.hxx
@@ -16,11 +16,6 @@
namespace vcl
{
-/// Fills the rBitmaps vector with rendered pages.
-VCL_DLLPUBLIC size_t RenderPDFBitmaps(const void* pBuffer, int nSize, std::vector<Bitmap>& rBitmaps,
- const size_t nFirstPage = 0, int nPages = 1,
- const double fResolutionDPI = 96.);
-
/// Imports a PDF stream into rGraphic as a GDIMetaFile.
VCL_DLLPUBLIC bool ImportPDF(SvStream& rStream, Bitmap& rBitmap, size_t nPageIndex,
css::uno::Sequence<sal_Int8>& rPdfData,
diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx
index 16cb902e2476..ab70a0451d9d 100644
--- a/vcl/source/filter/ipdf/pdfread.cxx
+++ b/vcl/source/filter/ipdf/pdfread.cxx
@@ -63,12 +63,68 @@ size_t generatePreview(SvStream& rStream, std::vector<Bitmap>& rBitmaps,
const size_t nFirstPage = 0, int nPages = 1,
const double fResolutionDPI = 96.)
{
+ FPDF_LIBRARY_CONFIG aConfig;
+ aConfig.version = 2;
+ aConfig.m_pUserFontPaths = nullptr;
+ aConfig.m_pIsolate = nullptr;
+ aConfig.m_v8EmbedderSlot = 0;
+ FPDF_InitLibraryWithConfig(&aConfig);
+
// Read input into a buffer.
SvMemoryStream aInBuffer;
rStream.Seek(nPos);
aInBuffer.WriteStream(rStream, nSize);
- return vcl::RenderPDFBitmaps(aInBuffer.GetData(), aInBuffer.GetSize(), rBitmaps, nFirstPage, nPages, fResolutionDPI);
+ // Load the buffer using pdfium.
+ FPDF_DOCUMENT pPdfDocument = FPDF_LoadMemDocument(aInBuffer.GetData(), aInBuffer.GetSize(), /*password=*/nullptr);
+ if (!pPdfDocument)
+ return 0;
+
+ const int nPageCount = FPDF_GetPageCount(pPdfDocument);
+ if (nPages <= 0)
+ nPages = nPageCount;
+ const size_t nLastPage = std::min<int>(nPageCount, nFirstPage + nPages) - 1;
+ for (size_t nPageIndex = nFirstPage; nPageIndex <= nLastPage; ++nPageIndex)
+ {
+ // Render next page.
+ FPDF_PAGE pPdfPage = FPDF_LoadPage(pPdfDocument, nPageIndex);
+ if (!pPdfPage)
+ break;
+
+ // Returned unit is points, convert that to pixel.
+ const size_t nPageWidth = pointToPixel(FPDF_GetPageWidth(pPdfPage), fResolutionDPI);
+ const size_t nPageHeight = pointToPixel(FPDF_GetPageHeight(pPdfPage), fResolutionDPI);
+ FPDF_BITMAP pPdfBitmap = FPDFBitmap_Create(nPageWidth, nPageHeight, /*alpha=*/1);
+ if (!pPdfBitmap)
+ break;
+
+ const FPDF_DWORD nColor = FPDFPage_HasTransparency(pPdfPage) ? 0x00000000 : 0xFFFFFFFF;
+ FPDFBitmap_FillRect(pPdfBitmap, 0, 0, nPageWidth, nPageHeight, nColor);
+ FPDF_RenderPageBitmap(pPdfBitmap, pPdfPage, /*start_x=*/0, /*start_y=*/0, nPageWidth, nPageHeight, /*rotate=*/0, /*flags=*/0);
+
+ // Save the buffer as a bitmap.
+ Bitmap aBitmap(Size(nPageWidth, nPageHeight), 24);
+ {
+ Bitmap::ScopedWriteAccess pWriteAccess(aBitmap);
+ const auto pPdfBuffer = static_cast<ConstScanline>(FPDFBitmap_GetBuffer(pPdfBitmap));
+ const int nStride = FPDFBitmap_GetStride(pPdfBitmap);
+ for (size_t nRow = 0; nRow < nPageHeight; ++nRow)
+ {
+ ConstScanline pPdfLine = pPdfBuffer + (nStride * nRow);
+ // pdfium byte order is BGRA.
+ pWriteAccess->CopyScanline(nRow, pPdfLine, ScanlineFormat::N32BitTcBgra, nStride);
+ }
+ }
+
+ rBitmaps.emplace_back(std::move(aBitmap));
+ FPDFBitmap_Destroy(pPdfBitmap);
+ FPDF_ClosePage(pPdfPage);
+ }
+
+ FPDF_CloseDocument(pPdfDocument);
+ FPDF_DestroyLibrary();
+
+ return rBitmaps.size();
}
/// Decide if PDF data is old enough to be compatible.
@@ -155,69 +211,6 @@ bool getCompatibleStream(SvStream& rInStream, SvStream& rOutStream,
namespace vcl
{
-size_t RenderPDFBitmaps(const void* pBuffer, int nSize, std::vector<Bitmap>& rBitmaps,
- const size_t nFirstPage, int nPages,
- const double fResolutionDPI)
-{
- FPDF_LIBRARY_CONFIG aConfig;
- aConfig.version = 2;
- aConfig.m_pUserFontPaths = nullptr;
- aConfig.m_pIsolate = nullptr;
- aConfig.m_v8EmbedderSlot = 0;
- FPDF_InitLibraryWithConfig(&aConfig);
-
- // Load the buffer using pdfium.
- FPDF_DOCUMENT pPdfDocument = FPDF_LoadMemDocument(pBuffer, nSize, /*password=*/nullptr);
- if (!pPdfDocument)
- return 0;
-
- const int nPageCount = FPDF_GetPageCount(pPdfDocument);
- if (nPages <= 0)
- nPages = nPageCount;
- const size_t nLastPage = std::min<int>(nPageCount, nFirstPage + nPages) - 1;
- for (size_t nPageIndex = nFirstPage; nPageIndex <= nLastPage; ++nPageIndex)
- {
- // Render next page.
- FPDF_PAGE pPdfPage = FPDF_LoadPage(pPdfDocument, nPageIndex);
- if (!pPdfPage)
- break;
-
- // Returned unit is points, convert that to pixel.
- const size_t nPageWidth = pointToPixel(FPDF_GetPageWidth(pPdfPage), fResolutionDPI);
- const size_t nPageHeight = pointToPixel(FPDF_GetPageHeight(pPdfPage), fResolutionDPI);
- FPDF_BITMAP pPdfBitmap = FPDFBitmap_Create(nPageWidth, nPageHeight, /*alpha=*/1);
- if (!pPdfBitmap)
- break;
-
- const FPDF_DWORD nColor = FPDFPage_HasTransparency(pPdfPage) ? 0x00000000 : 0xFFFFFFFF;
- FPDFBitmap_FillRect(pPdfBitmap, 0, 0, nPageWidth, nPageHeight, nColor);
- FPDF_RenderPageBitmap(pPdfBitmap, pPdfPage, /*start_x=*/0, /*start_y=*/0, nPageWidth, nPageHeight, /*rotate=*/0, /*flags=*/0);
-
- // Save the buffer as a bitmap.
- Bitmap aBitmap(Size(nPageWidth, nPageHeight), 24);
- {
- Bitmap::ScopedWriteAccess pWriteAccess(aBitmap);
- const auto pPdfBuffer = static_cast<ConstScanline>(FPDFBitmap_GetBuffer(pPdfBitmap));
- const int nStride = FPDFBitmap_GetStride(pPdfBitmap);
- for (size_t nRow = 0; nRow < nPageHeight; ++nRow)
- {
- ConstScanline pPdfLine = pPdfBuffer + (nStride * nRow);
- // pdfium byte order is BGRA.
- pWriteAccess->CopyScanline(nRow, pPdfLine, ScanlineFormat::N32BitTcBgra, nStride);
- }
- }
-
- rBitmaps.emplace_back(std::move(aBitmap));
- FPDFBitmap_Destroy(pPdfBitmap);
- FPDF_ClosePage(pPdfPage);
- }
-
- FPDF_CloseDocument(pPdfDocument);
- FPDF_DestroyLibrary();
-
- return rBitmaps.size();
-}
-
bool ImportPDF(SvStream& rStream, Bitmap& rBitmap,
size_t nPageIndex,
css::uno::Sequence<sal_Int8>& rPdfData,
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 87c2c233a732..6e837c979e78 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -37,7 +37,6 @@
#include <impgraph.hxx>
#include <com/sun/star/ucb/CommandAbortedException.hpp>
#include <vcl/dibtools.hxx>
-#include <map>
#include <memory>
#include <o3tl/make_unique.hxx>
#include <vcl/gdimetafiletools.hxx>
@@ -1476,7 +1475,6 @@ bool ImpGraphic::ImplExportNative( SvStream& rOStm ) const
return bResult;
}
-static std::map<BitmapChecksum, std::shared_ptr<css::uno::Sequence<sal_Int8>>> sPdfDataCache;
void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
{
@@ -1625,25 +1623,23 @@ void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
else if (nMagic == nPdfMagic)
{
// Stream in PDF data.
- BitmapChecksum nPdfId = 0;
- rIStm.ReadUInt64(nPdfId);
-
- rImpGraphic.mnPageNumber = 0;
- rIStm.ReadInt32(rImpGraphic.mnPageNumber);
-
- auto it = sPdfDataCache.find(nPdfId);
- assert(it != sPdfDataCache.end());
-
- rImpGraphic.mpPdfData = it->second;
-
+ sal_uInt32 nPdfDataLength = 0;
+ rIStm.ReadUInt32(nPdfDataLength);
Bitmap aBitmap;
- rImpGraphic.maEx = aBitmap;
- std::vector<Bitmap> aBitmaps;
- if (vcl::RenderPDFBitmaps(rImpGraphic.mpPdfData->getConstArray(), rImpGraphic.mpPdfData->getLength(), aBitmaps, rImpGraphic.mnPageNumber, 1) == 1)
- rImpGraphic.maEx = aBitmaps[0];
+ if (nPdfDataLength && !rIStm.GetError())
+ {
+ if (!rImpGraphic.mpPdfData)
+ rImpGraphic.mpPdfData.reset(new uno::Sequence<sal_Int8>());
- rImpGraphic.meType = GraphicType::Bitmap;
+ if (vcl::ImportPDF(rIStm, aBitmap, rImpGraphic.mnPageNumber,
+ *rImpGraphic.mpPdfData,
+ rIStm.Tell(), nPdfDataLength))
+ {
+ rImpGraphic.maEx = aBitmap;
+ rImpGraphic.meType = GraphicType::Bitmap;
+ }
+ }
}
else
{
@@ -1734,14 +1730,10 @@ void WriteImpGraphic(SvStream& rOStm, const ImpGraphic& rImpGraphic)
}
else if (rImpGraphic.hasPdfData())
{
- BitmapChecksum nPdfId = vcl_get_checksum(0, rImpGraphic.mpPdfData->getConstArray(), rImpGraphic.mpPdfData->getLength());
- if (sPdfDataCache.find(nPdfId) == sPdfDataCache.end())
- sPdfDataCache.emplace(nPdfId, rImpGraphic.mpPdfData);
-
// Stream out PDF data.
rOStm.WriteUInt32(nPdfMagic);
- rOStm.WriteUInt64(nPdfId);
- rOStm.WriteInt32(rImpGraphic.mnPageNumber);
+ rOStm.WriteUInt32(rImpGraphic.mpPdfData->getLength());
+ rOStm.WriteBytes(rImpGraphic.mpPdfData->getConstArray(), rImpGraphic.mpPdfData->getLength());
}
else if( rImpGraphic.ImplIsAnimated())
{
commit cec4b94df735dce507c48bb13dc4e375387ac3b2
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Mar 28 09:06:44 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Mar 28 09:06:44 2019 +0100
Revert "Fix build in !HAVE_FEATURE_PDFIUM case"
This reverts commit 77a735be8a2196e890e88662fe73816fa44dd023.
diff --git a/vcl/source/filter/ipdf/pdfread.cxx b/vcl/source/filter/ipdf/pdfread.cxx
index f73dc5736fbf..16cb902e2476 100644
--- a/vcl/source/filter/ipdf/pdfread.cxx
+++ b/vcl/source/filter/ipdf/pdfread.cxx
@@ -155,8 +155,6 @@ bool getCompatibleStream(SvStream& rInStream, SvStream& rOutStream,
namespace vcl
{
-#if HAVE_FEATURE_PDFIUM
-
size_t RenderPDFBitmaps(const void* pBuffer, int nSize, std::vector<Bitmap>& rBitmaps,
const size_t nFirstPage, int nPages,
const double fResolutionDPI)
@@ -220,8 +218,6 @@ size_t RenderPDFBitmaps(const void* pBuffer, int nSize, std::vector<Bitmap>& rBi
return rBitmaps.size();
}
-#endif // HAVE_FEATURE_PDFIUM
-
bool ImportPDF(SvStream& rStream, Bitmap& rBitmap,
size_t nPageIndex,
css::uno::Sequence<sal_Int8>& rPdfData,
commit 0f1488d8e22e1f4a1f2d25773b3eb2bee35e3ba7
Author: Jan Holesovsky <kendy at collabora.com>
AuthorDate: Thu Mar 28 09:06:02 2019 +0100
Commit: Jan Holesovsky <kendy at collabora.com>
CommitDate: Thu Mar 28 09:06:02 2019 +0100
Revert "Fix linking error in the !HAVE_FEATURE_PDFIUM case"
This reverts commit f961ebd3ea10313c409165f84ff0885fc2b09874.
diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx
index 30160c3fa79c..87c2c233a732 100644
--- a/vcl/source/gdi/impgraph.cxx
+++ b/vcl/source/gdi/impgraph.cxx
@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include <config_features.h>
-
#include <sal/config.h>
#include <comphelper/processfactory.hxx>
@@ -1624,7 +1622,6 @@ void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
}
}
}
-#if HAVE_FEATURE_PDFIUM
else if (nMagic == nPdfMagic)
{
// Stream in PDF data.
@@ -1648,7 +1645,6 @@ void ReadImpGraphic( SvStream& rIStm, ImpGraphic& rImpGraphic )
rImpGraphic.meType = GraphicType::Bitmap;
}
-#endif
else
{
rIStm.SetError(nOrigError);
More information about the Libreoffice-commits
mailing list