[Libreoffice-commits] .: 3 commits - oox/inc oox/source writerfilter/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Mon Jul 23 08:18:39 PDT 2012


 oox/inc/oox/mathml/importutils.hxx             |    7 +
 oox/source/mathml/importutils.cxx              |   16 ++++
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |   99 ++++++++++++++-----------
 writerfilter/source/rtftok/rtfdocumentimpl.hxx |    6 +
 4 files changed, 83 insertions(+), 45 deletions(-)

New commits:
commit fd11c723d0bbaa50421baf98062933335ec079ab
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Mon Jul 23 17:15:21 2012 +0200

    rtftok: cleanup - use M_TOKEN() macro
    
    Change-Id: If51def3c7c798104fd6dec9cf38473e5d70420fc

diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 1338542..3581f30 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -68,6 +68,7 @@
 #include <rtffly.hxx>
 
 #define TWIP_TO_MM100(TWIP)     ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
+#define M_TOKEN(token) OOX_TOKEN(officeMath, token)
 
 using std::make_pair;
 using rtl::OString;
@@ -1402,73 +1403,46 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
             // Nothing to do here (just enter the destination) till RTF_MMATHPR is implemented.
             break;
         case RTF_MOMATH:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_oMath, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MOMATH;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(oMath));
+            m_aStates.top().nDestinationState = DESTINATION_MOMATH;
             break;
         case RTF_MR:
             m_aStates.top().nDestinationState = DESTINATION_MR;
             break;
         case RTF_MF:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_f, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MF;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(f));
+            m_aStates.top().nDestinationState = DESTINATION_MF;
             break;
         case RTF_MFPR:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_fPr, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MFPR;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(fPr));
+            m_aStates.top().nDestinationState = DESTINATION_MFPR;
             break;
         case RTF_MCTRLPR:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_ctrlPr, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MCTRLPR;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(ctrlPr));
+            m_aStates.top().nDestinationState = DESTINATION_MCTRLPR;
             break;
         case RTF_MNUM:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_num, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MNUM;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(num));
+            m_aStates.top().nDestinationState = DESTINATION_MNUM;
             break;
         case RTF_MDEN:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_den, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MDEN;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(den));
+            m_aStates.top().nDestinationState = DESTINATION_MDEN;
             break;
         case RTF_MACC:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_acc, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MACC;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(acc));
+            m_aStates.top().nDestinationState = DESTINATION_MACC;
             break;
         case RTF_MACCPR:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_accPr, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_MACCPR;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(accPr));
+            m_aStates.top().nDestinationState = DESTINATION_MACCPR;
             break;
         case RTF_MCHR:
             m_aStates.top().nDestinationState = DESTINATION_MCHR;
             break;
         case RTF_ME:
-            {
-                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_e, aAttribs);
-                m_aStates.top().nDestinationState = DESTINATION_ME;
-            }
+            m_aMathBuffer.appendOpeningTag(M_TOKEN(e));
+            m_aStates.top().nDestinationState = DESTINATION_ME;
             break;
         default:
             SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle destination '" << lcl_RtfToString(nKeyword) << "'");
@@ -3528,8 +3502,7 @@ int RTFDocumentImpl::popState()
     }
     else if (m_aStates.top().nDestinationState == DESTINATION_MOMATH)
     {
-        uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_oMath);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(oMath));
 
         SvGlobalName aGlobalName(SO3_SM_CLASSID);
         comphelper::EmbeddedObjectContainer aContainer;
@@ -3547,36 +3520,35 @@ int RTFDocumentImpl::popState()
     }
     else if (m_aStates.top().nDestinationState == DESTINATION_MR)
     {
-        uno::Reference<xml::sax::XFastAttributeList> aAttribs;
-        m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_r, aAttribs);
-        m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_t, aAttribs);
+        m_aMathBuffer.appendOpeningTag(M_TOKEN(r));
+        m_aMathBuffer.appendOpeningTag(M_TOKEN(t));
         m_aMathBuffer.appendCharacters(m_aStates.top().aDestinationText.makeStringAndClear());
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_t);
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_r);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(t));
+        m_aMathBuffer.appendClosingTag(M_TOKEN(r));
     }
     else if (m_aStates.top().nDestinationState == DESTINATION_MF)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_f);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(f));
     else if (m_aStates.top().nDestinationState == DESTINATION_MFPR)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_fPr);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(fPr));
     else if (m_aStates.top().nDestinationState == DESTINATION_MCTRLPR)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_ctrlPr);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(ctrlPr));
     else if (m_aStates.top().nDestinationState == DESTINATION_MNUM)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_num);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(num));
     else if (m_aStates.top().nDestinationState == DESTINATION_MDEN)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_den);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(den));
     else if (m_aStates.top().nDestinationState == DESTINATION_MACC)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_acc);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(acc));
     else if (m_aStates.top().nDestinationState == DESTINATION_MACCPR)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_accPr);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(accPr));
     else if (m_aStates.top().nDestinationState == DESTINATION_MCHR)
     {
         oox::formulaimport::XmlStream::AttributeList aAttribs;
-        aAttribs[oox::NMSP_officeMath | oox::XML_val] = m_aStates.top().aDestinationText.makeStringAndClear();
-        m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_chr, aAttribs);
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_chr);
+        aAttribs[M_TOKEN(val)] = m_aStates.top().aDestinationText.makeStringAndClear();
+        m_aMathBuffer.appendOpeningTag(M_TOKEN(chr), aAttribs);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(chr));
     }
     else if (m_aStates.top().nDestinationState == DESTINATION_ME)
