include/vcl/BinaryDataContainer.hxx | 9 +++++---- svx/source/xoutdev/_xoutbmp.cxx | 3 +-- vcl/inc/pdf/ExternalPDFStreams.hxx | 4 +--- vcl/source/filter/graphicfilter.cxx | 12 +++--------- vcl/source/gdi/TypeSerializer.cxx | 4 ++-- vcl/source/gdi/impgraph.cxx | 5 +---- vcl/source/graphic/BinaryDataContainer.cxx | 11 +++++++++++ 7 files changed, 24 insertions(+), 24 deletions(-)
New commits: commit 0bd949f4412249e5ecd63716efcc55d92d120da9 Author: Michael Meeks <michael.me...@collabora.com> AuthorDate: Sat Apr 1 12:40:58 2023 +0100 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Mon Apr 3 10:30:10 2023 +0200 BinaryDataContainer: pure re-factor to encapsulate stream copying. Change-Id: Iab24e8d18bf7badbca672fbdbf455f78d08f41a0 Signed-off-by: Michael Meeks <michael.me...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149905 Tested-by: Jenkins diff --git a/include/vcl/BinaryDataContainer.hxx b/include/vcl/BinaryDataContainer.hxx index e6e13cd340d8..0d5be69f512c 100644 --- a/include/vcl/BinaryDataContainer.hxx +++ b/include/vcl/BinaryDataContainer.hxx @@ -41,16 +41,17 @@ public: BinaryDataContainer& operator=(BinaryDataContainer&& rBinaryDataContainer) noexcept = default; - size_t getSize() const { return mpData ? mpData->size() : 0; } - bool isEmpty() const { return !mpData || mpData->empty(); } - const sal_uInt8* getData() const { return mpData ? mpData->data() : nullptr; } + size_t getSize() const; + bool isEmpty() const; + const sal_uInt8* getData() const; + // Returns the data as a stream open for reading SvMemoryStream getMemoryStream(); + std::size_t writeToStream(SvStream& rStream) const; size_t calculateHash() const; auto cbegin() const { return mpData->cbegin(); } - auto cend() const { return mpData->cend(); } }; diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx index 0f40946f429f..e095f8e200f1 100644 --- a/svx/source/xoutdev/_xoutbmp.cxx +++ b/svx/source/xoutdev/_xoutbmp.cxx @@ -207,8 +207,7 @@ ErrCode XOutBitmap::WriteGraphic( const Graphic& rGraphic, OUString& rFileName, if (pOStm) { - auto& rDataContainer = rGraphic.getVectorGraphicData()->getBinaryDataContainer(); - pOStm->WriteBytes(rDataContainer.getData(), rDataContainer.getSize()); + rGraphic.getVectorGraphicData()->getBinaryDataContainer().writeToStream(*pOStm); aMedium.Commit(); if (!aMedium.GetError()) diff --git a/vcl/inc/pdf/ExternalPDFStreams.hxx b/vcl/inc/pdf/ExternalPDFStreams.hxx index 45b15f7a74bc..e2ddd58b91a5 100644 --- a/vcl/inc/pdf/ExternalPDFStreams.hxx +++ b/vcl/inc/pdf/ExternalPDFStreams.hxx @@ -38,9 +38,7 @@ struct VCL_DLLPUBLIC ExternalPDFStream { if (!mpPDFDocument) { - SvMemoryStream aPDFStream; - aPDFStream.WriteBytes(maDataContainer.getData(), maDataContainer.getSize()); - aPDFStream.Seek(0); + SvMemoryStream aPDFStream = maDataContainer.getMemoryStream(); auto pPDFDocument = std::make_shared<filter::PDFDocument>(); if (!pPDFDocument->ReadWithPossibleFixup(aPDFStream)) { diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx index dc7b47598d71..53071f6dea76 100644 --- a/vcl/source/filter/graphicfilter.cxx +++ b/vcl/source/filter/graphicfilter.cxx @@ -1632,9 +1632,7 @@ ErrCode GraphicFilter::ExportGraphic( const Graphic& rGraphic, std::u16string_vi && !rVectorGraphicDataPtr->getBinaryDataContainer().isEmpty() && !bIsEMF) { - auto & aDataContainer = rVectorGraphicDataPtr->getBinaryDataContainer(); - rTempStm->WriteBytes(aDataContainer.getData(), aDataContainer.getSize()); - + rVectorGraphicDataPtr->getBinaryDataContainer().writeToStream(*rTempStm); if (rTempStm->GetError()) { nStatus = ERRCODE_GRFILTER_IOERROR; @@ -1673,9 +1671,7 @@ ErrCode GraphicFilter::ExportGraphic( const Graphic& rGraphic, std::u16string_vi && rVectorGraphicDataPtr->getType() == VectorGraphicDataType::Emf && !rVectorGraphicDataPtr->getBinaryDataContainer().isEmpty()) { - auto & aDataContainer = rVectorGraphicDataPtr->getBinaryDataContainer(); - rTempStm->WriteBytes(aDataContainer.getData(), aDataContainer.getSize()); - + rVectorGraphicDataPtr->getBinaryDataContainer().writeToStream(*rTempStm); if (rTempStm->GetError()) { nStatus = ERRCODE_GRFILTER_IOERROR; @@ -1743,9 +1739,7 @@ ErrCode GraphicFilter::ExportGraphic( const Graphic& rGraphic, std::u16string_vi && rVectorGraphicDataPtr->getType() == VectorGraphicDataType::Svg && !rVectorGraphicDataPtr->getBinaryDataContainer().isEmpty()) { - auto & aDataContainer = rVectorGraphicDataPtr->getBinaryDataContainer(); - rTempStm->WriteBytes(aDataContainer.getData(), aDataContainer.getSize()); - + rVectorGraphicDataPtr->getBinaryDataContainer().writeToStream(*rTempStm); if( rTempStm->GetError() ) { nStatus = ERRCODE_GRFILTER_IOERROR; diff --git a/vcl/source/gdi/TypeSerializer.cxx b/vcl/source/gdi/TypeSerializer.cxx index 83f77bed1379..0882f97243ad 100644 --- a/vcl/source/gdi/TypeSerializer.cxx +++ b/vcl/source/gdi/TypeSerializer.cxx @@ -387,8 +387,8 @@ void TypeSerializer::writeGraphic(const Graphic& rGraphic) sal_uInt32 nSize = pVectorGraphicData->getBinaryDataContainer().getSize(); mrStream.WriteUInt32(nSize); - mrStream.WriteBytes(pVectorGraphicData->getBinaryDataContainer().getData(), - nSize); + pVectorGraphicData->getBinaryDataContainer().writeToStream(mrStream); + // For backwards compatibility, used to serialize path mrStream.WriteUniOrByteString(u"", mrStream.GetStreamCharSet()); } diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 8e0dfdd5ad43..84df1765569c 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -1230,10 +1230,7 @@ bool ImpGraphic::swapOutGraphic(SvStream& rStream) } rStream.WriteUInt32(maVectorGraphicData->getBinaryDataContainer().getSize()); - - rStream.WriteBytes( - maVectorGraphicData->getBinaryDataContainer().getData(), - maVectorGraphicData->getBinaryDataContainer().getSize()); + maVectorGraphicData->getBinaryDataContainer().writeToStream(rStream); } else if (mpAnimation) { diff --git a/vcl/source/graphic/BinaryDataContainer.cxx b/vcl/source/graphic/BinaryDataContainer.cxx index 80e059137e63..0264fec09983 100644 --- a/vcl/source/graphic/BinaryDataContainer.cxx +++ b/vcl/source/graphic/BinaryDataContainer.cxx @@ -35,4 +35,15 @@ SvMemoryStream BinaryDataContainer::getMemoryStream() return SvMemoryStream(mpData ? mpData->data() : nullptr, getSize(), StreamMode::READ); } +std::size_t BinaryDataContainer::writeToStream(SvStream& rStream) const +{ + return rStream.WriteBytes(getData(), getSize()); +} + +size_t BinaryDataContainer::getSize() const { return mpData ? mpData->size() : 0; } + +bool BinaryDataContainer::isEmpty() const { return !mpData || mpData->empty(); } + +const sal_uInt8* BinaryDataContainer::getData() const { return mpData ? mpData->data() : nullptr; } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */