[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - include/oox starmath/inc starmath/source sw/source

Michael Stahl mstahl at redhat.com
Thu Jan 21 00:14:00 PST 2016


 include/oox/mathml/export.hxx                |    5 ++++-
 starmath/inc/document.hxx                    |    5 ++++-
 starmath/inc/unomodel.hxx                    |    4 +++-
 starmath/source/document.cxx                 |    7 +++++--
 starmath/source/ooxmlexport.cxx              |    6 ++++--
 starmath/source/ooxmlexport.hxx              |    6 +++++-
 starmath/source/unomodel.cxx                 |    7 +++++--
 sw/source/filter/ww8/docxattributeoutput.cxx |    3 ++-
 8 files changed, 32 insertions(+), 11 deletions(-)

New commits:
commit acc3d942e1db108ebca3e9e0c086ab361acc3695
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jan 14 22:40:52 2016 +0100

    starmath: only use WordProcessingML elements in DOCX files
    
    Change-Id: I1b0f6d67bd0db0796756fd920ab92303a7ee7d79
    (cherry picked from commit 80b55dcfc9754553e42625d0d6e9ebbb728200eb)
    Reviewed-on: https://gerrit.libreoffice.org/21494
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/include/oox/mathml/export.hxx b/include/oox/mathml/export.hxx
index 49a2afe..20b6b21 100644
--- a/include/oox/mathml/export.hxx
+++ b/include/oox/mathml/export.hxx
@@ -12,6 +12,7 @@
 #include <sax/fshelper.hxx>
 #include <rtl/strbuf.hxx>
 #include <oox/core/filterbase.hxx>
+#include <oox/export/utils.hxx>
 #include <oox/dllapi.h>
 
 namespace oox
@@ -24,7 +25,9 @@ namespace oox
 class OOX_DLLPUBLIC FormulaExportBase
 {
 public:
-    virtual void writeFormulaOoxml( ::sax_fastparser::FSHelperPtr m_pSerializer, oox::core::OoxmlVersion version ) = 0;
+    virtual void writeFormulaOoxml(::sax_fastparser::FSHelperPtr pSerializer,
+            oox::core::OoxmlVersion version,
+            oox::drawingml::DocumentType documentType) = 0;
     virtual void writeFormulaRtf( OStringBuffer& rBuffer, rtl_TextEncoding nEncoding ) = 0;
 
 protected:
diff --git a/starmath/inc/document.hxx b/starmath/inc/document.hxx
index 67ef680e..9a94f01 100644
--- a/starmath/inc/document.hxx
+++ b/starmath/inc/document.hxx
@@ -31,6 +31,7 @@
 #include <sax/fshelper.hxx>
 #include <oox/core/filterbase.hxx>
 #include <oox/mathml/import.hxx>
+#include <oox/export/utils.hxx>
 
 #include <set>
 
@@ -145,7 +146,9 @@ class SM_DLLPUBLIC SmDocShell : public SfxObjectShell, public SfxListener
      */
     void                InvalidateCursor();
 
-    bool writeFormulaOoxml( ::sax_fastparser::FSHelperPtr pSerializer, oox::core::OoxmlVersion version );
+    bool writeFormulaOoxml(::sax_fastparser::FSHelperPtr pSerializer,
+            oox::core::OoxmlVersion version,
+            oox::drawingml::DocumentType documentType);
     void writeFormulaRtf(OStringBuffer& rBuffer, rtl_TextEncoding nEncoding);
     void readFormulaOoxml( oox::formulaimport::XmlStream& stream );
 
diff --git a/starmath/inc/unomodel.hxx b/starmath/inc/unomodel.hxx
index 6b6ac07..c853806 100644
--- a/starmath/inc/unomodel.hxx
+++ b/starmath/inc/unomodel.hxx
@@ -91,7 +91,9 @@ public:
     virtual void SAL_CALL setParent( const css::uno::Reference< css::uno::XInterface >& xParent ) throw( css::lang::NoSupportException, css::uno::RuntimeException, std::exception ) override;
 
     // oox::FormulaExportBase
-    virtual void writeFormulaOoxml( ::sax_fastparser::FSHelperPtr m_pSerializer, oox::core::OoxmlVersion version ) override;
+    virtual void writeFormulaOoxml(::sax_fastparser::FSHelperPtr pSerializer,
+            oox::core::OoxmlVersion version,
+            oox::drawingml::DocumentType documentType) override;
     virtual void writeFormulaRtf(OStringBuffer& rBuffer, rtl_TextEncoding nEncoding) override;
     // oox::FormulaImportBase
     virtual void readFormulaOoxml( oox::formulaimport::XmlStream& stream ) override;
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index dae2175..63dbfbe 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -900,13 +900,16 @@ bool SmDocShell::ConvertTo( SfxMedium &rMedium )
     return bRet;
 }
 
-bool SmDocShell::writeFormulaOoxml( ::sax_fastparser::FSHelperPtr pSerializer, oox::core::OoxmlVersion version )
+bool SmDocShell::writeFormulaOoxml(
+        ::sax_fastparser::FSHelperPtr const pSerializer,
+        oox::core::OoxmlVersion const version,
+        oox::drawingml::DocumentType const documentType)
 {
     if( !pTree )
         Parse();
     if( pTree && !IsFormulaArranged() )
         ArrangeFormula();
-    SmOoxmlExport aEquation( pTree, version );
+    SmOoxmlExport aEquation(pTree, version, documentType);
     return aEquation.ConvertFromStarMath( pSerializer );
 }
 
diff --git a/starmath/source/ooxmlexport.cxx b/starmath/source/ooxmlexport.cxx
index 5a72ee1..277fb25 100644
--- a/starmath/source/ooxmlexport.cxx
+++ b/starmath/source/ooxmlexport.cxx
@@ -16,9 +16,11 @@
 using namespace oox;
 using namespace oox::core;
 
-SmOoxmlExport::SmOoxmlExport( const SmNode* pIn, OoxmlVersion v )
+SmOoxmlExport::SmOoxmlExport(const SmNode *const pIn, OoxmlVersion const v,
+        drawingml::DocumentType const documentType)
 : SmWordExportBase( pIn )
 , version( v )
+, m_DocumentType(documentType)
 {
 }
 
@@ -63,7 +65,7 @@ void SmOoxmlExport::HandleText( const SmNode* pNode, int /*nLevel*/)
         m_pSerializer->singleElementNS( XML_m, XML_nor, FSEND );
         m_pSerializer->endElementNS( XML_m, XML_rPr );
     }
