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

Noel (via logerrit) logerrit at kemper.freedesktop.org
Thu Dec 3 11:53:18 UTC 2020


 xmloff/source/draw/ximppage.cxx |   72 +++++++++-------------------------------
 1 file changed, 17 insertions(+), 55 deletions(-)

New commits:
commit e5dff842437cfaa949f66d93b3bcb6df1d6c470d
Author:     Noel <noelgrandin at gmail.com>
AuthorDate: Thu Dec 3 11:23:17 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Dec 3 12:52:39 2020 +0100

    fastparser in DrawAnnotationContext
    
    Change-Id: Ie629e24e78d69456d1ec5276f3695d42d556ef1f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107146
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/xmloff/source/draw/ximppage.cxx b/xmloff/source/draw/ximppage.cxx
index cf0bfcf2a1d6..486c0e05f4d9 100644
--- a/xmloff/source/draw/ximppage.cxx
+++ b/xmloff/source/draw/ximppage.cxx
@@ -67,7 +67,6 @@ public:
 
     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
         sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
-    virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList ) override;
     virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
 
 private:
@@ -144,44 +143,20 @@ DrawAnnotationContext::DrawAnnotationContext( SvXMLImport& rImport, const Refere
 
 css::uno::Reference< css::xml::sax::XFastContextHandler > DrawAnnotationContext::createFastChildContext(
         sal_Int32 nElement,
-        const css::uno::Reference< css::xml::sax::XFastAttributeList >& /*xAttrList*/ )
+        const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
 {
     if( mxAnnotation.is() )
     {
-        if (IsTokenInNamespace(nElement, XML_NAMESPACE_DC))
-        {
-            if( (nElement & TOKEN_MASK) == XML_CREATOR )
-                return new XMLStringBufferImportContext(GetImport(), maAuthorBuffer);
-            else if( (nElement & TOKEN_MASK) == XML_DATE )
-                return new XMLStringBufferImportContext(GetImport(), maDateBuffer);
-        }
+        if (nElement == XML_ELEMENT(DC, XML_CREATOR) )
+            return new XMLStringBufferImportContext(GetImport(), maAuthorBuffer);
+        else if( nElement == XML_ELEMENT(DC, XML_DATE) )
+            return new XMLStringBufferImportContext(GetImport(), maDateBuffer);
         else if ( nElement == XML_ELEMENT(TEXT, XML_SENDER_INITIALS)
                 || nElement == XML_ELEMENT(LO_EXT, XML_SENDER_INITIALS)
                 || nElement == XML_ELEMENT(META, XML_CREATOR_INITIALS))
         {
             return new XMLStringBufferImportContext(GetImport(), maInitialsBuffer);
         }
-    }
-    return nullptr;
-}
-
-SvXMLImportContextRef DrawAnnotationContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const Reference< XAttributeList >& xAttrList )
-{
-    SvXMLImportContextRef xContext;
-
-    if( mxAnnotation.is() )
-    {
-        if( XML_NAMESPACE_DC == nPrefix )
-        {
-            // handled in createFastChildContext
-        }
-        else if (((XML_NAMESPACE_TEXT == nPrefix || XML_NAMESPACE_LO_EXT == nPrefix)
-                    && IsXMLToken(rLocalName, XML_SENDER_INITIALS))
-                 || (XML_NAMESPACE_META == nPrefix
-                     && IsXMLToken(rLocalName, XML_CREATOR_INITIALS)))
-        {
-            // handled in createFastChildContext
-        }
         else
         {
             // create text cursor on demand
@@ -200,12 +175,14 @@ SvXMLImportContextRef DrawAnnotationContext::CreateChildContext( sal_uInt16 nPre
             // if we have a text cursor, lets  try to import some text
             if( mxCursor.is() )
             {
-                xContext = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList );
+                auto p = GetImport().GetTextImport()->CreateTextChildContext( GetImport(), nElement, xAttrList );
+                if (p)
+                    return p;
             }
         }
     }
-
-    return xContext;
+    XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement);
+    return nullptr;
 }
 
 void DrawAnnotationContext::endFastElement(sal_Int32)
@@ -274,6 +251,11 @@ css::uno::Reference< css::xml::sax::XFastContextHandler > SdXMLGenericPageContex
     {
         return new XMLAnimationsContext( GetImport() );
     }
+    else if( nElement == XML_ELEMENT(OFFICE, XML_FORMS) )
+    {
+        if( GetImport().IsFormsSupported() )
+            return xmloff::OFormLayerXMLImport::createOfficeFormsContext( GetImport() );
+    }
     else if( nElement == XML_ELEMENT(OFFICE, XML_ANNOTATION) || nElement == XML_ELEMENT(OFFICE_EXT, XML_ANNOTATION) )
     {
         if( mxAnnotationAccess.is() )
@@ -286,29 +268,9 @@ SvXMLImportContextRef SdXMLGenericPageContext::CreateChildContext( sal_uInt16 nP
     const OUString& rLocalName,
     const Reference< xml::sax::XAttributeList>& xAttrList )
 {
-    SvXMLImportContextRef xContext;
-
-    if( nPrefix == XML_NAMESPACE_PRESENTATION && IsXMLToken( rLocalName, XML_ANIMATIONS ) )
-    {
-        // handled in createFastChildContext
-    }
-    else if( nPrefix == XML_NAMESPACE_OFFICE && IsXMLToken( rLocalName, XML_FORMS ) )
-    {
-        if( GetImport().IsFormsSupported() )
-            xContext = xmloff::OFormLayerXMLImport::createOfficeFormsContext( GetImport() );
-    }
-    else if( ((nPrefix == XML_NAMESPACE_OFFICE) || (nPrefix == XML_NAMESPACE_OFFICE_EXT)) && IsXMLToken( rLocalName, XML_ANNOTATION ) )
-    {
-        // handled in createFastChildContext
-    }
-    else
-    {
-        // call GroupChildContext function at common ShapeImport
-        xContext = GetImport().GetShapeImport()->CreateGroupChildContext(
+    // call GroupChildContext function at common ShapeImport
+    return GetImport().GetShapeImport()->CreateGroupChildContext(
             GetImport(), nPrefix, rLocalName, xAttrList, mxShapes);
-    }
-
-    return xContext;
 }
 
 void SdXMLGenericPageContext::endFastElement(sal_Int32 )


More information about the Libreoffice-commits mailing list