summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-11-18 20:19:47 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-19 10:33:16 +0100
commit560baa7e6d04607408c9c5120099af09bc76e57c (patch)
tree975ed03757a7fc96594e1c1f9e151074fd6bc4ef /xmloff
parentacf7d8d1ab6fe6ad0fb8a5d1ad2d2ef53f578757 (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.cxx68
-rw-r--r--xmloff/source/chart/SchXMLPlotAreaContext.hxx30
-rw-r--r--xmloff/source/chart/SchXMLSeries2Context.cxx4
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;