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

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Nov 20 17:33:47 UTC 2020


 xmloff/inc/EnhancedCustomShapeToken.hxx         |    1 
 xmloff/source/draw/EnhancedCustomShapeToken.cxx |    6 +
 xmloff/source/draw/ximpcustomshape.cxx          |   79 ++++++++++--------------
 xmloff/source/draw/ximpcustomshape.hxx          |    5 -
 4 files changed, 45 insertions(+), 46 deletions(-)

New commits:
commit 18a4ad0a47dc1bcec1b9387126d7c917f7063339
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Fri Nov 20 14:37:45 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Nov 20 18:33:03 2020 +0100

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

diff --git a/xmloff/inc/EnhancedCustomShapeToken.hxx b/xmloff/inc/EnhancedCustomShapeToken.hxx
index 008387787f93..b35d34323ab8 100644
--- a/xmloff/inc/EnhancedCustomShapeToken.hxx
+++ b/xmloff/inc/EnhancedCustomShapeToken.hxx
@@ -154,6 +154,7 @@ namespace xmloff::EnhancedCustomShapeToken {
     };
 
     EnhancedCustomShapeTokenEnum EASGet( const OUString& );
+    EnhancedCustomShapeTokenEnum EASGet( sal_Int32 nToken );
     OUString EASGet( const EnhancedCustomShapeTokenEnum );
 }
 
diff --git a/xmloff/source/draw/EnhancedCustomShapeToken.cxx b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
index 78e476784ac7..34bc3f61b874 100644
--- a/xmloff/source/draw/EnhancedCustomShapeToken.cxx
+++ b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
@@ -19,6 +19,7 @@
 
 #include <EnhancedCustomShapeToken.hxx>
 #include <osl/mutex.hxx>
+#include <xmloff/xmlimp.hxx>
 #include <unordered_map>
 #include <memory>
 
@@ -196,6 +197,11 @@ EnhancedCustomShapeTokenEnum EASGet( const OUString& rShapeType )
     return eRetValue;
 }
 
+EnhancedCustomShapeTokenEnum EASGet( sal_Int32 nToken )
+{
+    return EASGet(SvXMLImport::getNameFromToken(nToken));
+}
+
 OUString EASGet( const EnhancedCustomShapeTokenEnum eToken )
 {
     sal_uInt32 i = eToken >= EAS_Last
diff --git a/xmloff/source/draw/ximpcustomshape.cxx b/xmloff/source/draw/ximpcustomshape.cxx
index d3dace64ece4..3bd71eae268d 100644
--- a/xmloff/source/draw/ximpcustomshape.cxx
+++ b/xmloff/source/draw/ximpcustomshape.cxx
@@ -1299,85 +1299,76 @@ void XMLEnhancedCustomShapeContext::endFastElement(sal_Int32 )
         SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maHandles, EASGet( EAS_Handles ) );
 }
 
