diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2022-02-03 18:12:01 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2022-02-04 14:40:10 +0100 |
commit | ccbd2b0c663fa19be5301f0ea8ac74caa055fe47 (patch) | |
tree | 03ccd0d11ca9f5676e4ceba9c09b41905c68f24b /chart2/source/model | |
parent | a1513003543e4a7a47da47659a715eec2b6af452 (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.cxx | 39 | ||||
-rw-r--r-- | chart2/source/model/template/BubbleDataInterpreter.cxx | 17 | ||||
-rw-r--r-- | chart2/source/model/template/DataInterpreter.cxx | 4 | ||||
-rw-r--r-- | chart2/source/model/template/StockDataInterpreter.cxx | 45 | ||||
-rw-r--r-- | chart2/source/model/template/XYDataInterpreter.cxx | 15 |
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 ); |