summaryrefslogtreecommitdiff
path: root/chart2/source/view/main/ChartView.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-09-05 15:52:34 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-09-06 14:36:56 +0200
commit3e62ac3e9ef2f6759d8faca2c012dba51c314ba5 (patch)
treea7a8c60af750eb9317ad75fabbb9cafaeba21e53 /chart2/source/view/main/ChartView.cxx
parentb603c7629143b99f19f7ac6c4da2ab67d5ba20df (diff)
loplugin:useuniqueptr in VCoordinateSystem
Change-Id: I369d6755d3de2dd885214115559150256298852d Reviewed-on: https://gerrit.libreoffice.org/60051 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/view/main/ChartView.cxx')
-rw-r--r--chart2/source/view/main/ChartView.cxx81
1 files changed, 36 insertions, 45 deletions
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 5bd8dc7b8f04..4c393df4edbe 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -262,7 +262,7 @@ typedef std::vector<std::unique_ptr<VSeriesPlotter> > SeriesPlottersType;
class SeriesPlotterContainer
{
public:
- explicit SeriesPlotterContainer( std::vector< VCoordinateSystem* >& rVCooSysList );
+ explicit SeriesPlotterContainer( std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList );
~SeriesPlotterContainer();
/** It is used to set coordinate systems (`m_rVCooSysList`), this method
@@ -338,7 +338,7 @@ public:
drawing::Direction3D getPreferredAspectRatio();
SeriesPlottersType& getSeriesPlotterList() { return m_aSeriesPlotterList; }
- std::vector< VCoordinateSystem* >& getCooSysList() { return m_rVCooSysList; }
+ std::vector< std::unique_ptr<VCoordinateSystem> >& getCooSysList() { return m_rVCooSysList; }
std::vector< LegendEntryProvider* > getLegendEntryProviderList();
void AdaptScaleOfYAxisWithoutAttachedSeries( ChartModel& rModel );
@@ -353,7 +353,7 @@ private:
/** A vector of coordinate systems.
*/
- std::vector< VCoordinateSystem* >& m_rVCooSysList;
+ std::vector< std::unique_ptr<VCoordinateSystem> >& m_rVCooSysList;
/** A map whose key is a `XAxis` interface and the related value is
* an object of `AxisUsage` type.
@@ -372,7 +372,7 @@ private:
sal_Int32 m_nDefaultDateNumberFormat;
};
-SeriesPlotterContainer::SeriesPlotterContainer( std::vector< VCoordinateSystem* >& rVCooSysList )
+SeriesPlotterContainer::SeriesPlotterContainer( std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList )
: m_rVCooSysList( rVCooSysList )
, m_nMaxAxisIndex(0)
, m_bChartTypeUsesShiftedCategoryPositionPerDefault(false)
@@ -383,7 +383,7 @@ SeriesPlotterContainer::SeriesPlotterContainer( std::vector< VCoordinateSystem*
SeriesPlotterContainer::~SeriesPlotterContainer()
{
// - remove plotter from coordinatesystems
- for(VCoordinateSystem* nC : m_rVCooSysList)
+ for(auto & nC : m_rVCooSysList)
nC->clearMinimumAndMaximumSupplierList();
}
@@ -396,48 +396,47 @@ std::vector< LegendEntryProvider* > SeriesPlotterContainer::getLegendEntryProvid
return aRet;
}
-VCoordinateSystem* findInCooSysList( const std::vector< VCoordinateSystem* >& rVCooSysList
+VCoordinateSystem* findInCooSysList( const std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList
, const uno::Reference< XCoordinateSystem >& xCooSys )
{
- for(VCoordinateSystem* pVCooSys : rVCooSysList)
+ for(auto & pVCooSys : rVCooSysList)
{
if(pVCooSys->getModel()==xCooSys)
- return pVCooSys;
+ return pVCooSys.get();
}
return nullptr;
}
-VCoordinateSystem* lcl_getCooSysForPlotter( const std::vector< VCoordinateSystem* >& rVCooSysList, MinimumAndMaximumSupplier* pMinimumAndMaximumSupplier )
+VCoordinateSystem* lcl_getCooSysForPlotter( const std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList, MinimumAndMaximumSupplier* pMinimumAndMaximumSupplier )
{
if(!pMinimumAndMaximumSupplier)
return nullptr;
- for(VCoordinateSystem* pVCooSys : rVCooSysList)
+ for(auto & pVCooSys : rVCooSysList)
{
if(pVCooSys->hasMinimumAndMaximumSupplier( pMinimumAndMaximumSupplier ))
- return pVCooSys;
+ return pVCooSys.get();
}
return nullptr;
}
-VCoordinateSystem* addCooSysToList( std::vector< VCoordinateSystem* >& rVCooSysList
+VCoordinateSystem* addCooSysToList( std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList
, const uno::Reference< XCoordinateSystem >& xCooSys
, ChartModel& rChartModel )
{
- VCoordinateSystem* pVCooSys = findInCooSysList( rVCooSysList, xCooSys );
- if( !pVCooSys )
- {
- pVCooSys = VCoordinateSystem::createCoordinateSystem(xCooSys );
- if(pVCooSys)
- {
- OUString aCooSysParticle( ObjectIdentifier::createParticleForCoordinateSystem( xCooSys, rChartModel ) );
- pVCooSys->setParticle(aCooSysParticle);
+ VCoordinateSystem* pExistingVCooSys = findInCooSysList( rVCooSysList, xCooSys );
+ if( pExistingVCooSys )
+ return pExistingVCooSys;
- pVCooSys->setExplicitCategoriesProvider( new ExplicitCategoriesProvider(xCooSys, rChartModel) );
+ std::unique_ptr<VCoordinateSystem> pVCooSys = VCoordinateSystem::createCoordinateSystem(xCooSys );
+ if(!pVCooSys)
+ return nullptr;
- rVCooSysList.push_back( pVCooSys );
- }
- }
- return pVCooSys;
+ OUString aCooSysParticle( ObjectIdentifier::createParticleForCoordinateSystem( xCooSys, rChartModel ) );
+ pVCooSys->setParticle(aCooSysParticle);
+
+ pVCooSys->setExplicitCategoriesProvider( new ExplicitCategoriesProvider(xCooSys, rChartModel) );
+ rVCooSysList.push_back( std::move(pVCooSys) );
+ return rVCooSysList.back().get();
}
void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
@@ -621,10 +620,8 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
{
uno::Sequence< OUString > aSeriesNames;
bool bSeriesNamesInitialized = false;
- for(VCoordinateSystem* pVCooSys : m_rVCooSysList)
+ for(auto & pVCooSys : m_rVCooSysList)
{
- if(!pVCooSys)
- continue;
if( pVCooSys->needSeriesNamesForAxis() )
{
if(!bSeriesNamesInitialized)
@@ -662,7 +659,7 @@ void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate)
// Loop through coordinate systems in the diagram (though for now
// there should only be one coordinate system per diagram).
- for (VCoordinateSystem* pVCooSys : m_rVCooSysList)
+ for (auto & pVCooSys : m_rVCooSysList)
{
uno::Reference<XCoordinateSystem> xCooSys = pVCooSys->getModel();
sal_Int32 nDimCount = xCooSys->getDimension();
@@ -697,14 +694,14 @@ void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate)
}
AxisUsage& rAxisUsage = m_aAxisUsageList[xAxis];
- rAxisUsage.addCoordinateSystem(pVCooSys, nDimIndex, nAxisIndex);
+ rAxisUsage.addCoordinateSystem(pVCooSys.get(), nDimIndex, nAxisIndex);
}
}
}
// Determine the highest axis index of all dimensions.
m_nMaxAxisIndex = 0;
- for (VCoordinateSystem* pVCooSys : m_rVCooSysList)
+ for (auto & pVCooSys : m_rVCooSysList)
{
uno::Reference<XCoordinateSystem> xCooSys = pVCooSys->getModel();
sal_Int32 nDimCount = xCooSys->getDimension();
@@ -785,7 +782,7 @@ void SeriesPlotterContainer::setNumberFormatsFromAxes()
void SeriesPlotterContainer::updateScalesAndIncrementsOnAxes()
{
- for(VCoordinateSystem* nC : m_rVCooSysList)
+ for(auto & nC : m_rVCooSysList)
nC->updateScalesAndIncrementsOnAxes();
}
@@ -1136,13 +1133,7 @@ ChartView::~ChartView()
void ChartView::impl_deleteCoordinateSystems()
{
//delete all coordinate systems
- std::vector< VCoordinateSystem* > aVectorToDeleteObjects;
- std::swap( aVectorToDeleteObjects, m_aVCooSysList );//#i109770#
- for (auto const& elem : aVectorToDeleteObjects)
- {
- delete elem;
- }
- aVectorToDeleteObjects.clear();
+ m_aVCooSysList.clear();//#i109770#
}
// datatransfer::XTransferable
@@ -1469,7 +1460,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
basegfx::B2IRectangle aAvailableOuterRect = BaseGFXHelper::makeRectangle(rParam.maRemainingSpace);
- const std::vector< VCoordinateSystem* >& rVCooSysList( rParam.mpSeriesPlotterContainer->getCooSysList() );
+ const std::vector< std::unique_ptr<VCoordinateSystem> >& rVCooSysList( rParam.mpSeriesPlotterContainer->getCooSysList() );
SeriesPlottersType& rSeriesPlotterList = rParam.mpSeriesPlotterContainer->getSeriesPlotterList();
//create VAxis, so they can give necessary information for automatic scaling
@@ -1479,7 +1470,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
size_t nC = 0;
for( nC=0; nC < rVCooSysList.size(); nC++)
{
- VCoordinateSystem* pVCooSys = rVCooSysList[nC];
+ VCoordinateSystem* pVCooSys = rVCooSysList[nC].get();
if(nDimensionCount==3)
{
uno::Reference<beans::XPropertySet> xSceneProperties( xDiagram, uno::UNO_QUERY );
@@ -1529,7 +1520,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
//init all coordinate systems
for( nC=0; nC < rVCooSysList.size(); nC++)
{
- VCoordinateSystem* pVCooSys = rVCooSysList[nC];
+ VCoordinateSystem* pVCooSys = rVCooSysList[nC].get();
pVCooSys->initPlottingTargets(xSeriesTargetInFrontOfAxis,xTextTargetShapes,m_xShapeFactory,xSeriesTargetBehindAxis);
pVCooSys->setTransformationSceneToScreen( B3DHomMatrixToHomogenMatrix(
@@ -1547,7 +1538,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
//todo: this is just a workaround at the moment for pie and donut labels
if( !bIsPieOrDonut && (!rVCooSysList.empty()) )
{
- VCoordinateSystem* pVCooSys = rVCooSysList[0];
+ VCoordinateSystem* pVCooSys = rVCooSysList[0].get();
pVCooSys->createMaximumAxesLabels();
aConsumedOuterRect = ShapeFactory::getRectangleOfShape(xBoundingShape);
@@ -1587,7 +1578,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
//create axes and grids for the final size
for( nC=0; nC < rVCooSysList.size(); nC++)
{
- VCoordinateSystem* pVCooSys = rVCooSysList[nC];
+ VCoordinateSystem* pVCooSys = rVCooSysList[nC].get();
pVCooSys->setTransformationSceneToScreen( B3DHomMatrixToHomogenMatrix(
createTransformationSceneToScreen( aVDiagram.getCurrentRectangle() ) ));
@@ -1648,7 +1639,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
//set new transformation
for( nC=0; nC < rVCooSysList.size(); nC++)
{
- VCoordinateSystem* pVCooSys = rVCooSysList[nC];
+ VCoordinateSystem* pVCooSys = rVCooSysList[nC].get();
pVCooSys->setTransformationSceneToScreen( B3DHomMatrixToHomogenMatrix(
createTransformationSceneToScreen( aNewInnerRect ) ));
}