-    if( version == ECMA_DIALECT )
+    if (drawingml::DOCUMENT_DOCX == m_DocumentType && ECMA_DIALECT == version)
     { // HACK: MSOffice2007 does not import characters properly unless this font is explicitly given
         m_pSerializer->startElementNS( XML_w, XML_rPr, FSEND );
         m_pSerializer->singleElementNS( XML_w, XML_rFonts, FSNS( XML_w, XML_ascii ), "Cambria Math",
diff --git a/starmath/source/ooxmlexport.hxx b/starmath/source/ooxmlexport.hxx
index a474098..5bd69bf 100644
--- a/starmath/source/ooxmlexport.hxx
+++ b/starmath/source/ooxmlexport.hxx
@@ -14,6 +14,7 @@
 
 #include <sax/fshelper.hxx>
 #include <oox/core/filterbase.hxx>
+#include <oox/export/utils.hxx>
 
 /**
  Class implementing writing of formulas to OOXML.
@@ -21,7 +22,8 @@
 class SmOoxmlExport : public SmWordExportBase
 {
 public:
-    SmOoxmlExport( const SmNode* pIn, oox::core::OoxmlVersion version );
+    SmOoxmlExport(const SmNode* pIn, oox::core::OoxmlVersion version,
+            oox::drawingml::DocumentType documentType);
     bool ConvertFromStarMath( ::sax_fastparser::FSHelperPtr m_pSerializer );
 private:
     virtual void HandleVerticalStack( const SmNode* pNode, int nLevel ) override;
@@ -37,6 +39,8 @@ private:
     virtual void HandleBlank() override;
     ::sax_fastparser::FSHelperPtr m_pSerializer;
     oox::core::OoxmlVersion version;
+    /// needed to determine markup for nested run properties
+    oox::drawingml::DocumentType const m_DocumentType;
 };
 
 
diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx
index 34bf51a..32ef68f5 100644
--- a/starmath/source/unomodel.cxx
+++ b/starmath/source/unomodel.cxx
@@ -1110,9 +1110,12 @@ void SAL_CALL SmModel::setParent( const uno::Reference< uno::XInterface >& xPare
     }
 }
 
-void SmModel::writeFormulaOoxml( ::sax_fastparser::FSHelperPtr m_pSerializer, oox::core::OoxmlVersion version )
+void SmModel::writeFormulaOoxml(
+        ::sax_fastparser::FSHelperPtr const pSerializer,
+        oox::core::OoxmlVersion const version,
+        oox::drawingml::DocumentType const documentType)
 {
-    static_cast< SmDocShell* >( GetObjectShell())->writeFormulaOoxml( m_pSerializer, version );
+    static_cast<SmDocShell*>(GetObjectShell())->writeFormulaOoxml(pSerializer, version, documentType);
 }
 
 void SmModel::writeFormulaRtf(OStringBuffer& rBuffer, rtl_TextEncoding nEncoding)
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 858f630..c8ecd9d 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -4517,7 +4517,8 @@ void DocxAttributeOutput::WritePostponedMath(const SwOLENode* pPostponedMath)
     oox::FormulaExportBase* formulaexport = dynamic_cast<oox::FormulaExportBase*>(dynamic_cast<SfxBaseModel*>(xInterface.get()));
     assert( formulaexport != nullptr );
     if (formulaexport)
-        formulaexport->writeFormulaOoxml( m_pSerializer, GetExport().GetFilter().getVersion());
+        formulaexport->writeFormulaOoxml( m_pSerializer, GetExport().GetFilter().getVersion(),
+                oox::drawingml::DOCUMENT_DOCX);
 }
 
 void DocxAttributeOutput::WritePostponedFormControl(const SdrObject* pObject)


More information about the Libreoffice-commits mailing list