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: */

Reply via email to