sw/inc/docary.hxx | 2 sw/source/core/docnode/nodedump.cxx | 100 +++++++++++++++++++++++++++--------- 2 files changed, 78 insertions(+), 24 deletions(-)
New commits: commit 7f71207891bcf47496643551e6474c265a7ad8e9 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 3 15:18:52 2013 +0200 sw doc model dump: also output the SfxItemSet of paragraph styles Change-Id: Ie85b8e6669f3b0d3bef48d56934c8ec07d858b8a diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx index 6fbe63e..59a6a1a 100644 --- a/sw/source/core/docnode/nodedump.cxx +++ b/sw/source/core/docnode/nodedump.cxx @@ -18,9 +18,11 @@ #include "fmtautofmt.hxx" #include "charfmt.hxx" #include <svl/itemiter.hxx> +#include <svl/intitem.hxx> #include <libxml/encoding.h> #include <libxml/xmlwriter.h> +#include <boost/optional.hpp> namespace { @@ -282,6 +284,35 @@ void SwCharFmts::dumpAsXml(xmlTextWriterPtr w) } } +void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet) +{ + SfxItemIter aIter(*pSet); + const SfxPoolItem* pItem = aIter.FirstItem(); + while (pItem) + { + writer.startElement("item"); + writer.writeFormatAttribute("whichId", TMP_FORMAT, pItem->Which()); + const char* pWhich = 0; + boost::optional<sal_Int32> oValue; + switch (pItem->Which()) + { + case RES_CHRATR_POSTURE: pWhich = "posture"; break; + case RES_CHRATR_WEIGHT: pWhich = "weight"; break; + case RES_CHRATR_CJK_POSTURE: pWhich = "cjk posture"; break; + case RES_CHRATR_CJK_WEIGHT: pWhich = "cjk weight"; break; + case RES_CHRATR_CTL_POSTURE: pWhich = "ctl posture"; break; + case RES_CHRATR_CTL_WEIGHT: pWhich = "ctl weight"; break; + case RES_PARATR_OUTLINELEVEL: pWhich = "outline level"; oValue = static_cast<const SfxUInt16Item*>(pItem)->GetValue(); break; + } + if (pWhich) + writer.writeFormatAttribute("which", "%s", BAD_CAST(pWhich)); + if (oValue) + writer.writeFormatAttribute("value", TMP_FORMAT, *oValue); + pItem = aIter.NextItem(); + writer.endElement(); + } +} + void SwTxtFmtColls::dumpAsXml(xmlTextWriterPtr w) { WriterHelper writer(w); @@ -294,6 +325,8 @@ void SwTxtFmtColls::dumpAsXml(xmlTextWriterPtr w) writer.startElement("swtxtfmtcoll"); OString aName = OUStringToOString(pColl->GetName(), RTL_TEXTENCODING_UTF8); writer.writeFormatAttribute("name", "%s", BAD_CAST(aName.getStr())); + + lcl_dumpSfxItemSet(writer, &pColl->GetAttrSet()); writer.endElement(); } writer.endElement(); @@ -341,27 +374,7 @@ void SwTxtNode::dumpAsXml( xmlTextWriterPtr w ) { boost::shared_ptr<SfxItemSet> const pSet(pHint->GetAutoFmt().GetStyleHandle()); writer.startElement("autofmt"); - SfxItemIter aIter(*pSet); - const SfxPoolItem* pItem = aIter.FirstItem(); - while (pItem) - { - writer.startElement("item"); - writer.writeFormatAttribute("whichId", TMP_FORMAT, pItem->Which()); - pWhich = 0; - switch (pItem->Which()) - { - case RES_CHRATR_POSTURE: pWhich = "posture"; break; - case RES_CHRATR_WEIGHT: pWhich = "weight"; break; - case RES_CHRATR_CJK_POSTURE: pWhich = "cjk posture"; break; - case RES_CHRATR_CJK_WEIGHT: pWhich = "cjk weight"; break; - case RES_CHRATR_CTL_POSTURE: pWhich = "ctl posture"; break; - case RES_CHRATR_CTL_WEIGHT: pWhich = "ctl weight"; break; - } - if (pWhich) - writer.writeFormatAttribute("which", "%s", BAD_CAST(pWhich)); - pItem = aIter.NextItem(); - writer.endElement(); - } + lcl_dumpSfxItemSet(writer, pSet.get()); writer.endElement(); } commit 5a1e73615e5fe0c1737afdc184444f971d80ab20 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 3 14:58:14 2013 +0200 sw: include names of character and paragraph styles in doc model dump Change-Id: Ib766fa7753e52ad81f5fe976d0e6c3e1f688a826 diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx index 6b9636e..db4a419 100644 --- a/sw/inc/docary.hxx +++ b/sw/inc/docary.hxx @@ -88,6 +88,7 @@ public: virtual SwFmt* GetFmt(size_t idx) const { return (SwFmt*)operator[](idx); } sal_uInt16 GetPos(const SwCharFmt* pFmt) const; bool Contains(const SwCharFmt* pFmt) const; + void dumpAsXml(xmlTextWriterPtr w); /// free's any remaining child objects virtual ~SwCharFmts(); }; @@ -98,6 +99,7 @@ public: virtual size_t GetFmtCount() const { return size(); } virtual SwFmt* GetFmt(size_t idx) const { return (SwFmt*)operator[](idx); } sal_uInt16 GetPos(const SwTxtFmtColl* pFmt) const; + void dumpAsXml(xmlTextWriterPtr w); virtual ~SwTxtFmtColls() {} }; diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx index 0600ebc..6fbe63e 100644 --- a/sw/source/core/docnode/nodedump.cxx +++ b/sw/source/core/docnode/nodedump.cxx @@ -16,6 +16,7 @@ #include "docufld.hxx" #include "txatbase.hxx" #include "fmtautofmt.hxx" +#include "charfmt.hxx" #include <svl/itemiter.hxx> #include <libxml/encoding.h> @@ -110,6 +111,8 @@ void SwDoc::dumpAsXml( xmlTextWriterPtr w ) m_pNodes->dumpAsXml( writer ); mpMarkManager->dumpAsXml( writer ); mpFldTypes->dumpAsXml( writer ); + mpTxtFmtCollTbl->dumpAsXml( writer ); + mpCharFmtTbl->dumpAsXml( writer ); writer.endElement(); } @@ -261,6 +264,42 @@ void SwStartNode::dumpAsXml( xmlTextWriterPtr w ) // writer.endElement(); - it is a start node, so don't end, will make xml better nested } +void SwCharFmts::dumpAsXml(xmlTextWriterPtr w) +{ + WriterHelper writer(w); + if (size()) + { + writer.startElement("swcharfmts"); + for (size_t i = 0; i < size(); ++i) + { + SwCharFmt* pFmt = static_cast<SwCharFmt*>(GetFmt(i)); + writer.startElement("swcharfmt"); + OString aName = OUStringToOString(pFmt->GetName(), RTL_TEXTENCODING_UTF8); + writer.writeFormatAttribute("name", "%s", BAD_CAST(aName.getStr())); + writer.endElement(); + } + writer.endElement(); + } +} + +void SwTxtFmtColls::dumpAsXml(xmlTextWriterPtr w) +{ + WriterHelper writer(w); + if (size()) + { + writer.startElement("swtxtfmtcolls"); + for (size_t i = 0; i < size(); ++i) + { + SwTxtFmtColl* pColl = static_cast<SwTxtFmtColl*>(GetFmt(i)); + writer.startElement("swtxtfmtcoll"); + OString aName = OUStringToOString(pColl->GetName(), RTL_TEXTENCODING_UTF8); + writer.writeFormatAttribute("name", "%s", BAD_CAST(aName.getStr())); + writer.endElement(); + } + writer.endElement(); + } +} + void SwTxtNode::dumpAsXml( xmlTextWriterPtr w ) { WriterHelper writer( w ); commit 087a8cb10058acdd1bd5071ca3d4725fe585dd7d Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 3 14:32:03 2013 +0200 SwFldTypes::dumpAsXml: handle RES_{PAGENUMBER,DATETIME}FLD Change-Id: Iccdf53d285ed36c59c7dab4050f1c56b0e326c91 diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx index d415784..0600ebc 100644 --- a/sw/source/core/docnode/nodedump.cxx +++ b/sw/source/core/docnode/nodedump.cxx @@ -155,9 +155,9 @@ void SwFldTypes::dumpAsXml( xmlTextWriterPtr w ) const char* name = "???"; switch(pCurFldFmt->GetFld()->GetTyp()->Which()) { - case RES_POSTITFLD: - name = "swpostitfield"; - break; + case RES_PAGENUMBERFLD: name = "swpagenumberfield"; break; + case RES_POSTITFLD: name = "swpostitfield"; break; + case RES_DATETIMEFLD: name = "swdatetimefield"; break; default: SAL_INFO("sw.core", "unhandled field type " << pCurFldFmt->GetFld()->GetTyp()->Which()); break; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits