diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2020-11-20 14:37:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-11-20 18:33:03 +0100 |
commit | 18a4ad0a47dc1bcec1b9387126d7c917f7063339 (patch) | |
tree | 8205d33f6b20465052222f75e86e024e080f4a8f /xmloff | |
parent | c7b7153213619859d5f049b7c60eafa4c81f5225 (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.hxx | 1 | ||||
-rw-r--r-- | xmloff/source/draw/EnhancedCustomShapeToken.cxx | 6 | ||||
-rw-r--r-- | xmloff/source/draw/ximpcustomshape.cxx | 79 | ||||
-rw-r--r-- | xmloff/source/draw/ximpcustomshape.hxx | 5 |
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 |