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

Miklos Vajna vmiklos at collabora.co.uk
Tue Oct 28 00:51:07 PDT 2014


 sw/source/filter/ww8/docxattributeoutput.cxx |   42 ++++++++++++++-------------
 sw/source/filter/ww8/docxattributeoutput.hxx |   12 +++----
 2 files changed, 29 insertions(+), 25 deletions(-)

New commits:
commit c1f4dc6b10ac512c8bda88c7a91403ea0e5108a4
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Oct 28 08:50:19 2014 +0100

    DocxTableExportContext: allow usage outside DocxAttributeOutput
    
    In particular, if push/pop is done in DocxAttributeOutput, then this can
    be used in DocxExport as well in the future.
    
    Change-Id: If1302c7ccc3842ffd0b48149a3173ee864176bb5

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index be93040..85b38bb 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -497,9 +497,10 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
                        otherwise the StartParagraph function will use the previous existing
                        table reference attributes since the variable is being shared.
                 */
-                DocxTableExportContext aDMLTableExportContext(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+                DocxTableExportContext aDMLTableExportContext;
+                pushToTableExportContext(aDMLTableExportContext);
                 m_rExport.SdrExporter().writeDMLTextFrame(&aFrame, m_anchorId++);
-                aDMLTableExportContext.restore(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+                popFromTableExportContext(aDMLTableExportContext);
                 m_pSerializer->endElementNS(XML_mc, XML_Choice);
                 SetAlternateContentChoiceOpen( false );
 
@@ -510,9 +511,10 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
                 //reset the tableReference.
 
                 m_pSerializer->startElementNS(XML_mc, XML_Fallback, FSEND);
-                DocxTableExportContext aVMLTableExportContext(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+                DocxTableExportContext aVMLTableExportContext;
+                pushToTableExportContext(aVMLTableExportContext);
                 m_rExport.SdrExporter().writeVMLTextFrame(&aFrame);
-                aVMLTableExportContext.restore(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+                popFromTableExportContext(aVMLTableExportContext);
                 m_rExport.mpTableInfo = pOldTableInfo;
 
                 m_pSerializer->endElementNS(XML_mc, XML_Fallback);
@@ -5093,47 +5095,49 @@ void DocxAttributeOutput::WriteOutliner(const OutlinerParaObject& rParaObj)
     m_pSerializer->endElementNS( XML_w, XML_txbxContent );
 }
 
-DocxTableExportContext::DocxTableExportContext(ww8::WW8TableInfo::Pointer_t& pTableInfo, bool& bTableCellOpen, sal_uInt32& nTableDepth)
+void DocxAttributeOutput::pushToTableExportContext(DocxTableExportContext& rContext)
 {
-    m_pTableInfo = pTableInfo;
-    pTableInfo = ww8::WW8TableInfo::Pointer_t(new ww8::WW8TableInfo());
+    rContext.m_pTableInfo = m_rExport.mpTableInfo;
+    m_rExport.mpTableInfo = ww8::WW8TableInfo::Pointer_t(new ww8::WW8TableInfo());
 
-    m_bTableCellOpen = bTableCellOpen;
-    bTableCellOpen = false;
+    rContext.m_bTableCellOpen = m_tableReference->m_bTableCellOpen;
+    m_tableReference->m_bTableCellOpen = false;
 
-    m_nTableDepth = nTableDepth;
-    nTableDepth = 0;
+    rContext.m_nTableDepth = m_tableReference->m_nTableDepth;
+    m_tableReference->m_nTableDepth = 0;
 }
 
-void DocxTableExportContext::restore(ww8::WW8TableInfo::Pointer_t& pTableInfo, bool& bTableCellOpen, sal_uInt32& nTableDepth)
+void DocxAttributeOutput::popFromTableExportContext(DocxTableExportContext& rContext)
 {
-    pTableInfo = m_pTableInfo;
-    bTableCellOpen = m_bTableCellOpen;
-    nTableDepth = m_nTableDepth;
+    m_rExport.mpTableInfo = rContext.m_pTableInfo;
+    m_tableReference->m_bTableCellOpen = rContext.m_bTableCellOpen;
+    m_tableReference->m_nTableDepth = rContext.m_nTableDepth;
 }
 
 void DocxAttributeOutput::WriteTextBox(uno::Reference<drawing::XShape> xShape)
 {
-    DocxTableExportContext aTableExportContext(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+    DocxTableExportContext aTableExportContext;
+    pushToTableExportContext(aTableExportContext);
 
     SwFrmFmt* pTextBox = SwTextBoxHelper::findTextBox(xShape);
     const SwPosition* pAnchor = pTextBox->GetAnchor().GetCntntAnchor();
     sw::Frame aFrame(*pTextBox, *pAnchor);
     m_rExport.SdrExporter().writeDMLTextFrame(&aFrame, m_anchorId++, /*bTextBoxOnly=*/true);
 
-    aTableExportContext.restore(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+    popFromTableExportContext(aTableExportContext);
 }
 
 void DocxAttributeOutput::WriteVMLTextBox(uno::Reference<drawing::XShape> xShape)
 {
-    DocxTableExportContext aTableExportContext(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+    DocxTableExportContext aTableExportContext;
+    pushToTableExportContext(aTableExportContext);
 
     SwFrmFmt* pTextBox = SwTextBoxHelper::findTextBox(xShape);
     const SwPosition* pAnchor = pTextBox->GetAnchor().GetCntntAnchor();
     sw::Frame aFrame(*pTextBox, *pAnchor);
     m_rExport.SdrExporter().writeVMLTextFrame(&aFrame, /*bTextBoxOnly=*/true);
 
-    aTableExportContext.restore(m_rExport.mpTableInfo, m_tableReference->m_bTableCellOpen, m_tableReference->m_nTableDepth);
+    popFromTableExportContext(aTableExportContext);
 }
 
 oox::drawingml::DrawingML& DocxAttributeOutput::GetDrawingML()
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index f373b86..765d64d 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -109,16 +109,11 @@ struct PageMargins
  * All the information that should be stashed away when we're in the middle of
  * of a table export and still have to do something else, e.g. export a shape.
  */
-class DocxTableExportContext
+struct DocxTableExportContext
 {
     ww8::WW8TableInfo::Pointer_t m_pTableInfo;
     bool m_bTableCellOpen;
     sal_uInt32 m_nTableDepth;
-public:
-    /// Stores the passed parameters and resets them to their default value.
-    DocxTableExportContext(ww8::WW8TableInfo::Pointer_t& pTableInfo, bool& bTableCellOpen, sal_uInt32& nTableDepth);
-    /// Restores the remembered state.
-    void restore(ww8::WW8TableInfo::Pointer_t& pTableInfo, bool& bTableCellOpen, sal_uInt32& nTableDepth);
 };
 
 /**
@@ -978,6 +973,11 @@ public:
     void GetSdtEndBefore(const SdrObject* pSdrObj);
     void SetStartedParaSdt(bool bStartedParaSdt);
     bool IsStartedParaSdt();
+
+    /// Stores the table export state to the passed context and resets own state.
+    void pushToTableExportContext(DocxTableExportContext& rContext);
+    /// Restores from the remembered state.
+    void popFromTableExportContext(DocxTableExportContext& rContext);
 };
 
 #endif // INCLUDED_SW_SOURCE_FILTER_WW8_DOCXATTRIBUTEOUTPUT_HXX


More information about the Libreoffice-commits mailing list