[Libreoffice-commits] core.git: sw/inc sw/source

Miklos Vajna (via logerrit) logerrit at kemper.freedesktop.org
Mon Oct 21 19:19:21 UTC 2019


 sw/inc/pagedesc.hxx                |    5 ++++
 sw/source/core/doc/docfmt.cxx      |    1 
 sw/source/core/layout/pagedesc.cxx |   44 +++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+)

New commits:
commit 6243ea0374aca5bf426a3a70428913166bc2cdc8
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Mon Oct 21 17:24:01 2019 +0200
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Mon Oct 21 21:18:03 2019 +0200

    Related: tdf#124770 sw doc model xml dump: handle page descriptions
    
    SwPageDesc is more or less just a named wrapper around one or more frame
    formats, and we know how to dump them already.
    
    This helps understanding cases where previously you could only (easily)
    see the value of a page size at import time at UNO API level (in mm100)
    and later the computed layout frame sizes (in twips), but not the doc
    model sizes (in twips).
    
    Change-Id: Iad7e8059b2c8d7785d33504c878f2d7ada6004b0
    Reviewed-on: https://gerrit.libreoffice.org/81255
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
    Tested-by: Jenkins

diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index 522986f87c1b..86e3fc075a7c 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -42,6 +42,7 @@ class SfxPoolItem;
 class SwTextFormatColl;
 class SwNode;
 class SwPageDescs;
+typedef struct _xmlTextWriter* xmlTextWriterPtr;
 
 /// Footnote information.
 class SW_DLLPUBLIC SwPageFootnoteInfo
@@ -273,6 +274,8 @@ public:
 
     SwPageDesc( const SwPageDesc& );
     virtual ~SwPageDesc() override;
+
+    void dumpAsXml(xmlTextWriterPtr pWriter) const;
 };
 
 namespace std {
@@ -431,6 +434,8 @@ public:
 
     bool contains( const value_type& x ) const
         { return x->m_pdList == this; }
+
+    void dumpAsXml(xmlTextWriterPtr pWriter) const;
 };
 
 #endif // INCLUDED_SW_INC_PAGEDESC_HXX
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index f2e9b105e355..deacc7c61609 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1939,6 +1939,7 @@ void SwDoc::dumpAsXml(xmlTextWriterPtr pWriter) const
     xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
 
     m_pNodes->dumpAsXml(pWriter);
+    m_PageDescs.dumpAsXml(pWriter);
     maDBData.dumpAsXml(pWriter);
     mpMarkManager->dumpAsXml(pWriter);
     m_pUndoManager->dumpAsXml(pWriter);
diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index a0c7e08ee45b..56211090e081 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -17,6 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <libxml/xmlwriter.h>
+
 #include <editeng/pbinitem.hxx>
 #include <editeng/ulspitem.hxx>
 #include <editeng/boxitem.hxx>
@@ -425,6 +427,36 @@ SwPageDesc* SwPageDesc::GetByName(SwDoc& rDoc, const OUString& rName)
     return nullptr;
 }
 
+void SwPageDesc::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+    xmlTextWriterStartElement(pWriter, BAD_CAST("SwPageDesc"));
+    xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
+    xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("m_StyleName"), "%s",
+                                      BAD_CAST(m_StyleName.toUtf8().getStr()));
+    xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("m_pFollow"), "%p", m_pFollow);
+    xmlTextWriterWriteFormatAttribute(
+        pWriter, BAD_CAST("m_eUse"), "0x%s",
+        BAD_CAST(OString::number(static_cast<int>(m_eUse), 16).getStr()));
+
+    xmlTextWriterStartElement(pWriter, BAD_CAST("m_Master"));
+    m_Master.dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+
+    xmlTextWriterStartElement(pWriter, BAD_CAST("m_Left"));
+    m_Left.dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+
+    xmlTextWriterStartElement(pWriter, BAD_CAST("m_FirstMaster"));
+    m_FirstMaster.dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+
+    xmlTextWriterStartElement(pWriter, BAD_CAST("m_FirstLeft"));
+    m_FirstLeft.dumpAsXml(pWriter);
+    xmlTextWriterEndElement(pWriter);
+
+    xmlTextWriterEndElement(pWriter);
+}
+
 SwPageFootnoteInfo::SwPageFootnoteInfo()
     : m_nMaxHeight( 0 )
     , m_nLineWidth(10)
@@ -587,4 +619,16 @@ void SwPageDescs::erase( size_type index_ )
     erase( begin() + index_ );
 }
 
+void SwPageDescs::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+    xmlTextWriterStartElement(pWriter, BAD_CAST("SwPageDescs"));
+
+    for (const auto& pPageDesc : m_PosIndex)
+    {
+        pPageDesc->dumpAsXml(pWriter);
+    }
+
+    xmlTextWriterEndElement(pWriter);
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list