diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-08-26 09:43:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-08-27 08:29:23 +0200 |
commit | 6ad28942656ad6e707ffba5b64013af87b37aebf (patch) | |
tree | a43cb31f6e9e2e9eee42bc2c8ad4d7e5d239041e /sw/source/filter/xml/xmlbrsh.cxx | |
parent | cac7ad2d011eb6602b6c9702dddb76d129f093c8 (diff) |
use fastparser in CreateTableItemImportContext
Change-Id: I172274089ef4cf669102cea020ee3135e86ef6ff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101390
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sw/source/filter/xml/xmlbrsh.cxx')
-rw-r--r-- | sw/source/filter/xml/xmlbrsh.cxx | 72 |
1 files changed, 33 insertions, 39 deletions
diff --git a/sw/source/filter/xml/xmlbrsh.cxx b/sw/source/filter/xml/xmlbrsh.cxx index e5fc7d67ca3e..8ecce1f1fc78 100644 --- a/sw/source/filter/xml/xmlbrsh.cxx +++ b/sw/source/filter/xml/xmlbrsh.cxx @@ -20,6 +20,7 @@ #include <editeng/memberids.h> #include <vcl/graph.hxx> +#include <sal/log.hxx> #include <xmloff/namespacemap.hxx> #include <xmloff/xmlnamespace.hxx> #include <xmloff/xmlimp.hxx> @@ -67,66 +68,61 @@ const SvXMLTokenMapEntry aBGImgAttributesAttrTokenMap[] = void SwXMLBrushItemImportContext::ProcessAttrs( - const uno::Reference< xml::sax::XAttributeList >& xAttrList, + const uno::Reference< xml::sax::XFastAttributeList >& xAttrList, const SvXMLUnitConverter& rUnitConv ) { SvXMLTokenMap aTokenMap( aBGImgAttributesAttrTokenMap ); - sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; - for( sal_Int16 i=0; i < nAttrCount; i++ ) + for( auto &aIter : sax_fastparser::castToFastAttributeList( xAttrList ) ) { - const OUString& rAttrName = xAttrList->getNameByIndex( i ); - OUString aLocalName; - const sal_uInt16 nPrefix = - GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, - &aLocalName ); - const OUString& rValue = xAttrList->getValueByIndex( i ); - - switch( aTokenMap.Get( nPrefix, aLocalName ) ) + const OUString sValue = aIter.toString(); + + switch( aIter.getToken() ) { - case XML_TOK_BGIMG_HREF: - m_xGraphic = GetImport().loadGraphicByURL(rValue); + case XML_ELEMENT(XLINK, XML_HREF): + m_xGraphic = GetImport().loadGraphicByURL(sValue); break; - case XML_TOK_BGIMG_TYPE: - case XML_TOK_BGIMG_ACTUATE: - case XML_TOK_BGIMG_SHOW: + case XML_ELEMENT(XLINK, XML_TYPE): + case XML_ELEMENT(XLINK, XML_ACTUATE): + case XML_ELEMENT(XLINK, XML_SHOW): break; - case XML_TOK_BGIMG_POSITION: + case XML_ELEMENT(STYLE, XML_POSITION): SvXMLImportItemMapper::PutXMLValue( - *pItem, rValue, MID_GRAPHIC_POSITION, rUnitConv ); + *pItem, sValue, MID_GRAPHIC_POSITION, rUnitConv ); break; - case XML_TOK_BGIMG_REPEAT: + case XML_ELEMENT(STYLE, XML_REPEAT): SvXMLImportItemMapper::PutXMLValue( - *pItem, rValue, MID_GRAPHIC_REPEAT, rUnitConv ); + *pItem, sValue, MID_GRAPHIC_REPEAT, rUnitConv ); break; - case XML_TOK_BGIMG_FILTER: + case XML_ELEMENT(STYLE, XML_FILTER_NAME): SvXMLImportItemMapper::PutXMLValue( - *pItem, rValue, MID_GRAPHIC_FILTER, rUnitConv ); + *pItem, sValue, MID_GRAPHIC_FILTER, rUnitConv ); break; + default: + SAL_WARN("sw", "unknown attribute " << SvXMLImport::getPrefixAndNameFromToken(aIter.getToken()) << "=" << sValue); } } } -SvXMLImportContextRef SwXMLBrushItemImportContext::CreateChildContext( - sal_uInt16 nPrefix, const OUString& rLocalName, - const uno::Reference< xml::sax::XAttributeList > & xAttrList ) +css::uno::Reference< css::xml::sax::XFastContextHandler > SwXMLBrushItemImportContext::createFastChildContext( + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& /*xAttrList*/ ) { - SvXMLImportContext *pContext = nullptr; - if (xmloff::token::IsXMLToken(rLocalName, xmloff::token::XML_BINARY_DATA)) + if ((nElement & TOKEN_MASK) == xmloff::token::XML_BINARY_DATA) { if (!m_xBase64Stream.is()) { m_xBase64Stream = GetImport().GetStreamForGraphicObjectURLFromBase64(); if (m_xBase64Stream.is()) - pContext = new XMLBase64ImportContext(GetImport(), nPrefix, rLocalName, xAttrList, m_xBase64Stream); + return new XMLBase64ImportContext(GetImport(), m_xBase64Stream); } } - - return pContext; + SAL_WARN("sw", "unknown element " << SvXMLImport::getPrefixAndNameFromToken(nElement)); + return nullptr; } -void SwXMLBrushItemImportContext::EndElement() +void SwXMLBrushItemImportContext::endFastElement(sal_Int32 ) { if (m_xBase64Stream.is()) { @@ -150,12 +146,11 @@ void SwXMLBrushItemImportContext::EndElement() } SwXMLBrushItemImportContext::SwXMLBrushItemImportContext( - SvXMLImport& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const uno::Reference< xml::sax::XAttributeList >& xAttrList, + SvXMLImport& rImport, sal_Int32 /*nElement*/, + const uno::Reference< xml::sax::XFastAttributeList >& xAttrList, const SvXMLUnitConverter& rUnitConv, const SvxBrushItem& rItem ) : - SvXMLImportContext( rImport, nPrfx, rLName ), + SvXMLImportContext( rImport ), pItem( new SvxBrushItem( rItem ) ) { // delete any graphic that is existing @@ -165,12 +160,11 @@ SwXMLBrushItemImportContext::SwXMLBrushItemImportContext( } SwXMLBrushItemImportContext::SwXMLBrushItemImportContext( - SvXMLImport& rImport, sal_uInt16 nPrfx, - const OUString& rLName, - const uno::Reference< xml::sax::XAttributeList > & xAttrList, + SvXMLImport& rImport, sal_Int32 /*nElement*/, + const uno::Reference< xml::sax::XFastAttributeList > & xAttrList, const SvXMLUnitConverter& rUnitConv, sal_uInt16 nWhich ) : - SvXMLImportContext( rImport, nPrfx, rLName ), + SvXMLImportContext( rImport ), pItem( new SvxBrushItem( nWhich ) ) { ProcessAttrs( xAttrList, rUnitConv ); |