-        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_e);
+        m_aMathBuffer.appendClosingTag(M_TOKEN(e));
 
     // See if we need to end a track change
     RTFValue::Pointer_t pTrackchange = m_aStates.top().aCharacterSprms.find(NS_ooxml::LN_trackchange);
commit 2a7e3836733c0af54b9d337e55cc32cdf58cdd6d
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Mon Jul 23 17:00:10 2012 +0200

    implement import of RTF_{MACC,MACCPR,MCHR,ME}
    
    Change-Id: I5521bc3dc58b096dd80746a0af9c9d5e24ffe4a3

diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 187ae91..1338542 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -950,6 +950,7 @@ void RTFDocumentImpl::text(OUString& rString)
         case DESTINATION_DOCCOMM:
         case DESTINATION_ATNID:
         case DESTINATION_MR:
+        case DESTINATION_MCHR:
             m_aStates.top().aDestinationText.append(rString);
             break;
         case DESTINATION_EQINSTRUCTION:
@@ -1445,6 +1446,30 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
                 m_aStates.top().nDestinationState = DESTINATION_MDEN;
             }
             break;
+        case RTF_MACC:
+            {
+                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
+                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_acc, aAttribs);
+                m_aStates.top().nDestinationState = DESTINATION_MACC;
+            }
+            break;
+        case RTF_MACCPR:
+            {
+                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
+                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_accPr, aAttribs);
+                m_aStates.top().nDestinationState = DESTINATION_MACCPR;
+            }
+            break;
+        case RTF_MCHR:
+            m_aStates.top().nDestinationState = DESTINATION_MCHR;
+            break;
+        case RTF_ME:
+            {
+                uno::Reference<xml::sax::XFastAttributeList> aAttribs;
+                m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_e, aAttribs);
+                m_aStates.top().nDestinationState = DESTINATION_ME;
+            }
+            break;
         default:
             SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle destination '" << lcl_RtfToString(nKeyword) << "'");
             // Make sure we skip destinations (even without \*) till we don't handle them
@@ -3097,7 +3122,10 @@ int RTFDocumentImpl::pushState()
     else if (m_aStates.top().nDestinationState == DESTINATION_FIELDRESULT ||
             m_aStates.top().nDestinationState == DESTINATION_SHAPETEXT ||
             m_aStates.top().nDestinationState == DESTINATION_FORMFIELD ||
-            (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION && !m_bEq))
+            (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION && !m_bEq) ||
+            m_aStates.top().nDestinationState == DESTINATION_MOMATH ||
+            m_aStates.top().nDestinationState == DESTINATION_MNUM ||
+            m_aStates.top().nDestinationState == DESTINATION_MDEN)
         m_aStates.top().nDestinationState = DESTINATION_NORMAL;
     else if (m_aStates.top().nDestinationState == DESTINATION_FIELDINSTRUCTION && m_bEq)
         m_aStates.top().nDestinationState = DESTINATION_EQINSTRUCTION;
@@ -3536,6 +3564,19 @@ int RTFDocumentImpl::popState()
         m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_num);
     else if (m_aStates.top().nDestinationState == DESTINATION_MDEN)
         m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_den);
