[Libreoffice-commits] core.git: include/vcl vcl/source

panoskorovesis (via logerrit) logerrit at kemper.freedesktop.org
Tue Jul 27 06:08:19 UTC 2021


 include/vcl/filter/SvmReader.hxx    |    1 
 include/vcl/metaact.hxx             |    4 +++
 vcl/source/filter/svm/SvmReader.cxx |   39 +++++++++++++++++++++++++++++++++++-
 3 files changed, 43 insertions(+), 1 deletion(-)

New commits:
commit 913cb8b32eb5346699770d52d288e02cc090011e
Author:     panoskorovesis <panoskorovesis at outlook.com>
AuthorDate: Thu Jul 15 12:23:31 2021 +0300
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Tue Jul 27 08:07:46 2021 +0200

    Add Handler for Comment Read
    
    The handler separates MetaCommentAction::Read from metaact.hxx
    Read implementation is now in SvmReader.hxx
    
    Change-Id: Ic37db0ecb30482b3503ede88cd9d72de2ed0efde
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119194
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/include/vcl/filter/SvmReader.hxx b/include/vcl/filter/SvmReader.hxx
index 3ef53c4a7962..f075e2899f6f 100644
--- a/include/vcl/filter/SvmReader.hxx
+++ b/include/vcl/filter/SvmReader.hxx
@@ -87,6 +87,7 @@ public:
     rtl::Reference<MetaAction> FloatTransparentHandler(ImplMetaReadData* pData);
     rtl::Reference<MetaAction> EPSHandler();
     rtl::Reference<MetaAction> RefPointHandler();
+    rtl::Reference<MetaAction> CommentHandler();
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index fe79942ac28e..be174299d1f1 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -1796,6 +1796,10 @@ public:
     sal_Int32           GetValue() const { return mnValue; }
     sal_uInt32          GetDataSize() const { return mnDataSize; }
     const sal_uInt8*    GetData() const { return mpData.get(); }
+    void                SetComment(const OString& rComment) { maComment = rComment; }
+    void                SetValue(const sal_Int32 nValue) { mnValue = nValue; }
+    void                SetDataSize(const sal_Int32 nDataSize) { mnDataSize = nDataSize; }
+    void                SetData(const sal_uInt8* pData, const sal_uInt32 nDataSize) { ImplInitDynamicData(pData, nDataSize); }
 };
 
 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaLayoutModeAction final : public MetaAction
diff --git a/vcl/source/filter/svm/SvmReader.cxx b/vcl/source/filter/svm/SvmReader.cxx
index 675bba95f7da..587b31809c7d 100644
--- a/vcl/source/filter/svm/SvmReader.cxx
+++ b/vcl/source/filter/svm/SvmReader.cxx
@@ -311,7 +311,7 @@ rtl::Reference<MetaAction> SvmReader::MetaActionHandler(ImplMetaReadData* pData)
             return RefPointHandler();
             break;
         case MetaActionType::COMMENT:
-            pAction = new MetaCommentAction;
+            return CommentHandler();
             break;
         case MetaActionType::LAYOUTMODE:
             pAction = new MetaLayoutModeAction;
@@ -1377,4 +1377,41 @@ rtl::Reference<MetaAction> SvmReader::RefPointHandler()
 
     return pAction;
 }
+
+rtl::Reference<MetaAction> SvmReader::CommentHandler()
+{
+    auto pAction = new MetaCommentAction();
+
+    VersionCompatRead aCompat(mrStream);
+    OString aComment;
+    aComment = read_uInt16_lenPrefixed_uInt8s_ToOString(mrStream);
+    sal_Int32 nValue;
+    sal_uInt32 nDataSize;
+    mrStream.ReadInt32(nValue).ReadUInt32(nDataSize);
+
+    if (nDataSize > mrStream.remainingSize())
+    {
+        SAL_WARN("vcl.gdi", "Parsing error: " << mrStream.remainingSize() << " available data, but "
+                                              << nDataSize << " claimed, truncating");
+        nDataSize = mrStream.remainingSize();
+    }
+
+    SAL_INFO("vcl.gdi", "MetaCommentAction::Read " << aComment);
+
+    std::unique_ptr<sal_uInt8[]> pData;
+    pData.reset();
+
+    if (nDataSize)
+    {
+        pData.reset(new sal_uInt8[nDataSize]);
+        mrStream.ReadBytes(pData.get(), nDataSize);
+    }
+
+    pAction->SetComment(aComment);
+    pAction->SetDataSize(nDataSize);
+    pAction->SetValue(nValue);
+    pAction->SetData(pData.get(), nDataSize);
+
+    return pAction;
+}
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list