summaryrefslogtreecommitdiff
path: root/chart2/source/model
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-02-03 18:12:01 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-02-04 14:40:10 +0100
commitccbd2b0c663fa19be5301f0ea8ac74caa055fe47 (patch)
tree03ccd0d11ca9f5676e4ceba9c09b41905c68f24b /chart2/source/model
parenta1513003543e4a7a47da47659a715eec2b6af452 (diff)
use more concrete types in chart2, LabeledDataSequence
Change-Id: Iecc22ad488fff7d0536ffa37f4cde7da460c2c7d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129458 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.cxx39
-rw-r--r--chart2/source/model/template/BubbleDataInterpreter.cxx17
-rw-r--r--chart2/source/model/template/DataInterpreter.cxx4
-rw-r--r--chart2/source/model/template/StockDataInterpreter.cxx45
-rw-r--r--chart2/source/model/template/XYDataInterpreter.cxx15
5 files changed, 53 insertions, 67 deletions
diff --git a/chart2/source/model/main/DataSeries.cxx b/chart2/source/model/main/DataSeries.cxx
index 4407367e9fab..4b10f5ef06bb 100644
--- a/chart2/source/model/main/DataSeries.cxx
+++ b/chart2/source/model/main/DataSeries.cxx
@@ -24,6 +24,7 @@
#include <UserDefinedProperties.hxx>
#include "DataPoint.hxx"
#include <DataSeriesHelper.hxx>
+#include <LabeledDataSequence.hxx>
#include <CloneHelper.hxx>
#include <RegressionCurveModel.hxx>
#include <ModifyListenerHelper.hxx>
@@ -140,8 +141,7 @@ DataSeries::DataSeries( const DataSeries & rOther ) :
{
if( ! rOther.m_aDataSequences.empty())
{
- CloneHelper::CloneRefVector<css::chart2::data::XLabeledDataSequence>(
- rOther.m_aDataSequences, m_aDataSequences );
+ CloneHelper::CloneRefVector(rOther.m_aDataSequences, m_aDataSequences );
ModifyListenerHelper::addListenerToAllElements( m_aDataSequences, m_xModifyEventForwarder );
}
@@ -166,9 +166,6 @@ DataSeries::DataSeries( const DataSeries & rOther ) :
// late initialization to call after copy-constructing
void DataSeries::Init( const DataSeries & rOther )
{
- if( ! rOther.m_aDataSequences.empty())
- EventListenerHelper::addListenerToAllElements( m_aDataSequences, this );
-
Reference< uno::XInterface > xThisInterface( static_cast< ::cppu::OWeakObject * >( this ));
if( ! rOther.m_aAttributedDataPoints.empty())
{
@@ -301,13 +298,13 @@ Reference< beans::XPropertySet >
{
Reference< beans::XPropertySet > xResult;
- Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequences;
+ std::vector< rtl::Reference< LabeledDataSequence > > aSequences;
{
MutexGuard aGuard( m_aMutex );
- aSequences = comphelper::containerToSequence( m_aDataSequences );
+ aSequences = m_aDataSequences;
}
- std::vector< Reference< chart2::data::XLabeledDataSequence > > aValuesSeries(
+ std::vector< rtl::Reference< LabeledDataSequence > > aValuesSeries(
DataSeriesHelper::getAllDataSequencesByRole( aSequences , "values" ) );
if (aValuesSeries.empty())
@@ -389,39 +386,36 @@ void SAL_CALL DataSeries::setData( const uno::Sequence< Reference< chart2::data:
tDataSequenceContainer aOldDataSequences;
tDataSequenceContainer aNewDataSequences;
Reference< util::XModifyListener > xModifyEventForwarder;
- Reference< lang::XEventListener > xListener;
{
MutexGuard aGuard( m_aMutex );
xModifyEventForwarder = m_xModifyEventForwarder;
- xListener = this;
std::swap( aOldDataSequences, m_aDataSequences );
- aNewDataSequences = comphelper::sequenceToContainer<tDataSequenceContainer>( aData );
+ for (const auto & i : aData)
+ {
+ auto p = dynamic_cast<LabeledDataSequence*>(i.get());
+ assert(p);
+ aNewDataSequences.push_back(p);
+ }
m_aDataSequences = aNewDataSequences;
}
ModifyListenerHelper::removeListenerFromAllElements( aOldDataSequences, xModifyEventForwarder );
- EventListenerHelper::removeListenerFromAllElements( aOldDataSequences, xListener );
- EventListenerHelper::addListenerToAllElements( aNewDataSequences, xListener );
ModifyListenerHelper::addListenerToAllElements( aNewDataSequences, xModifyEventForwarder );
fireModifyEvent();
}
-void DataSeries::setData( const std::vector< Reference< chart2::data::XLabeledDataSequence > >& aData )
+void DataSeries::setData( const std::vector< rtl::Reference< LabeledDataSequence > >& aData )
{
tDataSequenceContainer aOldDataSequences;
tDataSequenceContainer aNewDataSequences;
Reference< util::XModifyListener > xModifyEventForwarder;
- Reference< lang::XEventListener > xListener;
{
MutexGuard aGuard( m_aMutex );
xModifyEventForwarder = m_xModifyEventForwarder;
- xListener = this;
std::swap( aOldDataSequences, m_aDataSequences );
aNewDataSequences = aData;
m_aDataSequences = aNewDataSequences;
}
ModifyListenerHelper::removeListenerFromAllElements( aOldDataSequences, xModifyEventForwarder );
- EventListenerHelper::removeListenerFromAllElements( aOldDataSequences, xListener );
- EventListenerHelper::addListenerToAllElements( aNewDataSequences, xListener );
ModifyListenerHelper::addListenerToAllElements( aNewDataSequences, xModifyEventForwarder );
fireModifyEvent();
}
@@ -430,7 +424,7 @@ void DataSeries::setData( const std::vector< Reference< chart2::data::XLabeledDa
Sequence< Reference< chart2::data::XLabeledDataSequence > > SAL_CALL DataSeries::getDataSequences()
{
MutexGuard aGuard( m_aMutex );
- return comphelper::containerToSequence( m_aDataSequences );
+ return comphelper::containerToSequence<Reference< chart2::data::XLabeledDataSequence >>( m_aDataSequences );
}
// ____ XRegressionCurveContainer ____
@@ -524,13 +518,8 @@ void SAL_CALL DataSeries::modified( const lang::EventObject& aEvent )
}
// ____ XEventListener (base of XModifyListener) ____
-void SAL_CALL DataSeries::disposing( const lang::EventObject& rEventObject )
+void SAL_CALL DataSeries::disposing( const lang::EventObject& )
{
- // forget disposed data sequences
- tDataSequenceContainer::iterator aIt(
- std::find( m_aDataSequences.begin(), m_aDataSequences.end(), rEventObject.Source ));
- if( aIt != m_aDataSequences.end())
- m_aDataSequences.erase( aIt );
}
// ____ OPropertySet ____
diff --git a/chart2/source/model/template/BubbleDataInterpreter.cxx b/chart2/source/model/template/BubbleDataInterpreter.cxx
index 8868fbb6ca89..1ebf56056712 100644
--- a/chart2/source/model/template/BubbleDataInterpreter.cxx
+++ b/chart2/source/model/template/BubbleDataInterpreter.cxx
@@ -55,9 +55,9 @@ InterpretedData BubbleDataInterpreter::interpretDataSource(
std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
- Reference< data::XLabeledDataSequence > xValuesX;
- vector< Reference< data::XLabeledDataSequence > > aYValuesVector;
- vector< Reference< data::XLabeledDataSequence > > aSizeValuesVector;
+ rtl::Reference< LabeledDataSequence > xValuesX;
+ vector< rtl::Reference< LabeledDataSequence > > aYValuesVector;
+ vector< rtl::Reference< LabeledDataSequence > > aSizeValuesVector;
rtl::Reference< LabeledDataSequence > xCategories;
bool bHasCategories = HasCategories( aArguments, aData );
@@ -90,7 +90,7 @@ InterpretedData BubbleDataInterpreter::interpretDataSource(
}
else if( !xValuesX.is() && bSetXValues )
{
- xValuesX.set( aData[nDataIdx] );
+ xValuesX = aData[nDataIdx];
if( xValuesX.is())
SetRole( xValuesX->getValues(), "values-x");
}
@@ -120,16 +120,15 @@ InterpretedData BubbleDataInterpreter::interpretDataSource(
vector< Reference< XDataSeries > > aSeriesVec;
aSeriesVec.reserve( aSizeValuesVector.size());
- Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX;
- Reference< util::XCloneable > xCloneableX( xValuesX, uno::UNO_QUERY );
+ rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX;
for( size_t nN = 0; nN < aSizeValuesVector.size(); ++nN, ++nSeriesIndex )
{
- vector< Reference< data::XLabeledDataSequence > > aNewData;
+ vector< rtl::Reference< LabeledDataSequence > > aNewData;
if( xValuesX.is() )
{
- if( nN > 0 && xCloneableX.is() )
- xClonedXValues.set( xCloneableX->createClone(), uno::UNO_QUERY );
+ if( nN > 0 )
+ xClonedXValues = new LabeledDataSequence(*xValuesX);
aNewData.push_back( xClonedXValues );
}
if( aYValuesVector.size() > nN )
diff --git a/chart2/source/model/template/DataInterpreter.cxx b/chart2/source/model/template/DataInterpreter.cxx
index 38d1ff5be1c1..6155fa7e7144 100644
--- a/chart2/source/model/template/DataInterpreter.cxx
+++ b/chart2/source/model/template/DataInterpreter.cxx
@@ -143,7 +143,7 @@ InterpretedData DataInterpreter::interpretDataSource(
std::vector< rtl::Reference< LabeledDataSequence > > aData = getDataSequences(xSource);
rtl::Reference< LabeledDataSequence > xCategories;
- vector< Reference< data::XLabeledDataSequence > > aSequencesVec;
+ vector< rtl::Reference< LabeledDataSequence > > aSequencesVec;
// check if we should use categories
@@ -182,7 +182,7 @@ InterpretedData DataInterpreter::interpretDataSource(
for (auto const& elem : aSequencesVec)
{
- Sequence< Reference< data::XLabeledDataSequence > > aNewData( &elem, 1 );
+ std::vector< rtl::Reference< LabeledDataSequence > > aNewData { elem };
rtl::Reference< DataSeries > xSeries;
if( nSeriesIndex < static_cast<sal_Int32>(aSeriesToReUse.size()))
xSeries = aSeriesToReUse[nSeriesIndex];
diff --git a/chart2/source/model/template/StockDataInterpreter.cxx b/chart2/source/model/template/StockDataInterpreter.cxx
index addf3f71e3f8..df7f6d7f70cc 100644
--- a/chart2/source/model/template/StockDataInterpreter.cxx
+++ b/chart2/source/model/template/StockDataInterpreter.cxx
@@ -88,16 +88,15 @@ InterpretedData StockDataInterpreter::interpretDataSource(
sal_Int32 nNumberOfGroups( bHasVolume ? 2 : 1 );
// sequences of data::XLabeledDataSequence per series per group
- Sequence< Sequence< Sequence< Reference< data::XLabeledDataSequence > > > > aSequences( nNumberOfGroups );
- auto pSequences = aSequences.getArray();
+ std::vector< std::vector< std::vector< rtl::Reference< LabeledDataSequence > > > > aSequences( nNumberOfGroups );
const sal_Int32 nBarGroupIndex( 0 );
const sal_Int32 nCandleStickGroupIndex( nNumberOfGroups - 1 );
// allocate space for labeled sequences
if( nRemaining > 0 )
++nCandleStickSeries;
- pSequences[nCandleStickGroupIndex].realloc( nCandleStickSeries );
- auto pCandleStickGroup = pSequences[nCandleStickGroupIndex].getArray();
+ aSequences[nCandleStickGroupIndex].resize( nCandleStickSeries );
+ auto & pCandleStickGroup = aSequences[nCandleStickGroupIndex];
if( bHasVolume )
{
// if there are remaining sequences, the first one is taken for
@@ -105,9 +104,9 @@ InterpretedData StockDataInterpreter::interpretDataSource(
// is used
if( nRemaining > 1 )
++nVolumeSeries;
- pSequences[nBarGroupIndex].realloc( nVolumeSeries );
+ aSequences[nBarGroupIndex].resize( nVolumeSeries );
}
- auto pBarGroup = pSequences[nBarGroupIndex].getArray();
+ auto & pBarGroup = aSequences[nBarGroupIndex];
// create data
sal_Int32 nSourceIndex = 0; // index into aData sequence
@@ -125,8 +124,8 @@ InterpretedData StockDataInterpreter::interpretDataSource(
// bar
if( bHasVolume )
{
- pBarGroup[nLabeledSeqIdx].realloc( 1 );
- pBarGroup[nLabeledSeqIdx].getArray()[0].set( aData[nSourceIndex] );
+ pBarGroup[nLabeledSeqIdx].resize( 1 );
+ pBarGroup[nLabeledSeqIdx][0] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-y");
++nSourceIndex;
@@ -135,30 +134,30 @@ InterpretedData StockDataInterpreter::interpretDataSource(
sal_Int32 nSeqIdx = 0;
if( bHasOpenValues )
{
- pCandleStickGroup[nLabeledSeqIdx].realloc( 4 );
- pCandleStickGroup[nLabeledSeqIdx].getArray()[nSeqIdx].set( aData[nSourceIndex] );
+ pCandleStickGroup[nLabeledSeqIdx].resize( 4 );
+ pCandleStickGroup[nLabeledSeqIdx][nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-first");
++nSourceIndex;
++nSeqIdx;
}
else
- pCandleStickGroup[nLabeledSeqIdx].realloc( 3 );
- auto pLabeledSeq = pCandleStickGroup[nLabeledSeqIdx].getArray();
+ pCandleStickGroup[nLabeledSeqIdx].resize( 3 );
+ auto & pLabeledSeq = pCandleStickGroup[nLabeledSeqIdx];
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-min");
++nSourceIndex;
++nSeqIdx;
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-max");
++nSourceIndex;
++nSeqIdx;
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-last");
++nSourceIndex;
@@ -169,11 +168,11 @@ InterpretedData StockDataInterpreter::interpretDataSource(
if( bHasVolume && nRemaining > 1 )
{
OSL_ASSERT( nVolumeSeries > nNumOfFullSeries );
- pBarGroup[nVolumeSeries - 1].realloc( 1 );
+ pBarGroup[nVolumeSeries - 1].resize( 1 );
OSL_ASSERT( nDataCount > nSourceIndex );
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-y");
- pBarGroup[nVolumeSeries - 1].getArray()[0].set( aData[nSourceIndex] );
+ pBarGroup[nVolumeSeries - 1][0] = aData[nSourceIndex];
++nSourceIndex;
--nRemaining;
OSL_ENSURE( nRemaining, "additional bar should only be used if there is at least one more sequence for a candle stick" );
@@ -184,13 +183,13 @@ InterpretedData StockDataInterpreter::interpretDataSource(
{
OSL_ASSERT( nCandleStickSeries > nNumOfFullSeries );
const sal_Int32 nSeriesIndex = nCandleStickSeries - 1;
- pCandleStickGroup[nSeriesIndex].realloc( nRemaining );
- auto pLabeledSeq = pCandleStickGroup[nSeriesIndex].getArray();
+ pCandleStickGroup[nSeriesIndex].resize( nRemaining );
+ auto & pLabeledSeq = pCandleStickGroup[nSeriesIndex];
OSL_ASSERT( nDataCount > nSourceIndex );
// 1. low
sal_Int32 nSeqIdx( 0 );
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-min");
++nSourceIndex;
@@ -199,7 +198,7 @@ InterpretedData StockDataInterpreter::interpretDataSource(
// 2. high
if( nSeqIdx < nRemaining )
{
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-max");
++nSourceIndex;
@@ -210,7 +209,7 @@ InterpretedData StockDataInterpreter::interpretDataSource(
OSL_ENSURE( bHasOpenValues || nSeqIdx >= nRemaining, "could have created full series" );
if( nSeqIdx < nRemaining )
{
- pLabeledSeq[nSeqIdx].set( aData[nSourceIndex] );
+ pLabeledSeq[nSeqIdx] = aData[nSourceIndex];
if( aData[nSourceIndex].is())
SetRole( aData[nSourceIndex]->getValues(), "values-last");
++nSourceIndex;
@@ -227,7 +226,7 @@ InterpretedData StockDataInterpreter::interpretDataSource(
sal_Int32 nGroupIndex, nReUsedSeriesIdx = 0;
for( nGroupIndex=0; nGroupIndex<nNumberOfGroups; ++nGroupIndex )
{
- const sal_Int32 nNumSeriesData = aSequences[nGroupIndex].getLength();
+ const sal_Int32 nNumSeriesData = aSequences[nGroupIndex].size();
pResultSeries[nGroupIndex].realloc( nNumSeriesData );
auto pResultSerie = pResultSeries[nGroupIndex].getArray();
for( sal_Int32 nSeriesIdx = 0; nSeriesIdx < nNumSeriesData; ++nSeriesIdx, ++nReUsedSeriesIdx )
diff --git a/chart2/source/model/template/XYDataInterpreter.cxx b/chart2/source/model/template/XYDataInterpreter.cxx
index 090e77b609d5..59ab45451fdb 100644
--- a/chart2/source/model/template/XYDataInterpreter.cxx
+++ b/chart2/source/model/template/XYDataInterpreter.cxx
@@ -56,8 +56,8 @@ InterpretedData XYDataInterpreter::interpretDataSource(
std::vector< rtl::Reference< LabeledDataSequence > > aData = DataInterpreter::getDataSequences(xSource);
- Reference< data::XLabeledDataSequence > xValuesX;
- vector< Reference< data::XLabeledDataSequence > > aSequencesVec;
+ rtl::Reference< LabeledDataSequence > xValuesX;
+ vector< rtl::Reference< LabeledDataSequence > > aSequencesVec;
rtl::Reference< LabeledDataSequence > xCategories;
bool bHasCategories = HasCategories( aArguments, aData );
@@ -83,7 +83,7 @@ InterpretedData XYDataInterpreter::interpretDataSource(
}
else if( !xValuesX.is() && bSetXValues )
{
- xValuesX.set( labelData );
+ xValuesX = labelData;
if( xValuesX.is())
SetRole( xValuesX->getValues(), "values-x");
}
@@ -104,16 +104,15 @@ InterpretedData XYDataInterpreter::interpretDataSource(
vector< Reference< XDataSeries > > aSeriesVec;
aSeriesVec.reserve( aSequencesVec.size());
- Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX;
- Reference< util::XCloneable > xCloneable( xValuesX, uno::UNO_QUERY );
+ rtl::Reference< LabeledDataSequence > xClonedXValues = xValuesX;
sal_Int32 nSeriesIndex = 0;
for (auto const& elem : aSequencesVec)
{
- vector< Reference< data::XLabeledDataSequence > > aNewData;
+ vector< rtl::Reference< LabeledDataSequence > > aNewData;
- if( nSeriesIndex && xCloneable.is() )
- xClonedXValues.set( xCloneable->createClone(), uno::UNO_QUERY );
+ if( nSeriesIndex )
+ xClonedXValues = new LabeledDataSequence(*xValuesX);
if( xValuesX.is() )
aNewData.push_back( xClonedXValues );