summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-11-16 19:54:42 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-17 13:13:01 +0100
commit746532883f95f2c93ac2f94a578d2a37efdce7ab (patch)
tree2fe008cb027ece80e31507c4b68cfd8c70b81566
parent09eccdc87db5258ea779e2bcc12437f802624ee5 (diff)
fastparser in SchXMLChartContext
Change-Id: Ie1b0ec1a17c959de6e0a837bf5eb200fc0be1dfd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105958 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--xmloff/source/chart/SchXMLChartContext.cxx95
-rw-r--r--xmloff/source/chart/SchXMLChartContext.hxx6
-rw-r--r--xmloff/source/chart/SchXMLLegendContext.cxx4
-rw-r--r--xmloff/source/chart/SchXMLLegendContext.hxx2
-rw-r--r--xmloff/source/chart/SchXMLPlotAreaContext.cxx4
-rw-r--r--xmloff/source/chart/SchXMLPlotAreaContext.hxx2
-rw-r--r--xmloff/source/chart/SchXMLTableContext.cxx3
-rw-r--r--xmloff/source/chart/SchXMLTableContext.hxx1
8 files changed, 75 insertions, 42 deletions
diff --git a/xmloff/source/chart/SchXMLChartContext.cxx b/xmloff/source/chart/SchXMLChartContext.cxx
index cbef46fa0ab0..a183d0b1e5f4 100644
--- a/xmloff/source/chart/SchXMLChartContext.cxx
+++ b/xmloff/source/chart/SchXMLChartContext.cxx
@@ -303,11 +303,10 @@ static void lcl_setDataProvider(uno::Reference<chart2::XChartDocument> const & x
}
}
-void SchXMLChartContext::StartElement( const uno::Reference< xml::sax::XAttributeList >& xAttrList )
+void SchXMLChartContext::startFastElement( sal_Int32 /*nElement*/,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList )
{
// parse attributes
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- const SvXMLTokenMap& rAttrTokenMap = mrImportHelper.GetChartAttrTokenMap();
uno::Reference< embed::XVisualObject > xVisualObject( mrImportHelper.GetChartDocument(), uno::UNO_QUERY);
SAL_WARN_IF(!xVisualObject.is(), "xmloff.chart", "need xVisualObject for page size");
@@ -318,22 +317,18 @@ void SchXMLChartContext::StartElement( const uno::Reference< xml::sax::XAttribut
OUString aOldChartTypeName;
bool bHasAddin = false;
- for( sal_Int16 i = 0; i < nAttrCount; i++ )
+ for( auto& aIter : sax_fastparser::castToFastAttributeList(xAttrList) )
{
- OUString sAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- OUString aValue = xAttrList->getValueByIndex( i );
- sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
-
- switch( rAttrTokenMap.Get( nPrefix, aLocalName ))
+ OUString aValue = aIter.toString();
+ switch( aIter.getToken() )
{
- case XML_TOK_CHART_DATA_PILOT_SOURCE:
+ case XML_ELEMENT(LO_EXT, XML_DATA_PILOT_SOURCE):
msDataPilotSource = aValue;
break;
- case XML_TOK_CHART_HREF:
+ case XML_ELEMENT(XLINK, XML_HREF):
m_aXLinkHRefAttributeToIndicateDataProvider = aValue;
break;
- case XML_TOK_CHART_CLASS:
+ case XML_ELEMENT(CHART, XML_CLASS):
{
OUString sClassName;
sal_uInt16 nClassPrefix =
@@ -367,26 +362,30 @@ void SchXMLChartContext::StartElement( const uno::Reference< xml::sax::XAttribut
}
break;
- case XML_TOK_CHART_WIDTH:
+ case XML_ELEMENT(SVG, XML_WIDTH):
+ case XML_ELEMENT(SVG_COMPAT, XML_WIDTH):
GetImport().GetMM100UnitConverter().convertMeasureToCore(
maChartSize.Width, aValue );
break;
- case XML_TOK_CHART_HEIGHT:
+ case XML_ELEMENT(SVG, XML_HEIGHT):
+ case XML_ELEMENT(SVG_COMPAT, XML_HEIGHT):
GetImport().GetMM100UnitConverter().convertMeasureToCore(
maChartSize.Height, aValue );
break;
- case XML_TOK_CHART_STYLE_NAME:
+ case XML_ELEMENT(CHART, XML_STYLE_NAME):
sAutoStyleName = aValue;
break;
- case XML_TOK_CHART_COL_MAPPING:
+ case XML_ELEMENT(CHART, XML_COLUMN_MAPPING):
msColTrans = aValue;
break;
- case XML_TOK_CHART_ROW_MAPPING:
+ case XML_ELEMENT(CHART, XML_ROW_MAPPING):
msRowTrans = aValue;
break;
+ default:
+ XMLOFF_WARN_UNKNOWN("xmloff", aIter);
}
}
@@ -1019,20 +1018,18 @@ void SchXMLChartContext::MergeSeriesForStockChart()
}
}
-SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList )
+css::uno::Reference< css::xml::sax::XFastContextHandler > SchXMLChartContext::createFastChildContext(
+ sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& )
{
SvXMLImportContext* pContext = nullptr;
- const SvXMLTokenMap& rTokenMap = mrImportHelper.GetChartElemTokenMap();
uno::Reference< chart::XChartDocument > xDoc = mrImportHelper.GetChartDocument();
uno::Reference< beans::XPropertySet > xProp( xDoc, uno::UNO_QUERY );
- switch( rTokenMap.Get( nPrefix, rLocalName ))
+ switch(nElement)
{
- case XML_TOK_CHART_PLOT_AREA:
- pContext = new SchXMLPlotAreaContext( mrImportHelper, GetImport(), rLocalName,
+ case XML_ELEMENT(CHART, XML_PLOT_AREA):
+ pContext = new SchXMLPlotAreaContext( mrImportHelper, GetImport(),
m_aXLinkHRefAttributeToIndicateDataProvider,
msCategoriesAddress,
msChartAddress, m_bHasRangeAtPlotArea, mbAllRangeAddressesAvailable,
@@ -1043,7 +1040,7 @@ SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
maLSequencesPerIndex, maChartSize );
break;
- case XML_TOK_CHART_TITLE:
+ case XML_ELEMENT(CHART, XML_TITLE):
if( xDoc.is())
{
if( xProp.is())
@@ -1056,7 +1053,7 @@ SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
}
break;
- case XML_TOK_CHART_SUBTITLE:
+ case XML_ELEMENT(CHART, XML_SUBTITLE):
if( xDoc.is())
{
if( xProp.is())
@@ -1069,14 +1066,14 @@ SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
}
break;
- case XML_TOK_CHART_LEGEND:
- pContext = new SchXMLLegendContext( mrImportHelper, GetImport(), rLocalName );
+ case XML_ELEMENT(CHART, XML_LEGEND):
+ pContext = new SchXMLLegendContext( mrImportHelper, GetImport() );
break;
- case XML_TOK_CHART_TABLE:
+ case XML_ELEMENT(TABLE, XML_TABLE):
{
SchXMLTableContext * pTableContext =
- new SchXMLTableContext( mrImportHelper, GetImport(), rLocalName, maTable );
+ new SchXMLTableContext( mrImportHelper, GetImport(), maTable );
m_bHasTableElement = true;
// #i85913# take into account column- and row- mapping for
// charts with own data only for those which were not copied
@@ -1106,6 +1103,40 @@ SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
break;
default:
+ break;
+ }
+
+ return pContext;
+}
+
+SvXMLImportContextRef SchXMLChartContext::CreateChildContext(
+ sal_uInt16 nPrefix,
+ const OUString& rLocalName,
+ const uno::Reference< xml::sax::XAttributeList >& xAttrList )
+{
+ SvXMLImportContext* pContext = nullptr;
+ const SvXMLTokenMap& rTokenMap = mrImportHelper.GetChartElemTokenMap();
+ uno::Reference< chart::XChartDocument > xDoc = mrImportHelper.GetChartDocument();
+ uno::Reference< beans::XPropertySet > xProp( xDoc, uno::UNO_QUERY );
+
+ switch( rTokenMap.Get( nPrefix, rLocalName ))
+ {
+ case XML_TOK_CHART_PLOT_AREA:
+ break;
+
+ case XML_TOK_CHART_TITLE:
+ break;
+
+ case XML_TOK_CHART_SUBTITLE:
+ break;
+
+ case XML_TOK_CHART_LEGEND:
+ break;
+
+ case XML_TOK_CHART_TABLE:
+ break;
+
+ default:
// try importing as an additional shape
if( ! mxDrawPage.is())
{
diff --git a/xmloff/source/chart/SchXMLChartContext.hxx b/xmloff/source/chart/SchXMLChartContext.hxx
index afc15a16f12e..ce1868b0adc3 100644
--- a/xmloff/source/chart/SchXMLChartContext.hxx
+++ b/xmloff/source/chart/SchXMLChartContext.hxx
@@ -79,8 +79,12 @@ public:
SvXMLImport& rImport );
virtual ~SchXMLChartContext() override;
- virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
+ virtual void SAL_CALL startFastElement( sal_Int32 nElement,
+ const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void SAL_CALL endFastElement(sal_Int32 nElement) 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 SvXMLImportContextRef CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLocalName,
diff --git a/xmloff/source/chart/SchXMLLegendContext.cxx b/xmloff/source/chart/SchXMLLegendContext.cxx
index d58738b5387b..e043edb1f65f 100644
--- a/xmloff/source/chart/SchXMLLegendContext.cxx
+++ b/xmloff/source/chart/SchXMLLegendContext.cxx
@@ -80,8 +80,8 @@ struct theLegendAttributeTokenMap : public rtl::Static< LegendAttributeTokenMap,
}//end anonymous namespace
-SchXMLLegendContext::SchXMLLegendContext( SchXMLImportHelper& rImpHelper, SvXMLImport& rImport, const OUString& rLocalName ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_CHART, rLocalName ),
+SchXMLLegendContext::SchXMLLegendContext( SchXMLImportHelper& rImpHelper, SvXMLImport& rImport ) :
+ SvXMLImportContext( rImport ),
mrImportHelper( rImpHelper )
{
}
diff --git a/xmloff/source/chart/SchXMLLegendContext.hxx b/xmloff/source/chart/SchXMLLegendContext.hxx
index 2d0c46981229..548237bc284b 100644
--- a/xmloff/source/chart/SchXMLLegendContext.hxx
+++ b/xmloff/source/chart/SchXMLLegendContext.hxx
@@ -27,7 +27,7 @@
class SchXMLLegendContext : public SvXMLImportContext
{
public:
- SchXMLLegendContext( SchXMLImportHelper& rImpHelper, SvXMLImport& rImport, const OUString& rLocalName );
+ SchXMLLegendContext( SchXMLImportHelper& rImpHelper, SvXMLImport& rImport );
virtual ~SchXMLLegendContext() override;
virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList >& xAttrList ) override;
diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx
index 7dd72350dacf..7c0f8e5add61 100644
--- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx
+++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx
@@ -119,7 +119,7 @@ SchXML3DSceneAttributesHelper::~SchXML3DSceneAttributesHelper()
SchXMLPlotAreaContext::SchXMLPlotAreaContext(
SchXMLImportHelper& rImpHelper,
- SvXMLImport& rImport, const OUString& rLocalName,
+ SvXMLImport& rImport,
const OUString& rXLinkHRefAttributeToIndicateDataProvider,
OUString& rCategoriesAddress,
OUString& rChartAddress,
@@ -132,7 +132,7 @@ SchXMLPlotAreaContext::SchXMLPlotAreaContext(
const OUString& aChartTypeServiceName,
tSchXMLLSequencesPerIndex & rLSequencesPerIndex,
const awt::Size & rChartSize ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_CHART, rLocalName ),
+ SvXMLImportContext( rImport ),
mrImportHelper( rImpHelper ),
mrCategoriesAddress( rCategoriesAddress ),
mrSeriesDefaultsAndStyles( rSeriesDefaultsAndStyles ),
diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.hxx b/xmloff/source/chart/SchXMLPlotAreaContext.hxx
index 83aa55e4d6a2..652394a14bb5 100644
--- a/xmloff/source/chart/SchXMLPlotAreaContext.hxx
+++ b/xmloff/source/chart/SchXMLPlotAreaContext.hxx
@@ -85,7 +85,7 @@ class SchXMLPlotAreaContext : public SvXMLImportContext
{
public:
SchXMLPlotAreaContext( SchXMLImportHelper& rImpHelper,
- SvXMLImport& rImport, const OUString& rLocalName,
+ SvXMLImport& rImport,
const OUString& rXLinkHRefAttributeToIndicateDataProvider,
OUString& rCategoriesAddress,
OUString& rChartAddress,
diff --git a/xmloff/source/chart/SchXMLTableContext.cxx b/xmloff/source/chart/SchXMLTableContext.cxx
index 49206329c86d..c0c88c1274a4 100644
--- a/xmloff/source/chart/SchXMLTableContext.cxx
+++ b/xmloff/source/chart/SchXMLTableContext.cxx
@@ -197,9 +197,8 @@ bool lcl_tableOfRangeMatches(
// class SchXMLTableContext
SchXMLTableContext::SchXMLTableContext( SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLName,
SchXMLTable& aTable ) :
- SvXMLImportContext( rImport, XML_NAMESPACE_TABLE, rLName ),
+ SvXMLImportContext( rImport ),
mrImportHelper( rImpHelper ),
mrTable( aTable ),
mbHasRowPermutation( false ),
diff --git a/xmloff/source/chart/SchXMLTableContext.hxx b/xmloff/source/chart/SchXMLTableContext.hxx
index faca076e5230..e9d2eb004387 100644
--- a/xmloff/source/chart/SchXMLTableContext.hxx
+++ b/xmloff/source/chart/SchXMLTableContext.hxx
@@ -50,7 +50,6 @@ private:
public:
SchXMLTableContext( SchXMLImportHelper& rImpHelper,
SvXMLImport& rImport,
- const OUString& rLocalName,
SchXMLTable& aTable );
virtual ~SchXMLTableContext() override;