diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2020-11-18 20:19:47 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-11-19 10:33:16 +0100 |
commit | 560baa7e6d04607408c9c5120099af09bc76e57c (patch) | |
tree | 975ed03757a7fc96594e1c1f9e151074fd6bc4ef /xmloff | |
parent | acf7d8d1ab6fe6ad0fb8a5d1ad2d2ef53f578757 (diff) |
fastparser in SchXMLDataPointContext
Change-Id: I086f3b8abc9abae88ef2a6afcd032eb088f20008
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106073
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/chart/SchXMLPlotAreaContext.cxx | 68 | ||||
-rw-r--r-- | xmloff/source/chart/SchXMLPlotAreaContext.hxx | 30 | ||||
-rw-r--r-- | xmloff/source/chart/SchXMLSeries2Context.cxx | 4 |
3 files changed, 47 insertions, 55 deletions
diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index 4da56fd0f43b..1641a516e09c 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -583,8 +583,8 @@ void SchXMLPlotAreaContext::endFastElement(sal_Int32 ) SchXMLAxisContext::CorrectAxisPositions( uno::Reference< chart2::XChartDocument >( mrImportHelper.GetChartDocument(), uno::UNO_QUERY ), maChartTypeServiceName, GetImport().GetODFVersion(), m_bAxisPositionAttributeImported ); } -SchXMLDataLabelSpanContext::SchXMLDataLabelSpanContext( SvXMLImport& rImport, const OUString& rLocalName, ::std::vector<OUString>& rLabels): - SvXMLImportContext( rImport, XML_NAMESPACE_TEXT, rLocalName), +SchXMLDataLabelSpanContext::SchXMLDataLabelSpanContext( SvXMLImport& rImport, ::std::vector<OUString>& rLabels): + SvXMLImportContext( rImport ), mrLabels(rLabels) { } @@ -599,42 +599,41 @@ void SchXMLDataLabelSpanContext::endFastElement(sal_Int32 ) mrLabels.push_back(maCharBuffer.makeStringAndClear()); } -SchXMLDataLabelParaContext::SchXMLDataLabelParaContext( SvXMLImport& rImport, const OUString& rLocalName, ::std::vector<OUString>& rLabels): - SvXMLImportContext( rImport, XML_NAMESPACE_TEXT, rLocalName), +SchXMLDataLabelParaContext::SchXMLDataLabelParaContext( SvXMLImport& rImport, ::std::vector<OUString>& rLabels): + SvXMLImportContext( rImport ), mrLabels(rLabels) { } -SvXMLImportContextRef SchXMLDataLabelParaContext::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const uno::Reference< xml::sax::XAttributeList >& /*xAttrList*/ ) +css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLDataLabelParaContext::createFastChildContext( + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) { - SvXMLImportContextRef xContext; - if ( IsXMLToken( rLocalName, XML_SPAN ) && nPrefix == XML_NAMESPACE_TEXT ) - xContext = new SchXMLDataLabelSpanContext(GetImport(), rLocalName, mrLabels); - return xContext; + if ( nElement == XML_ELEMENT(TEXT, XML_SPAN) ) + return new SchXMLDataLabelSpanContext(GetImport(), mrLabels); + else + XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement); + return nullptr; } -SchXMLDataLabelContext::SchXMLDataLabelContext(SvXMLImport& rImport, const OUString& rLocalName, +SchXMLDataLabelContext::SchXMLDataLabelContext(SvXMLImport& rImport, ::std::vector<OUString>& rLabels, DataRowPointStyle& rDataLabelStyle) - : SvXMLImportContext(rImport, XML_NAMESPACE_CHART, rLocalName) + : SvXMLImportContext(rImport) , mrLabels(rLabels) , mrDataLabelStyle(rDataLabelStyle) { } -SvXMLImportContextRef SchXMLDataLabelContext::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const uno::Reference< xml::sax::XAttributeList >& /*xAttrList*/ ) +css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLDataLabelContext::createFastChildContext( + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) { - SvXMLImportContextRef xContext; - if ( IsXMLToken( rLocalName, XML_P ) && nPrefix == XML_NAMESPACE_TEXT ) - xContext = new SchXMLDataLabelParaContext(GetImport(), rLocalName, mrLabels); - - return xContext; + if ( nElement == XML_ELEMENT(TEXT, XML_P) ) + return new SchXMLDataLabelParaContext(GetImport(), mrLabels); + else + XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement); + return nullptr; } void SchXMLDataLabelContext::StartElement(const uno::Reference<xml::sax::XAttributeList>& xAttrList) @@ -674,14 +673,12 @@ void SchXMLDataLabelContext::StartElement(const uno::Reference<xml::sax::XAttrib } -SchXMLDataPointContext::SchXMLDataPointContext( SchXMLImportHelper& rImportHelper, - SvXMLImport& rImport, const OUString& rLocalName, +SchXMLDataPointContext::SchXMLDataPointContext( SvXMLImport& rImport, ::std::vector< DataRowPointStyle >& rStyleVector, const css::uno::Reference< css::chart2::XDataSeries >& xSeries, sal_Int32& rIndex, bool bSymbolSizeForSeriesIsMissingInFile ) : - SvXMLImportContext( rImport, XML_NAMESPACE_CHART, rLocalName ), - mrImportHelper( rImportHelper ), + SvXMLImportContext( rImport ), mrStyleVector( rStyleVector ), mrIndex( rIndex ), mDataPoint(DataRowPointStyle::DATA_POINT, xSeries, rIndex, 1, OUString{}), @@ -690,21 +687,20 @@ SchXMLDataPointContext::SchXMLDataPointContext( SchXMLImportHelper& rImportHelp mDataPoint.mbSymbolSizeForSeriesIsMissingInFile = bSymbolSizeForSeriesIsMissingInFile; } -SvXMLImportContextRef SchXMLDataPointContext::CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const uno::Reference< xml::sax::XAttributeList >& /*xAttrList*/ ) +css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLDataPointContext::createFastChildContext( + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& ) { SvXMLImportContext* pContext = nullptr; - const SvXMLTokenMap& rTokenMap = mrImportHelper.GetSeriesElemTokenMap(); - - switch( rTokenMap.Get( nPrefix, rLocalName )) + switch(nElement) { - case XML_TOK_SERIES_DATA_LABEL: + case XML_ELEMENT(CHART, XML_DATA_LABEL): mbHasLabelParagraph = true; - pContext = new SchXMLDataLabelContext(GetImport(), rLocalName, mDataPoint.mCustomLabels, + pContext = new SchXMLDataLabelContext(GetImport(), mDataPoint.mCustomLabels, mDataLabel); break; + default: + XMLOFF_WARN_UNKNOWN_ELEMENT("xmloff", nElement); } return pContext; } diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.hxx b/xmloff/source/chart/SchXMLPlotAreaContext.hxx index e4c17c156d41..7ecf80628734 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.hxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.hxx @@ -144,7 +144,7 @@ private: ::std::vector<OUString>& mrLabels; OUStringBuffer maCharBuffer; public: - SchXMLDataLabelSpanContext( SvXMLImport& rImport, const OUString& rLocalName, ::std::vector<OUString>& rLabels); + SchXMLDataLabelSpanContext( SvXMLImport& rImport, ::std::vector<OUString>& rLabels); virtual void SAL_CALL characters( const OUString& rChars ) override; virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; }; @@ -154,11 +154,10 @@ class SchXMLDataLabelParaContext: public SvXMLImportContext private: ::std::vector<OUString>& mrLabels; public: - SchXMLDataLabelParaContext( SvXMLImport& rImport, const OUString& rLocalName, ::std::vector<OUString>& rLabels); - virtual SvXMLImportContextRef CreateChildContext( - sal_uInt16 nPrefix, - const OUString& rLocalName, - const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override; + SchXMLDataLabelParaContext( SvXMLImport& rImport, ::std::vector<OUString>& rLabels); + virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( + sal_Int32 nElement, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override; }; class SchXMLDataLabelContext: public SvXMLImportContext @@ -167,20 +166,19 @@ private: ::std::vector<OUString>& mrLabels; DataRowPointStyle& mrDataLabelStyle; public: - SchXMLDataLabelContext(SvXMLImport& rImport, const OUString& rLocalName, + SchXMLDataLabelContext(SvXMLImport& rImport, ::std::vector<OUString>& rLabels, DataRowPointStyle& rDataLabel); virtual void StartElement(const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList) override; - virtual 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; }; class SchXMLDataPointContext : public SvXMLImportContext { private: - SchXMLImportHelper& mrImportHelper; ::std::vector<DataRowPointStyle>& mrStyleVector; bool mbHasLabelParagraph = false; sal_Int32& mrIndex; @@ -189,8 +187,7 @@ private: DataRowPointStyle mDataLabel; public: - SchXMLDataPointContext( SchXMLImportHelper& rImportHelper, - SvXMLImport& rImport, const OUString& rLocalName, + SchXMLDataPointContext( SvXMLImport& rImport, ::std::vector< DataRowPointStyle >& rStyleVector, const css::uno::Reference< css::chart2::XDataSeries >& xSeries, sal_Int32& rIndex, @@ -199,10 +196,9 @@ public: virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override; - virtual 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; virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; }; diff --git a/xmloff/source/chart/SchXMLSeries2Context.cxx b/xmloff/source/chart/SchXMLSeries2Context.cxx index 5bcdbe688295..576d628d2fe5 100644 --- a/xmloff/source/chart/SchXMLSeries2Context.cxx +++ b/xmloff/source/chart/SchXMLSeries2Context.cxx @@ -722,13 +722,13 @@ SvXMLImportContextRef SchXMLSeries2Context::CreateChildContext( break; case XML_TOK_SERIES_DATA_POINT: - pContext = new SchXMLDataPointContext( mrImportHelper, GetImport(), rLocalName, + pContext = new SchXMLDataPointContext( GetImport(), mrStyleVector, m_xSeries, mnDataPointIndex, mbSymbolSizeIsMissingInFile ); break; case XML_TOK_SERIES_DATA_LABEL: // CustomLabels are useless for a data label element as child of a series, because it serves as default // for all data labels. But the ctor expects it, so use that of the mDataLabel struct as ersatz. - pContext = new SchXMLDataLabelContext(GetImport(), rLocalName, mDataLabel.mCustomLabels, + pContext = new SchXMLDataLabelContext(GetImport(), mDataLabel.mCustomLabels, mDataLabel); break; |