sw/source/filter/ww8/wrtww8.cxx | 20 ++++++++++++++++++++ sw/source/filter/ww8/ww8scan.cxx | 6 +++++- sw/source/filter/ww8/ww8scan.hxx | 6 +++++- 3 files changed, 30 insertions(+), 2 deletions(-)
New commits: commit f1f92d92ed7467d71db7d94d6e4aa40f65e8ddfc Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Dec 14 10:25:38 2015 +0100 DOC export: write SttbfBkmkFactoid structure This contains the name of the bookmarks, except that factoid bookmarks don't really have names... Change-Id: I0fe3b983edf206d51e4d1cf4a66919fce0167738 diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index 73d6e17..c145fd6 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -351,6 +351,23 @@ void WW8_WrtFactoids::Write(WW8Export& rExport) SvStream& rStream = *rExport.pTableStrm; + rExport.pFib->fcSttbfBkmkFactoid = rStream.Tell(); + // Write SttbfBkmkFactoid. + rStream.WriteUInt16(0xffff); // fExtend + rStream.WriteUInt16(m_aStartCPs.size()); // cData + rStream.WriteUInt16(0); // cbExtra + rStream.WriteUInt16(6); // cchData + + // Write FACTOIDINFO. + for (size_t i = 0; i < m_aStartCPs.size(); ++i) + { + rStream.WriteUInt32(i); // dwId + rStream.WriteUInt16(0); // fSubEntry + rStream.WriteUInt16(0); // fto + rStream.WriteUInt32(0); // pfpb + } + rExport.pFib->lcbSttbfBkmkFactoid = rStream.Tell() - rExport.pFib->fcSttbfBkmkFactoid; + rExport.pFib->fcPlcfBkfFactoid = rStream.Tell(); for (const WW8_CP& rCP : m_aStartCPs) rStream.WriteInt32(rCP); diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx index 5de5ae6..326ae80 100644 --- a/sw/source/filter/ww8/ww8scan.cxx +++ b/sw/source/filter/ww8/ww8scan.cxx @@ -6244,7 +6244,9 @@ bool WW8Fib::Write(SvStream& rStrm) SvtMiscOptions aMiscOptions; if (aMiscOptions.IsExperimentalMode()) { - pData += 0x432 - 0x422; + pData += 0x42a - 0x422; + Set_UInt32(pData, fcSttbfBkmkFactoid); + Set_UInt32(pData, lcbSttbfBkmkFactoid); Set_UInt32(pData, fcPlcfBkfFactoid); Set_UInt32(pData, lcbPlcfBkfFactoid); diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx index bae3b43..0b18076 100644 --- a/sw/source/filter/ww8/ww8scan.hxx +++ b/sw/source/filter/ww8/ww8scan.hxx @@ -1452,8 +1452,12 @@ public: WW8_FC fcAtrdExtra; sal_uInt32 lcbAtrdExtra; - // 0x422 - 0x431 == ignore + // 0x422 - 0x429 == ignore + /// 0x42a smart-tag bookmark string table offset. + WW8_FC fcSttbfBkmkFactoid; + /// 0x42e smart-tag bookmark string table length. + sal_uInt32 lcbSttbfBkmkFactoid; /// 0x432 smart-tag bookmark starts offset. WW8_FC fcPlcfBkfFactoid; /// 0x436 smart-tag bookmark ends length. commit e1fa0eab7d73bd1bd57f8f47821430bb6b68af99 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Dec 14 10:14:41 2015 +0100 DOC export: embed factoids when writing factoid bookmarks Change-Id: Ibefc4b908c752a6256b168b4045afb400ba8b17a diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx index 0f9ab02..73d6e17 100644 --- a/sw/source/filter/ww8/wrtww8.cxx +++ b/sw/source/filter/ww8/wrtww8.cxx @@ -346,6 +346,9 @@ void WW8_WrtFactoids::Write(WW8Export& rExport) if (m_aStartCPs.empty()) return; + // Smart tags are otherwise removed by Word on saving. + rExport.pDop->fEmbedFactoids = true; + SvStream& rStream = *rExport.pTableStrm; rExport.pFib->fcPlcfBkfFactoid = rStream.Tell(); diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx index 842f557..5de5ae6 100644 --- a/sw/source/filter/ww8/ww8scan.cxx +++ b/sw/source/filter/ww8/ww8scan.cxx @@ -7720,6 +7720,8 @@ bool WW8Dop::Write(SvStream& rStrm, WW8Fib& rFib) const pData += 32; a16Bit = 0; + if (fEmbedFactoids) + a16Bit |= 0x8; if (fAcetateShowMarkup) a16Bit |= 0x1000; //Word XP at least requires fAcetateShowMarkup to honour fAcetateShowAtn _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits