Kaydet (Commit) 73baabff authored tarafından Noel Grandin's avatar Noel Grandin

chart2: replace boost::ptr_vector with std::vector<unique_ptr>

Change-Id: I5c374afcfa2760ebf21e461f38fe392692054dfe
üst e0dec4c7
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <boost/bind.hpp> #include <boost/bind.hpp>
#include <boost/checked_delete.hpp> #include <boost/checked_delete.hpp>
#include <boost/ptr_container/ptr_map.hpp> #include <boost/ptr_container/ptr_map.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <memory> #include <memory>
#include <cmath> #include <cmath>
#include <com/sun/star/awt/CharSet.hpp> #include <com/sun/star/awt/CharSet.hpp>
......
...@@ -116,7 +116,6 @@ ...@@ -116,7 +116,6 @@
#include <osl/time.h> #include <osl/time.h>
#include <memory> #include <memory>
#include <boost/ptr_container/ptr_vector.hpp>
namespace chart { namespace chart {
...@@ -248,7 +247,7 @@ void AxisUsage::setExplicitScaleAndIncrement( ...@@ -248,7 +247,7 @@ void AxisUsage::setExplicitScaleAndIncrement(
aVCooSysList[i]->setExplicitScaleAndIncrement(nDimIndex, nAxisIndex, rScale, rInc); aVCooSysList[i]->setExplicitScaleAndIncrement(nDimIndex, nAxisIndex, rScale, rInc);
} }
typedef boost::ptr_vector<VSeriesPlotter> SeriesPlottersType; typedef std::vector<std::unique_ptr<VSeriesPlotter> > SeriesPlottersType;
/** This class is a container of `SeriesPlotter` objects (such as `PieChart` /** This class is a container of `SeriesPlotter` objects (such as `PieChart`
* instances). It is used for initializing coordinate systems, axes and scales * instances). It is used for initializing coordinate systems, axes and scales
...@@ -385,11 +384,9 @@ SeriesPlotterContainer::~SeriesPlotterContainer() ...@@ -385,11 +384,9 @@ SeriesPlotterContainer::~SeriesPlotterContainer()
std::vector< LegendEntryProvider* > SeriesPlotterContainer::getLegendEntryProviderList() std::vector< LegendEntryProvider* > SeriesPlotterContainer::getLegendEntryProviderList()
{ {
std::vector< LegendEntryProvider* > aRet( m_aSeriesPlotterList.size() ); std::vector< LegendEntryProvider* > aRet( m_aSeriesPlotterList.size() );
SeriesPlottersType::iterator aPlotterIter = m_aSeriesPlotterList.begin();
const SeriesPlottersType::iterator aPlotterEnd = m_aSeriesPlotterList.end();
sal_Int32 nN = 0; sal_Int32 nN = 0;
for( aPlotterIter = m_aSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter, nN++ ) for( std::unique_ptr<VSeriesPlotter>& aPlotter : m_aSeriesPlotterList)
aRet[nN] = &(*aPlotterIter); aRet[nN++] = aPlotter.get();
return aRet; return aRet;
} }
...@@ -535,7 +532,7 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter( ...@@ -535,7 +532,7 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
if( !pPlotter ) if( !pPlotter )
continue; continue;
m_aSeriesPlotterList.push_back( pPlotter ); m_aSeriesPlotterList.push_back( std::unique_ptr<VSeriesPlotter>(pPlotter) );
pPlotter->setNumberFormatsSupplier( xNumberFormatsSupplier ); pPlotter->setNumberFormatsSupplier( xNumberFormatsSupplier );
pPlotter->setColorScheme( xColorScheme ); pPlotter->setColorScheme( xColorScheme );
if(pVCooSys) if(pVCooSys)
...@@ -630,9 +627,7 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter( ...@@ -630,9 +627,7 @@ void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
{ {
if(!bSeriesNamesInitialized) if(!bSeriesNamesInitialized)
{ {
VSeriesPlotter* pSeriesPlotter = &m_aSeriesPlotterList[0]; aSeriesNames = m_aSeriesPlotterList[0]->getSeriesNames();
if( pSeriesPlotter )
aSeriesNames = pSeriesPlotter->getSeriesNames();
bSeriesNamesInitialized = true; bSeriesNamesInitialized = true;
} }
pVCooSys->setSeriesNamesForAxis( aSeriesNames ); pVCooSys->setSeriesNamesForAxis( aSeriesNames );
...@@ -731,11 +726,9 @@ void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate) ...@@ -731,11 +726,9 @@ void SeriesPlotterContainer::initAxisUsageList(const Date& rNullDate)
void SeriesPlotterContainer::setScalesFromCooSysToPlotter() void SeriesPlotterContainer::setScalesFromCooSysToPlotter()
{ {
//set scales to plotter to enable them to provide the preferred scene AspectRatio //set scales to plotter to enable them to provide the preferred scene AspectRatio
SeriesPlottersType::iterator aPlotterIter = m_aSeriesPlotterList.begin(); for( std::unique_ptr<VSeriesPlotter>& aPlotter : m_aSeriesPlotterList )
const SeriesPlottersType::iterator aPlotterEnd = m_aSeriesPlotterList.end();
for( aPlotterIter = m_aSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter )
{ {
VSeriesPlotter* pSeriesPlotter = &(*aPlotterIter); VSeriesPlotter* pSeriesPlotter = aPlotter.get();
VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( m_rVCooSysList, pSeriesPlotter ); VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( m_rVCooSysList, pSeriesPlotter );
if(pVCooSys) if(pVCooSys)
{ {
...@@ -750,11 +743,9 @@ void SeriesPlotterContainer::setScalesFromCooSysToPlotter() ...@@ -750,11 +743,9 @@ void SeriesPlotterContainer::setScalesFromCooSysToPlotter()
void SeriesPlotterContainer::setNumberFormatsFromAxes() void SeriesPlotterContainer::setNumberFormatsFromAxes()
{ {
//set numberformats to plotter to enable them to display the data labels in the numberformat of the axis //set numberformats to plotter to enable them to display the data labels in the numberformat of the axis
SeriesPlottersType::iterator aPlotterIter = m_aSeriesPlotterList.begin(); for( std::unique_ptr<VSeriesPlotter>& aPlotter : m_aSeriesPlotterList )
const SeriesPlottersType::iterator aPlotterEnd = m_aSeriesPlotterList.end();
for( aPlotterIter = m_aSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter )
{ {
VSeriesPlotter* pSeriesPlotter = &(*aPlotterIter); VSeriesPlotter* pSeriesPlotter = aPlotter.get();
VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( m_rVCooSysList, pSeriesPlotter ); VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( m_rVCooSysList, pSeriesPlotter );
if(pVCooSys) if(pVCooSys)
{ {
...@@ -999,12 +990,9 @@ drawing::Direction3D SeriesPlotterContainer::getPreferredAspectRatio() ...@@ -999,12 +990,9 @@ drawing::Direction3D SeriesPlotterContainer::getPreferredAspectRatio()
//first with special demands wins (less or equal zero <-> arbitrary) //first with special demands wins (less or equal zero <-> arbitrary)
double fx, fy, fz; double fx, fy, fz;
fx = fy = fz = -1.0; fx = fy = fz = -1.0;
SeriesPlottersType::const_iterator aPlotterIter = m_aSeriesPlotterList.begin(); for( std::unique_ptr<VSeriesPlotter>& aPlotter : m_aSeriesPlotterList )
const SeriesPlottersType::const_iterator aPlotterEnd = m_aSeriesPlotterList.end();
for( aPlotterIter = m_aSeriesPlotterList.begin(), nPlotterCount=0
; aPlotterIter != aPlotterEnd; ++aPlotterIter, ++nPlotterCount )
{ {
drawing::Direction3D aSingleRatio( aPlotterIter->getPreferredDiagramAspectRatio() ); drawing::Direction3D aSingleRatio( aPlotter->getPreferredDiagramAspectRatio() );
if( fx<0 && aSingleRatio.DirectionX>0 ) if( fx<0 && aSingleRatio.DirectionX>0 )
fx = aSingleRatio.DirectionX; fx = aSingleRatio.DirectionX;
...@@ -1030,6 +1018,7 @@ drawing::Direction3D SeriesPlotterContainer::getPreferredAspectRatio() ...@@ -1030,6 +1018,7 @@ drawing::Direction3D SeriesPlotterContainer::getPreferredAspectRatio()
if( fx>0 && fy>0 && fz>0 ) if( fx>0 && fy>0 && fz>0 )
break; break;
++nPlotterCount;
} }
aPreferredAspectRatio = drawing::Direction3D(fx, fy, fz); aPreferredAspectRatio = drawing::Direction3D(fx, fy, fz);
return aPreferredAspectRatio; return aPreferredAspectRatio;
...@@ -1728,11 +1717,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D ...@@ -1728,11 +1717,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
// - create data series for all charttypes // - create data series for all charttypes
m_bPointsWereSkipped = false; m_bPointsWereSkipped = false;
SeriesPlottersType::iterator aPlotterIter = rSeriesPlotterList.begin(); for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
const SeriesPlottersType::iterator aPlotterEnd = rSeriesPlotterList.end();
for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter )
{ {
VSeriesPlotter* pSeriesPlotter = &(*aPlotterIter); VSeriesPlotter* pSeriesPlotter = aPlotter.get();
OUString aCID; //III OUString aCID; //III
uno::Reference< drawing::XShapes > xSeriesTarget(0); uno::Reference< drawing::XShapes > xSeriesTarget(0);
if( pSeriesPlotter->WantToPlotInFrontOfAxisLine() ) if( pSeriesPlotter->WantToPlotInFrontOfAxisLine() )
...@@ -1769,10 +1756,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D ...@@ -1769,10 +1756,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
if (!rParam.mbUseFixedInnerSize) if (!rParam.mbUseFixedInnerSize)
aNewInnerRect = aVDiagram.adjustInnerSize( aConsumedOuterRect ); aNewInnerRect = aVDiagram.adjustInnerSize( aConsumedOuterRect );
for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
{ {
VSeriesPlotter* pSeriesPlotter = &(*aPlotterIter); aPlotter->releaseShapes();
pSeriesPlotter->releaseShapes();
} }
//clear and recreate //clear and recreate
...@@ -1789,18 +1775,17 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D ...@@ -1789,18 +1775,17 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
} }
// - create data series for all charttypes // - create data series for all charttypes
for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
{ {
VSeriesPlotter* pSeriesPlotter = &(*aPlotterIter); VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( rVCooSysList, aPlotter.get() );
VCoordinateSystem* pVCooSys = lcl_getCooSysForPlotter( rVCooSysList, pSeriesPlotter );
if(2==nDimensionCount) if(2==nDimensionCount)
pSeriesPlotter->setTransformationSceneToScreen( pVCooSys->getTransformationSceneToScreen() ); aPlotter->setTransformationSceneToScreen( pVCooSys->getTransformationSceneToScreen() );
pSeriesPlotter->createShapes(); aPlotter->createShapes();
m_bPointsWereSkipped = m_bPointsWereSkipped || pSeriesPlotter->PointsWereSkipped(); m_bPointsWereSkipped = m_bPointsWereSkipped || aPlotter->PointsWereSkipped();
} }
for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
aPlotterIter->rearrangeLabelToAvoidOverlapIfRequested(rPageSize); aPlotter->rearrangeLabelToAvoidOverlapIfRequested(rPageSize);
} }
if (rParam.mbUseFixedInnerSize) if (rParam.mbUseFixedInnerSize)
...@@ -1811,9 +1796,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D ...@@ -1811,9 +1796,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
aUsedOuterRect = rParam.maRemainingSpace; aUsedOuterRect = rParam.maRemainingSpace;
bool bSnapRectToUsedArea = false; bool bSnapRectToUsedArea = false;
for( aPlotterIter = rSeriesPlotterList.begin(); aPlotterIter != aPlotterEnd; ++aPlotterIter ) for( std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
{ {
bSnapRectToUsedArea = aPlotterIter->shouldSnapRectToUsedArea(); bSnapRectToUsedArea = aPlotter->shouldSnapRectToUsedArea();
if(bSnapRectToUsedArea) if(bSnapRectToUsedArea)
break; break;
} }
...@@ -3213,7 +3198,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) ...@@ -3213,7 +3198,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize )
size_t n = rSeriesPlotter.size(); size_t n = rSeriesPlotter.size();
for(size_t i = 0; i < n; ++i) for(size_t i = 0; i < n; ++i)
{ {
std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[i].getAllSeries(); std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[i]->getAllSeries();
std::vector< VDataSeries* >& rAllOldDataSeries = std::vector< VDataSeries* >& rAllOldDataSeries =
maTimeBased.m_aDataSeriesList[i]; maTimeBased.m_aDataSeriesList[i];
size_t m = std::min(aAllNewDataSeries.size(), rAllOldDataSeries.size()); size_t m = std::min(aAllNewDataSeries.size(), rAllOldDataSeries.size());
...@@ -3276,7 +3261,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize ) ...@@ -3276,7 +3261,7 @@ void ChartView::createShapes2D( const awt::Size& rPageSize )
maTimeBased.m_aDataSeriesList.resize(n); maTimeBased.m_aDataSeriesList.resize(n);
for(size_t i = 0; i < n; ++i) for(size_t i = 0; i < n; ++i)
{ {
std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[i].getAllSeries(); std::vector<VDataSeries*> aAllNewDataSeries = rSeriesPlotter[i]->getAllSeries();
std::vector<VDataSeries*>& rAllOldDataSeries = maTimeBased.m_aDataSeriesList[i]; std::vector<VDataSeries*>& rAllOldDataSeries = maTimeBased.m_aDataSeriesList[i];
size_t m = aAllNewDataSeries.size(); size_t m = aAllNewDataSeries.size();
for(size_t j = 0; j < m; ++j) for(size_t j = 0; j < m; ++j)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment