summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2023-05-04 19:57:47 +0200
committerMiklos Vajna <vmiklos@collabora.com>2023-05-05 08:48:14 +0200
commit5d66979a58363e0362b13c637b7eade0fc28505d (patch)
tree57175db12a2462c42c49ba9c445786ebd76456af
parentd543eb2d8e45999a3d8fa6134f0d98f08acb8037 (diff)
sw layout xml dump: extract SwFlyFrame::dumpAsXml() from SwFrame
Ideally SwFrame should not really know anything about fly frames. Change-Id: Idc10a3c8130a961b01a0abbf6f52b093937fd0dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151401 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--sw/inc/anchoredobject.hxx2
-rw-r--r--sw/source/core/inc/flyfrm.hxx2
-rw-r--r--sw/source/core/layout/fly.cxx27
-rw-r--r--sw/source/core/text/xmldump.cxx8
4 files changed, 29 insertions, 10 deletions
diff --git a/sw/inc/anchoredobject.hxx b/sw/inc/anchoredobject.hxx
index 114380d6f04d..ea8104882b4d 100644
--- a/sw/inc/anchoredobject.hxx
+++ b/sw/inc/anchoredobject.hxx
@@ -485,7 +485,7 @@ class SW_DLLPUBLIC SwAnchoredObject
/** Dump a bunch of useful data to an XML representation to ease
layout understanding, debugging and testing.
*/
- virtual void dumpAsXml( xmlTextWriterPtr pWriter ) const;
+ virtual void dumpAsXml( xmlTextWriterPtr pWriter = nullptr ) const;
/** The element name to show in the XML dump. */
virtual const char* getElementName( ) const { return "SwAnchoredObject"; }
diff --git a/sw/source/core/inc/flyfrm.hxx b/sw/source/core/inc/flyfrm.hxx
index cc6d969401bf..d3815a82835a 100644
--- a/sw/source/core/inc/flyfrm.hxx
+++ b/sw/source/core/inc/flyfrm.hxx
@@ -289,7 +289,7 @@ public:
virtual const SwFlyFrameFormat *GetFormat() const override;
virtual SwFlyFrameFormat *GetFormat() override;
- virtual void dumpAsXml( xmlTextWriterPtr writer ) const override { SwLayoutFrame::dumpAsXml( writer ); };
+ virtual void dumpAsXml(xmlTextWriterPtr writer = nullptr) const override;
virtual void Calc(vcl::RenderContext* pRenderContext) const override;
diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index 387095bbdeed..6d80daf74efc 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -3075,6 +3075,33 @@ SwFlyFrameFormat * SwFlyFrame::GetFormat()
return static_cast< SwFlyFrameFormat * >( GetDep() );
}
+void SwFlyFrame::dumpAsXml(xmlTextWriterPtr writer) const
+{
+ (void)xmlTextWriterStartElement(writer, reinterpret_cast<const xmlChar*>("fly"));
+ dumpAsXmlAttributes(writer);
+
+ (void)xmlTextWriterStartElement(writer, BAD_CAST("infos"));
+ dumpInfosAsXml(writer);
+ (void)xmlTextWriterEndElement(writer);
+ const SwSortedObjs* pAnchored = GetDrawObjs();
+ if (pAnchored && pAnchored->size() > 0)
+ {
+ (void)xmlTextWriterStartElement(writer, BAD_CAST("anchored"));
+
+ for (SwAnchoredObject* pObject : *pAnchored)
+ {
+ pObject->dumpAsXml(writer);
+ }
+
+ (void)xmlTextWriterEndElement(writer);
+ }
+ dumpChildrenAsXml(writer);
+
+ SwAnchoredObject::dumpAsXml(writer);
+
+ (void)xmlTextWriterEndElement(writer);
+}
+
void SwFlyFrame::Calc(vcl::RenderContext* pRenderContext) const
{
if ( !m_bValidContentPos )
diff --git a/sw/source/core/text/xmldump.cxx b/sw/source/core/text/xmldump.cxx
index 39231f410e56..4c66104c12af 100644
--- a/sw/source/core/text/xmldump.cxx
+++ b/sw/source/core/text/xmldump.cxx
@@ -174,9 +174,6 @@ void SwFrame::dumpAsXml( xmlTextWriterPtr writer ) const
switch ( GetType( ) )
{
- case SwFrameType::Fly:
- name = "fly";
- break;
case SwFrameType::Section:
name = "section";
break;
@@ -298,11 +295,6 @@ void SwFrame::dumpAsXml( xmlTextWriterPtr writer ) const
else
{
dumpChildrenAsXml( writer );
- if (IsFlyFrame())
- {
- auto pFlyFrame = static_cast<const SwFlyFrame*>(this);
- pFlyFrame->SwAnchoredObject::dumpAsXml(writer);
- }
}
(void)xmlTextWriterEndElement( writer );
}