-SvXMLImportContextRef XMLEnhancedCustomShapeContext::CreateChildContext( sal_uInt16 /*nPrefix*/,const OUString& rLocalName,
-                                                                    const uno::Reference< xml::sax::XAttributeList> & xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > XMLEnhancedCustomShapeContext::createFastChildContext(
+    sal_Int32 nElement,
+    const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
 {
-    EnhancedCustomShapeTokenEnum aTokenEnum = EASGet( rLocalName );
+    EnhancedCustomShapeTokenEnum aTokenEnum = EASGet( nElement );
     if ( aTokenEnum == EAS_equation )
     {
-        sal_Int16 nLength = xAttrList->getLength();
-        if ( nLength )
+        OUString aFormula;
+        OUString aFormulaName;
+        for( auto& aIter : sax_fastparser::castToFastAttributeList(xAttrList) )
         {
-            OUString aFormula;
-            OUString aFormulaName;
-            for( sal_Int16 nAttr = 0; nAttr < nLength; nAttr++ )
+            OUString sValue = aIter.toString();
+            switch( EASGet( aIter.getToken() ) )
             {
-                OUString aLocalName;
-                const OUString& rValue = xAttrList->getValueByIndex( nAttr );
-                /* fixme sven, this needs to be checked! sal_uInt16 nPrefix = */ GetImport().GetNamespaceMap().GetKeyByAttrName( xAttrList->getNameByIndex( nAttr ), &aLocalName );
-
-                switch( EASGet( aLocalName ) )
-                {
-                    case EAS_formula :
-                        aFormula = rValue;
-                    break;
-                    case EAS_name :
-                        aFormulaName = rValue;
+                case EAS_formula :
+                    aFormula = sValue;
+                break;
+                case EAS_name :
+                    aFormulaName = sValue;
+                break;
+                default:
                     break;
-                    default:
-                        break;
-                }
-            }
-            if ( !aFormulaName.isEmpty() || !aFormula.isEmpty() )
-            {
-                maEquations.push_back( aFormula );
-                maEquationNames.push_back( aFormulaName );
             }
         }
+        if ( !aFormulaName.isEmpty() || !aFormula.isEmpty() )
+        {
+            maEquations.push_back( aFormula );
+            maEquationNames.push_back( aFormulaName );
+        }
     }
     else if ( aTokenEnum == EAS_handle )
     {
         std::vector< css::beans::PropertyValue > aHandle;
-        const sal_Int16 nLength = xAttrList->getLength();
-        for( sal_Int16 nAttr = 0; nAttr < nLength; nAttr++ )
+        for( auto& aIter : sax_fastparser::castToFastAttributeList(xAttrList) )
         {
-            OUString aLocalName;
-            const OUString& rValue = xAttrList->getValueByIndex( nAttr );
-            /* fixme sven, this needs to be checked! sal_uInt16 nPrefix = */ GetImport().GetNamespaceMap().GetKeyByAttrName( xAttrList->getNameByIndex( nAttr ), &aLocalName );
-            switch( EASGet( aLocalName ) )
+            OUString sValue = aIter.toString();
+            switch( EASGet( aIter.getToken() ) )
             {
                 case EAS_handle_mirror_vertical :
-                    GetBool( aHandle, rValue, EAS_MirroredY );
+                    GetBool( aHandle, sValue, EAS_MirroredY );
                 break;
                 case EAS_handle_mirror_horizontal :
-                    GetBool( aHandle, rValue, EAS_MirroredX );
+                    GetBool( aHandle, sValue, EAS_MirroredX );
                 break;
                 case EAS_handle_switched :
-                    GetBool( aHandle, rValue, EAS_Switched );
+                    GetBool( aHandle, sValue, EAS_Switched );
                 break;
                 case EAS_handle_position :
-                    GetEnhancedParameterPair( aHandle, rValue, EAS_Position );
+                    GetEnhancedParameterPair( aHandle, sValue, EAS_Position );
                 break;
                 case EAS_handle_range_x_minimum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RangeXMinimum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RangeXMinimum );
                 break;
                 case EAS_handle_range_x_maximum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RangeXMaximum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RangeXMaximum );
                 break;
                 case EAS_handle_range_y_minimum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RangeYMinimum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RangeYMinimum );
                 break;
                 case EAS_handle_range_y_maximum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RangeYMaximum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RangeYMaximum );
                 break;
                 case EAS_handle_polar :
-                    GetEnhancedParameterPair( aHandle, rValue, EAS_Polar );
+                    GetEnhancedParameterPair( aHandle, sValue, EAS_Polar );
                 break;
                 case EAS_handle_radius_range_minimum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RadiusRangeMinimum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RadiusRangeMinimum );
                 break;
                 case EAS_handle_radius_range_maximum :
-                    GetEnhancedParameter( aHandle, rValue, EAS_RadiusRangeMaximum );
+                    GetEnhancedParameter( aHandle, sValue, EAS_RadiusRangeMaximum );
                 break;
                 default:
                     break;
diff --git a/xmloff/source/draw/ximpcustomshape.hxx b/xmloff/source/draw/ximpcustomshape.hxx
index b5f91de1c499..d4a9f839d54d 100644
--- a/xmloff/source/draw/ximpcustomshape.hxx
+++ b/xmloff/source/draw/ximpcustomshape.hxx
@@ -57,8 +57,9 @@ public:
     virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
     virtual void SAL_CALL endFastElement(sal_Int32 nElement) override;
 
-    SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName,
-        const css::uno::Reference< css::xml::sax::XAttributeList> & xAttrList ) override;
+    virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
+        sal_Int32 nElement,
+        const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
 };
 
 #endif


More information about the Libreoffice-commits mailing list