summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2023-04-01 12:40:58 +0100
committerMichael Meeks <michael.meeks@collabora.com>2023-04-03 10:30:10 +0200
commit0bd949f4412249e5ecd63716efcc55d92d120da9 (patch)
tree1c4600acf34ddbc9f68fd47fcb8df0eefe2b15cc /vcl
parent56ae7d01505fdae421109cfc78449230ba589d79 (diff)
BinaryDataContainer: pure re-factor to encapsulate stream copying.
Change-Id: Iab24e8d18bf7badbca672fbdbf455f78d08f41a0 Signed-off-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149905 Tested-by: Jenkins
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/pdf/ExternalPDFStreams.hxx4
-rw-r--r--vcl/source/filter/graphicfilter.cxx12
-rw-r--r--vcl/source/gdi/TypeSerializer.cxx4
-rw-r--r--vcl/source/gdi/impgraph.cxx5
-rw-r--r--vcl/source/graphic/BinaryDataContainer.cxx11
5 files changed, 18 insertions, 18 deletions
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: */