+    else if (m_aStates.top().nDestinationState == DESTINATION_MACC)
+        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_acc);
+    else if (m_aStates.top().nDestinationState == DESTINATION_MACCPR)
+        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_accPr);
+    else if (m_aStates.top().nDestinationState == DESTINATION_MCHR)
+    {
+        oox::formulaimport::XmlStream::AttributeList aAttribs;
+        aAttribs[oox::NMSP_officeMath | oox::XML_val] = m_aStates.top().aDestinationText.makeStringAndClear();
+        m_aMathBuffer.appendOpeningTag(oox::NMSP_officeMath | oox::XML_chr, aAttribs);
+        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_chr);
+    }
+    else if (m_aStates.top().nDestinationState == DESTINATION_ME)
+        m_aMathBuffer.appendClosingTag(oox::NMSP_officeMath | oox::XML_e);
 
     // See if we need to end a track change
     RTFValue::Pointer_t pTrackchange = m_aStates.top().aCharacterSprms.find(NS_ooxml::LN_trackchange);
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 3483e0d..dd98a28 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -126,7 +126,11 @@ namespace writerfilter {
             DESTINATION_MFPR,
             DESTINATION_MCTRLPR,
             DESTINATION_MNUM,
-            DESTINATION_MDEN
+            DESTINATION_MDEN,
+            DESTINATION_MACC,
+            DESTINATION_MACCPR,
+            DESTINATION_MCHR,
+            DESTINATION_ME
         };
 
         enum RTFBorderState
commit 4a62512086fe71d98f3de95706ab1350625a7616
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Mon Jul 23 16:59:13 2012 +0200

    oox::formulaimport::XmlStream: allow avoiding XFastAttributeList
    
    Change-Id: Iba0ad5ae72920f27e8a443a043c5891b102aee98

diff --git a/oox/inc/oox/mathml/importutils.hxx b/oox/inc/oox/mathml/importutils.hxx
index fc0e276..7718515 100644
--- a/oox/inc/oox/mathml/importutils.hxx
+++ b/oox/inc/oox/mathml/importutils.hxx
@@ -133,6 +133,7 @@ public:
     struct OOX_DLLPUBLIC AttributeList
     {
         bool hasAttribute( int token ) const;
+        OUString& operator[] (int token);
         rtl::OUString attribute( int token, const rtl::OUString& def = rtl::OUString()) const;
         bool attribute( int token, bool def ) const;
         sal_Unicode attribute( int token, sal_Unicode def ) const;
@@ -148,6 +149,8 @@ public:
         Tag( int token = XML_TOKEN_INVALID,
             const com::sun::star::uno::Reference< com::sun::star::xml::sax::XFastAttributeList >& attributes = com::sun::star::uno::Reference< com::sun::star::xml::sax::XFastAttributeList >(),
             const rtl::OUString& text = rtl::OUString());
+        Tag( int token,
+            const AttributeList& attribs);
         int token; ///< tag type, or XML_TOKEN_INVALID
         AttributeList attributes;
         rtl::OUString text;
@@ -236,7 +239,9 @@ class OOX_DLLPUBLIC XmlStreamBuilder
 {
 public:
     void appendOpeningTag( int token,
-        const com::sun::star::uno::Reference< com::sun::star::xml::sax::XFastAttributeList >& attributes );
+        const com::sun::star::uno::Reference< com::sun::star::xml::sax::XFastAttributeList >& attributes = com::sun::star::uno::Reference< com::sun::star::xml::sax::XFastAttributeList >());
+    void appendOpeningTag( int token,
+        const AttributeList& attribs );
     void appendClosingTag( int token );
     // appends the characters after the last appended token
     void appendCharacters( const rtl::OUString& characters );
diff --git a/oox/source/mathml/importutils.cxx b/oox/source/mathml/importutils.cxx
index 41a254d..01c2ba7 100644
--- a/oox/source/mathml/importutils.cxx
+++ b/oox/source/mathml/importutils.cxx
@@ -114,6 +114,11 @@ static OUString tokenToString( int token )
 
 } // namespace
 
+OUString& XmlStream::AttributeList::operator[] (int token)
+{
+    return attrs[token];
+}
+
 rtl::OUString XmlStream::AttributeList::attribute( int token, const rtl::OUString& def ) const
 {
     std::map< int, rtl::OUString >::const_iterator find = attrs.find( token );
@@ -165,6 +170,12 @@ XmlStream::Tag::Tag( int t, const uno::Reference< xml::sax::XFastAttributeList >
 {
 }
 
+XmlStream::Tag::Tag( int t, const AttributeList& a )
+: token( t )
+, attributes( a )
+{
+}
+
 
 XmlStream::Tag::operator bool() const
 {
@@ -337,6 +348,11 @@ void XmlStreamBuilder::appendOpeningTag( int token, const uno::Reference< xml::s
     tags.push_back( Tag( OPENING( token ), attrs ));
 }
 
+void XmlStreamBuilder::appendOpeningTag( int token, const AttributeList& attrs )
+{
+    tags.push_back( Tag( OPENING( token ), attrs ));
+}
+
 void XmlStreamBuilder::appendClosingTag( int token )
 {
     tags.push_back( Tag( CLOSING( token )));


More information about the Libreoffice-commits mailing list