[Libreoffice-commits] core.git: Branch 'feature/vba-export' - oox/source

Rosemary rosemaryseb8 at gmail.com
Mon Sep 7 19:44:34 PDT 2015


 oox/source/ole/vbaexport.cxx |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

New commits:
commit 360fb6bd35045269a5a7e6147bdeeecf4536263d
Author: Rosemary <rosemaryseb8 at gmail.com>
Date:   Mon Sep 7 18:35:18 2015 +0530

    Export PROJECTwm stream
    
    Change-Id: I06515a31b2587d3b3aa5bda03b47d228c563db54

diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx
index af997ce..772a24f 100644
--- a/oox/source/ole/vbaexport.cxx
+++ b/oox/source/ole/vbaexport.cxx
@@ -648,6 +648,26 @@ void exportVBAProjectStream(SvStream& rStrm)
     rStrm.WriteUInt16(0x0000); // Undefined
 }
 
+// section 2.3.3.1 NAMEMAP
+void writeNAMEMAP(SvStream& rStrm, css::uno::Sequence<OUString> rElementNames)
+{
+    int n = rElementNames.getLength();
+    for(sal_Int32 i = 0; i < n; ++i)
+    {
+        exportString(rStrm, rElementNames[i]);
+        rStrm.WriteUInt8(0x00); // terminator
+        exportUTF16String(rStrm, rElementNames[i]);
+        rStrm.WriteUInt16(0x0000); // terminator
+    }
+}
+
+// section 2.3.3 PROJECTwm Stream
+void exportPROJECTwmStream(SvStream& rStrm, css::uno::Sequence<OUString> rElementNames)
+{
+    writeNAMEMAP(rStrm, rElementNames);
+    rStrm.WriteUInt16(0x0000); // terminator
+}
+
 }
 
 void VbaExport::exportVBA(SotStorage* pRootStorage)
@@ -665,6 +685,8 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
         pModuleStream[i] = pVBAStream->OpenSotStream(aElementNames[i], STREAM_READWRITE);
     }
     SotStorageStream* pVBAProjectStream = pVBAStream->OpenSotStream("_VBA_PROJECT", STREAM_READWRITE);
+    SotStorageStream* pPROJECTwmStream = pRootStorage->OpenSotStream("PROJECT", STREAM_READWRITE);
+
 
     // export
     exportDirStream(*pDirStream, xNameContainer);
@@ -676,6 +698,7 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
         exportModuleStream(*pModuleStream[i], aSourceCode, aElementNames[i]);
     }
     exportVBAProjectStream(*pVBAProjectStream);
+    exportPROJECTwmStream(*pPROJECTwmStream, aElementNames);
 
     pVBAProjectStream->Commit();
     for(sal_Int32 i = 0; i < n; i++)
@@ -684,6 +707,7 @@ void VbaExport::exportVBA(SotStorage* pRootStorage)
     }
     pDirStream->Commit();
     pVBAStream->Commit();
+    pPROJECTwmStream->Commit();
     pRootStorage->Commit();
 }
 


More information about the Libreoffice-commits mailing list