summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-04-02 15:42:30 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-04-02 16:18:57 +0200
commit0635918c5153116a22eebec12d1b5de9d6e83e01 (patch)
tree2b247fee369c21feab7d4493496110ca5ea1ef48 /sw
parent44405c95b63fcd4b8b594c47106a7491424cbc40 (diff)
SwFrmFmts: add a dumpAsXml() method
With this, it's possible to see properties of e.g. fly frames in a document. Change-Id: Iba68156ba7f0149dfea3e0a6367b71b8642a2a80
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/docary.hxx1
-rw-r--r--sw/source/core/docnode/nodedump.cxx126
2 files changed, 125 insertions, 2 deletions
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
index 93f18154b40b..3269eb0dd94d 100644
--- a/sw/inc/docary.hxx
+++ b/sw/inc/docary.hxx
@@ -81,6 +81,7 @@ public:
virtual SwFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return (SwFmt*)operator[](idx); }
sal_uInt16 GetPos(const SwFrmFmt* pFmt) const;
bool Contains(const SwFrmFmt* pFmt) const;
+ void dumpAsXml(xmlTextWriterPtr w);
/// free's any remaining child objects
virtual ~SwFrmFmts();
};
diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx
index dbdf4801c91a..11ebfa1e15c6 100644
--- a/sw/source/core/docnode/nodedump.cxx
+++ b/sw/source/core/docnode/nodedump.cxx
@@ -16,7 +16,11 @@
#include "docufld.hxx"
#include "txatbase.hxx"
#include "fmtautofmt.hxx"
+#include "fmtcntnt.hxx"
#include "charfmt.hxx"
+#include "frmfmt.hxx"
+#include "fmtanchr.hxx"
+#include "fmtsrnd.hxx"
#include "paratr.hxx"
#include "redline.hxx"
#include <swmodule.hxx>
@@ -28,8 +32,10 @@
#include <editeng/fhgtitem.hxx>
#include <editeng/editobj.hxx>
#include <editeng/outlobj.hxx>
+#include <svx/xdef.hxx>
#include <svx/svdpage.hxx>
#include <svx/svdmodel.hxx>
+#include <svx/xfillit0.hxx>
#include <tools/datetimeutils.hxx>
#include <libxml/encoding.h>
@@ -171,6 +177,7 @@ void SwDoc::dumpAsXml( xmlTextWriterPtr w )
mpFldTypes->dumpAsXml( writer );
mpTxtFmtCollTbl->dumpAsXml( writer );
mpCharFmtTbl->dumpAsXml( writer );
+ mpSpzFrmFmtTbl->dumpAsXml( writer );
mpNumRuleTbl->dumpAsXml( writer );
mpRedlineTbl->dumpAsXml( writer );
mpExtraRedlineTbl->dumpAsXml( writer );
@@ -365,8 +372,8 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
css::uno::Any aAny;
static_cast<const SvxRsidItem*>(pItem)->QueryValue(aAny);
oValue = OString::number(aAny.get<sal_uInt32>());
+ break;
}
- break;
case RES_CHRATR_ROTATE: pWhich = "character rotation"; oValue = OString::number(static_cast<const SvxCharRotateItem*>(pItem)->GetValue()); break;
case RES_PARATR_OUTLINELEVEL: pWhich = "paragraph outline level"; oValue = OString::number(static_cast<const SfxUInt16Item*>(pItem)->GetValue()); break;
case RES_PARATR_NUMRULE: pWhich = "paragraph numbering rule"; oValue = OUStringToOString(static_cast<const SwNumRuleItem*>(pItem)->GetValue(), RTL_TEXTENCODING_UTF8); break;
@@ -378,8 +385,103 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
pWhich = "character font size";
const SvxFontHeightItem* pFontHeightItem = static_cast<const SvxFontHeightItem*>(pItem);
oValue = "nHeight: " + OString::number(pFontHeightItem->GetHeight()) + ", nProp: " + OString::number(pFontHeightItem->GetProp());
+ break;
+ }
+ case RES_CNTNT:
+ {
+ pWhich = "frame content";
+ const SwFmtCntnt* pCntnt = static_cast<const SwFmtCntnt*>(pItem);
+ oValue = "node index: " + OString::number(pCntnt->GetCntntIdx()->GetNode().GetIndex());
+ break;
+ }
+ case RES_FRM_SIZE:
+ {
+ pWhich = "frame size";
+ break;
+ }
+ case RES_VERT_ORIENT:
+ {
+ pWhich = "frame vertical orientation";
+ break;
+ }
+ case RES_HORI_ORIENT:
+ {
+ pWhich = "frame horizontal orientation";
+ break;
+ }
+ case RES_ANCHOR:
+ {
+ pWhich = "frame anchor";
+ const SwFmtAnchor* pAnchor = static_cast<const SwFmtAnchor*>(pItem);
+ const SwPosition* pPosition = pAnchor->GetCntntAnchor();
+ if (pPosition)
+ oValue = "node index: " + OString::number(pPosition->nNode.GetNode().GetIndex()) + ", index: " + OString::number(pPosition->nContent.GetIndex());
+ break;
+ }
+ case RES_SURROUND:
+ {
+ pWhich = "frame surround";
+ const SwFmtSurround* pSurround = static_cast<const SwFmtSurround*>(pItem);
+ switch (pSurround->GetSurround())
+ {
+ case SURROUND_NONE:
+ oValue = "none";
+ break;
+ case SURROUND_THROUGHT:
+ oValue = "throught";
+ break;
+ case SURROUND_PARALLEL:
+ oValue = "parallel";
+ break;
+ case SURROUND_IDEAL:
+ oValue = "ideal";
+ break;
+ case SURROUND_LEFT:
+ oValue = "left";
+ break;
+ case SURROUND_RIGHT:
+ oValue = "right";
+ break;
+ case SURROUND_END:
+ oValue = "end";
+ break;
+ }
+ break;
+ }
+ case RES_FOLLOW_TEXT_FLOW:
+ {
+ pWhich = "frame follow text flow";
+ break;
+ }
+ case RES_WRAP_INFLUENCE_ON_OBJPOS:
+ {
+ pWhich = "frame wrap influence on object position";
+ break;
+ }
+ case XATTR_FILLSTYLE:
+ {
+ pWhich = "fill style";
+ const XFillStyleItem* pFillStyleItem = static_cast<const XFillStyleItem*>(pItem);
+ switch (pFillStyleItem->GetValue())
+ {
+ case XFILL_NONE:
+ oValue = "none";
+ break;
+ case XFILL_SOLID:
+ oValue = "solid";
+ break;
+ case XFILL_GRADIENT:
+ oValue = "gradient";
+ break;
+ case XFILL_HATCH:
+ oValue = "hatch";
+ break;
+ case XFILL_BITMAP:
+ oValue = "bitmap";
+ break;
+ }
+ break;
}
- break;
}
if (pWhich)
writer.writeFormatAttribute("which", "%s", BAD_CAST(pWhich));
@@ -390,6 +492,26 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
}
}
+void SwFrmFmts::dumpAsXml(xmlTextWriterPtr w)
+{
+ WriterHelper writer(w);
+ if (size())
+ {
+ writer.startElement("swfrmfmts");
+ for (size_t i = 0; i < size(); ++i)
+ {
+ SwFrmFmt* pFmt = static_cast<SwFrmFmt*>(GetFmt(i));
+ writer.startElement("swfrmfmt");
+ OString aName = OUStringToOString(pFmt->GetName(), RTL_TEXTENCODING_UTF8);
+ writer.writeFormatAttribute("name", "%s", BAD_CAST(aName.getStr()));
+
+ lcl_dumpSfxItemSet(writer, &pFmt->GetAttrSet());
+ writer.endElement();
+ }
+ writer.endElement();
+ }
+}
+
void SwCharFmts::dumpAsXml(xmlTextWriterPtr w)
{
WriterHelper writer(w);