summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-11-20 14:37:45 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-20 18:33:03 +0100
commit18a4ad0a47dc1bcec1b9387126d7c917f7063339 (patch)
tree8205d33f6b20465052222f75e86e024e080f4a8f /xmloff
parentc7b7153213619859d5f049b7c60eafa4c81f5225 (diff)
fastparser in XMLEnhancedCustomShapeContext
Change-Id: Id5f6466fd62e15b354b2dc11a0dc610cbfb75c27 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106250 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/inc/EnhancedCustomShapeToken.hxx1
-rw-r--r--xmloff/source/draw/EnhancedCustomShapeToken.cxx6
-rw-r--r--xmloff/source/draw/ximpcustomshape.cxx79
-rw-r--r--xmloff/source/draw/ximpcustomshape.hxx5
4 files changed, 45 insertions, 46 deletions
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