summaryrefslogtreecommitdiff
path: root/chart2/source/model
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-02-07 11:12:45 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-02-07 11:21:24 +0100
commit372f5902200b46edd794c865f6d316a4a32d9cc6 (patch)
tree920c1d893a6b2736b15787d007c3a65ab101b3b1 /chart2/source/model
parent32c946c064cc2889bda2f46c1862e5100f0a257a (diff)
crashtesting ooo#20372
this reverts parts of the "use more concrete types in chart2, LabeledDataSequence" commits, since writer uses it's own implementation of the XLabeledDataSequence UNO interface Change-Id: Icc2c5e9a38f789cddd9fbca63301397ce759fbff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129587 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/model')
-rw-r--r--chart2/source/model/main/DataSeries.cxx10
-rw-r--r--chart2/source/model/template/BubbleDataInterpreter.cxx30
-rw-r--r--chart2/source/model/template/ChartTypeTemplate.cxx2
-rw-r--r--chart2/source/model/template/DataInterpreter.cxx26
-rw-r--r--chart2/source/model/template/StockDataInterpreter.cxx6
-rw-r--r--chart2/source/model/template/XYDataInterpreter.cxx28
6 files changed, 49 insertions, 53 deletions
diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx
index 4b10f5ef06bb..b932a7b06578 100644
--- a/chart2/source/model/main/DataSeries.cxx
+++ b/chart2/source/model/main/DataSeries.cxx
@@ -298,13 +298,13 @@ Reference< beans::XPropertySet >
{
Reference< beans::XPropertySet > xResult;
- std::vector< rtl::Reference< LabeledDataSequence > > aSequences;
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences;
{
MutexGuard aGuard( m_aMutex );
aSequences = m_aDataSequences;
}
- std::vector< rtl::Reference< LabeledDataSequence > > aValuesSeries(
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValuesSeries(
DataSeriesHelper::getAllDataSequencesByRole( aSequences , "values" ) );
if (aValuesSeries.empty())
@@ -392,9 +392,7 @@ void SAL_CALL DataSeries::setData( const uno::Sequence< Reference< chart2::data:
std::swap( aOldDataSequences, m_aDataSequences );
for (const auto & i : aData)
{
- auto p = dynamic_cast<LabeledDataSequence*>(i.get());
- assert(p);
- aNewDataSequences.push_back(p);
+ aNewDataSequences.push_back(i);
}
m_aDataSequences = aNewDataSequences;
}
@@ -403,7 +401,7 @@ void SAL_CALL DataSeries::setData( const uno::Sequence< Reference< chart2::data:
fireModifyEvent();
}
-void DataSeries::setData( const std::vector< rtl::Reference< LabeledDataSequence > >& aData )
+void DataSeries::setData( const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > >& aData )
{
tDataSequenceContainer aOldDataSequences;
tDataSequenceContainer aNewDataSequences;
diff --git a/chart2/source/model/template/BubbleDataInterpreter.cxx b/chart2/source/model/template/BubbleDataInterpreter.cxx
index 84b51b4dcd74..b15e3eb80b73 100644
--- a/chart2/source/model/template/BubbleDataInterpreter.cxx
+++ b/chart2/source/model/template/BubbleDataInterpreter.cxx
@@ -53,13 +53,13 @@ InterpretedData BubbleDataInterpreter::interpretDataSource(
if( ! xSource.is())
return InterpretedData();
- std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
- rtl::Reference< LabeledDataSequence > xValuesX;
- vector< rtl::Reference< LabeledDataSequence > > aYValuesVector;
- vector< rtl::Reference< LabeledDataSequence > > aSizeValuesVector;
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesX;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aYValuesVector;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSizeValuesVector;
- rtl::Reference< LabeledDataSequence > xCategories;
+ uno::Reference< chart2::data::XLabeledDataSequence > xCategories;
bool bHasCategories = HasCategories( aArguments, aData );
bool bUseCategoriesAsX = UseCategoriesAsX( aArguments );
@@ -120,15 +120,16 @@ InterpretedData BubbleDataInterpreter::interpretDataSource(
vector< Reference< XDataSeries > > aSeriesVec;
aSeriesVec.reserve( aSizeValuesVector.size());
- rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX;
+ Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX;
+ Reference< util::XCloneable > xCloneableX( xValuesX, uno::UNO_QUERY );
for( size_t nN = 0; nN < aSizeValuesVector.size(); ++nN, ++nSeriesIndex )
{
- vector< rtl::Reference< LabeledDataSequence > > aNewData;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData;
if( xValuesX.is() )
{
- if( nN > 0 )
- xClonedXValues = new LabeledDataSequence(*xValuesX);
+ if( nN > 0 && xCloneableX.is() )
+ xClonedXValues.set( xCloneableX->createClone(), uno::UNO_QUERY );
aNewData.push_back( xClonedXValues );
}
if( aYValuesVector.size() > nN )
@@ -164,18 +165,18 @@ InterpretedData BubbleDataInterpreter::reinterpretDataSeries(
Reference< data::XDataSource > xSeriesSource( aSeries[i], uno::UNO_QUERY_THROW );
Sequence< Reference< data::XLabeledDataSequence > > aNewSequences;
- rtl::Reference< LabeledDataSequence > xValuesSize(
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesSize(
DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-size" ));
- rtl::Reference< LabeledDataSequence > xValuesY(
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesY(
DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-y" ));
- rtl::Reference< LabeledDataSequence > xValuesX(
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesX(
DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-x" ));
if( ! xValuesX.is() ||
! xValuesY.is() ||
! xValuesSize.is() )
{
- vector< rtl::Reference< LabeledDataSequence > > aValueSeqVec(
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValueSeqVec(
DataSeriesHelper::getAllDataSequencesByRole(
xSeriesSource->getDataSequences(), "values" ));
if( xValuesX.is())
@@ -236,8 +237,7 @@ InterpretedData BubbleDataInterpreter::reinterpretDataSeries(
#if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG
for( auto const & j : aSeqs )
{
- rtl::Reference< ::chart::LabeledDataSequence > j2 = dynamic_cast<LabeledDataSequence*>(j.get());
- assert( (j2 == xValuesY || j2 == xValuesX || j2 == xValuesSize) && "All sequences should be used" );
+ assert( (j == xValuesY || j == xValuesX || j == xValuesSize) && "All sequences should be used" );
}
#endif
Reference< data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY_THROW );
diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx
index df4cb7d17c92..190741bb01a3 100644
--- a/chart2/source/model/template/ChartTypeTemplate.cxx
+++ b/chart2/source/model/template/ChartTypeTemplate.cxx
@@ -715,7 +715,7 @@ sal_Int32 ChartTypeTemplate::getAxisCountByDimension( sal_Int32 nDimension )
void ChartTypeTemplate::FillDiagram(
const rtl::Reference< ::chart::Diagram >& xDiagram,
const Sequence< Sequence< Reference< XDataSeries > > >& aSeriesSeq,
- const rtl::Reference< LabeledDataSequence >& xCategories,
+ const uno::Reference< chart2::data::XLabeledDataSequence >& xCategories,
const std::vector< rtl::Reference< ChartType > >& aOldChartTypesSeq )
{
adaptDiagram( xDiagram );
diff --git a/chart2/source/model/template/DataInterpreter.cxx b/chart2/source/model/template/DataInterpreter.cxx
index 6155fa7e7144..2496147cce57 100644
--- a/chart2/source/model/template/DataInterpreter.cxx
+++ b/chart2/source/model/template/DataInterpreter.cxx
@@ -68,9 +68,9 @@ InterpretedData DataInterpreter::interpretDataSource(
lcl_ShowDataSource( xSource );
#endif
- std::vector< rtl::Reference< LabeledDataSequence > > aData = getDataSequences(xSource);
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = getDataSequences(xSource);
- rtl::Reference< LabeledDataSequence > xCategories;
+ uno::Reference< chart2::data::XLabeledDataSequence > xCategories;
vector< Reference< data::XLabeledDataSequence > > aSequencesVec;
// check if we should use categories
@@ -79,7 +79,7 @@ InterpretedData DataInterpreter::interpretDataSource(
// parse data
bool bCategoriesUsed = false;
- for( rtl::Reference< LabeledDataSequence > const & labeledData : aData )
+ for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledData : aData )
{
try
{
@@ -140,10 +140,10 @@ InterpretedData DataInterpreter::interpretDataSource(
lcl_ShowDataSource( xSource );
#endif
- std::vector< rtl::Reference< LabeledDataSequence > > aData = getDataSequences(xSource);
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = getDataSequences(xSource);
- rtl::Reference< LabeledDataSequence > xCategories;
- vector< rtl::Reference< LabeledDataSequence > > aSequencesVec;
+ uno::Reference< chart2::data::XLabeledDataSequence > xCategories;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequencesVec;
// check if we should use categories
@@ -151,7 +151,7 @@ InterpretedData DataInterpreter::interpretDataSource(
// parse data
bool bCategoriesUsed = false;
- for( rtl::Reference< LabeledDataSequence > const & labeledData : aData )
+ for( uno::Reference< chart2::data::XLabeledDataSequence > const & labeledData : aData )
{
try
{
@@ -182,7 +182,7 @@ InterpretedData DataInterpreter::interpretDataSource(
for (auto const& elem : aSequencesVec)
{
- std::vector< rtl::Reference< LabeledDataSequence > > aNewData { elem };
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData { elem };
rtl::Reference< DataSeries > xSeries;
if( nSeriesIndex < static_cast<sal_Int32>(aSeriesToReUse.size()))
xSeries = aSeriesToReUse[nSeriesIndex];
@@ -437,7 +437,7 @@ bool DataInterpreter::HasCategories(
bool DataInterpreter::HasCategories(
const Sequence< beans::PropertyValue > & rArguments,
- const std::vector< rtl::Reference< LabeledDataSequence > > & rData )
+ const std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > & rData )
{
bool bHasCategories = false;
@@ -473,15 +473,13 @@ css::uno::Sequence< OUString > SAL_CALL DataInterpreter::getSupportedServiceName
return { "com.sun.star.chart2.DataInterpreter" };
}
-std::vector< rtl::Reference< LabeledDataSequence > > DataInterpreter::getDataSequences(
+std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > DataInterpreter::getDataSequences(
const css::uno::Reference< css::chart2::data::XDataSource >& xSource)
{
- std::vector< rtl::Reference< LabeledDataSequence > > aData;
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData;
for (const Reference< data::XLabeledDataSequence > & rLDS : xSource->getDataSequences() )
{
- auto pLDS = dynamic_cast<LabeledDataSequence*>(rLDS.get());
- assert(pLDS);
- aData.push_back(pLDS);
+ aData.push_back(rLDS);
}
return aData;
}
diff --git a/chart2/source/model/template/StockDataInterpreter.cxx b/chart2/source/model/template/StockDataInterpreter.cxx
index df7f6d7f70cc..f96084e06dae 100644
--- a/chart2/source/model/template/StockDataInterpreter.cxx
+++ b/chart2/source/model/template/StockDataInterpreter.cxx
@@ -52,8 +52,8 @@ InterpretedData StockDataInterpreter::interpretDataSource(
if( ! xSource.is())
return InterpretedData();
- rtl::Reference< LabeledDataSequence > xCategories;
- std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
+ uno::Reference< chart2::data::XLabeledDataSequence > xCategories;
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
const sal_Int32 nDataCount( aData.size());
// sub-type properties
@@ -88,7 +88,7 @@ InterpretedData StockDataInterpreter::interpretDataSource(
sal_Int32 nNumberOfGroups( bHasVolume ? 2 : 1 );
// sequences of data::XLabeledDataSequence per series per group
- std::vector< std::vector< std::vector< rtl::Reference< LabeledDataSequence > > > > aSequences( nNumberOfGroups );
+ std::vector< std::vector< std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > > > aSequences( nNumberOfGroups );
const sal_Int32 nBarGroupIndex( 0 );
const sal_Int32 nCandleStickGroupIndex( nNumberOfGroups - 1 );
diff --git a/chart2/source/model/template/XYDataInterpreter.cxx b/chart2/source/model/template/XYDataInterpreter.cxx
index 772963b7e29e..fb9d1d9c788b 100644
--- a/chart2/source/model/template/XYDataInterpreter.cxx
+++ b/chart2/source/model/template/XYDataInterpreter.cxx
@@ -54,19 +54,19 @@ InterpretedData XYDataInterpreter::interpretDataSource(
if( ! xSource.is())
return InterpretedData();
- std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
+ std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
- rtl::Reference< LabeledDataSequence > xValuesX;
- vector< rtl::Reference< LabeledDataSequence > > aSequencesVec;
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesX;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aSequencesVec;
- rtl::Reference< LabeledDataSequence > xCategories;
+ uno::Reference< chart2::data::XLabeledDataSequence > xCategories;
bool bHasCategories = HasCategories( aArguments, aData );
bool bUseCategoriesAsX = UseCategoriesAsX( aArguments );
// parse data
bool bCategoriesUsed = false;
bool bSetXValues = aData.size()>1;
- for( rtl::Reference< LabeledDataSequence > const & labelData : aData )
+ for( uno::Reference< chart2::data::XLabeledDataSequence > const & labelData : aData )
{
try
{
@@ -104,15 +104,16 @@ InterpretedData XYDataInterpreter::interpretDataSource(
vector< Reference< XDataSeries > > aSeriesVec;
aSeriesVec.reserve( aSequencesVec.size());
- rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX;
+ Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX;
+ Reference< util::XCloneable > xCloneable( xValuesX, uno::UNO_QUERY );
sal_Int32 nSeriesIndex = 0;
for (auto const& elem : aSequencesVec)
{
- vector< rtl::Reference< LabeledDataSequence > > aNewData;
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aNewData;
- if( nSeriesIndex )
- xClonedXValues = new LabeledDataSequence(*xValuesX);
+ if( nSeriesIndex && xCloneable.is() )
+ xClonedXValues.set( xCloneable->createClone(), uno::UNO_QUERY );
if( xValuesX.is() )
aNewData.push_back( xClonedXValues );
@@ -149,15 +150,15 @@ InterpretedData XYDataInterpreter::reinterpretDataSeries(
Sequence< Reference< data::XLabeledDataSequence > > aNewSequences;
// values-y
- rtl::Reference< LabeledDataSequence > xValuesY(
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesY(
DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-y" ));
- rtl::Reference< LabeledDataSequence > xValuesX(
+ uno::Reference< chart2::data::XLabeledDataSequence > xValuesX(
DataSeriesHelper::getDataSequenceByRole( xSeriesSource, "values-x" ));
// re-use values-... as values-x/values-y
if( ! xValuesX.is() ||
! xValuesY.is())
{
- vector< rtl::Reference< LabeledDataSequence > > aValueSeqVec(
+ vector< uno::Reference< chart2::data::XLabeledDataSequence > > aValueSeqVec(
DataSeriesHelper::getAllDataSequencesByRole(
xSeriesSource->getDataSequences(), "values" ));
if( xValuesX.is())
@@ -200,8 +201,7 @@ InterpretedData XYDataInterpreter::reinterpretDataSeries(
#ifdef DBG_UTIL
for( auto const & j : aSeqs )
{
- rtl::Reference< ::chart::LabeledDataSequence > j2 = dynamic_cast<LabeledDataSequence*>(j.get());
- SAL_WARN_IF((j2 == xValuesY || j2 == xValuesX), "chart2.template", "All sequences should be used" );
+ SAL_WARN_IF((j == xValuesY || j == xValuesX), "chart2.template", "All sequences should be used" );
}
#endif
Reference< data::XDataSink > xSink( xSeriesSource, uno::UNO_QUERY_THROW );