[Libreoffice-commits] core.git: Branch 'feature/perfwork4' - 6 commits - chart2/inc chart2/source
Michael Stahl
mstahl at redhat.com
Mon Oct 20 15:43:48 PDT 2014
chart2/inc/ChartView.hxx | 1
chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx | 2
chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx | 6
chart2/source/inc/AxisHelper.hxx | 2
chart2/source/inc/chartview/ExplicitValueProvider.hxx | 2
chart2/source/inc/macros.hxx | 1
chart2/source/tools/AxisHelper.cxx | 6
chart2/source/tools/ExplicitCategoriesProvider.cxx | 2
chart2/source/view/axes/Tickmarks.cxx | 29 --
chart2/source/view/axes/Tickmarks.hxx | 8
chart2/source/view/axes/VAxisBase.cxx | 25 --
chart2/source/view/axes/VAxisBase.hxx | 9
chart2/source/view/axes/VCartesianAxis.cxx | 118 ++--------
chart2/source/view/axes/VCartesianAxis.hxx | 10
chart2/source/view/axes/VCartesianCoordinateSystem.cxx | 22 -
chart2/source/view/axes/VCartesianCoordinateSystem.hxx | 2
chart2/source/view/axes/VCoordinateSystem.cxx | 41 ---
chart2/source/view/axes/VPolarCoordinateSystem.cxx | 9
chart2/source/view/axes/VPolarCoordinateSystem.hxx | 2
chart2/source/view/inc/VCoordinateSystem.hxx | 9
chart2/source/view/main/ChartView.cxx | 70 ++---
21 files changed, 101 insertions(+), 275 deletions(-)
New commits:
commit 31375f662517d864e90c0dcc040606d7ca8776c0
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon Oct 20 14:56:32 2014 +0200
chart2: fix memory leak due to cyclic reference in VAxisBase
The VAxisBase::m_xNumberFormatsSupplier refers to the ChartModel itself,
and apparently that is a cyclic reference. Naively using the
ChartModel's m_xNumberFormatsSupplier in
ChartView::impl_createDiagramAndContent() because it will later be passed
to AxisHelper::getExplicitNumberFormatKeyForAxis(), which expects to be
able to convert it to a ChartModel.
Since passing around the ChartModel as an XNumberFormattingSupplier is
sort of un-intuitive anyway, refactor some methods to use XChartDocument
instead, and only create the VPolarAxis / VCartesianAxis with the
ChartModel's m_xNumberFormatsSupplier.
The drawback is that if ChartModel::attachNumberFormatsSupplier()
is called after ChartView::update() has created the axes, it may not
have an effect on them; not sure if that is a real or hypothetical
problem.
Change-Id: Ib5f0d5882b85adaf44f80e086f19178b3e64882f
diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
index 1588a2f..afdebd1 100644
--- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
+++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
@@ -158,7 +158,7 @@ sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForAxis(
xAxis, ChartModelHelper::findDiagram( m_xChartModel ) ) );
return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis( xAxis, xCooSys
- , Reference< util::XNumberFormatsSupplier >( m_xChartModel.get(), uno::UNO_QUERY ) );
+ , getChart2Document());
}
sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForSeries(
diff --git a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
index e2cd620..76f7d68 100644
--- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
@@ -363,7 +363,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
Reference< chart2::XAxis > xCrossingMainAxis( AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys ) );
sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
- xCrossingMainAxis, xCooSys, Reference< util::XNumberFormatsSupplier >( m_xChartDoc, uno::UNO_QUERY ) );
+ xCrossingMainAxis, xCooSys, m_xChartDoc);
rOutItemSet.Put( SfxUInt32Item( nWhichId, nFormatKey ));
}
@@ -407,7 +407,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI
m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
- m_xAxis, xCooSys, Reference< util::XNumberFormatsSupplier >( m_xChartDoc, uno::UNO_QUERY ) );
+ m_xAxis, xCooSys, m_xChartDoc);
rOutItemSet.Put( SfxUInt32Item( nWhichId, nFormatKey ));
}
@@ -948,7 +948,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet
m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) );
sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
- m_xAxis, xCooSys, Reference< util::XNumberFormatsSupplier >( m_xChartDoc, uno::UNO_QUERY ) );
+ m_xAxis, xCooSys, m_xChartDoc);
aValue <<= nFormatKey;
}
diff --git a/chart2/source/inc/AxisHelper.hxx b/chart2/source/inc/AxisHelper.hxx
index 3aff9dd..803532c 100644
--- a/chart2/source/inc/AxisHelper.hxx
+++ b/chart2/source/inc/AxisHelper.hxx
@@ -57,7 +57,7 @@ public:
static sal_Int32 getExplicitNumberFormatKeyForAxis(
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxis
, const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XCoordinateSystem >& xCorrespondingCoordinateSystem
- , const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& xNumberFormatsSupplier
+ , const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument>& xChartDoc
, bool bSearchForParallelAxisIfNothingIsFound );
static ::com::sun::star::uno::Reference<
diff --git a/chart2/source/inc/chartview/ExplicitValueProvider.hxx b/chart2/source/inc/chartview/ExplicitValueProvider.hxx
index b18381c..934f22f 100644
--- a/chart2/source/inc/chartview/ExplicitValueProvider.hxx
+++ b/chart2/source/inc/chartview/ExplicitValueProvider.hxx
@@ -86,7 +86,7 @@ public:
static sal_Int32 getExplicitNumberFormatKeyForAxis(
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XAxis >& xAxis
, const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem
- , const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& xNumberFormatsSupplier );
+ , const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument>& xChartDoc);
static sal_Int32 getExplicitNumberFormatKeyForDataLabel(
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSeriesOrPointProp
diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx
index acc7570..d60b031 100644
--- a/chart2/source/tools/AxisHelper.cxx
+++ b/chart2/source/tools/AxisHelper.cxx
@@ -132,7 +132,7 @@ void AxisHelper::checkDateAxis( chart2::ScaleData& rScale, ExplicitCategoriesPro
sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis(
const Reference< chart2::XAxis >& xAxis
, const Reference< chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem
- , const Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier
+ , const Reference<chart2::XChartDocument>& xChartDoc
, bool bSearchForParallelAxisIfNothingIsFound )
{
sal_Int32 nNumberFormatKey(0);
@@ -140,7 +140,7 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis(
sal_Int32 nAxisIndex = 0;
sal_Int32 nDimensionIndex = 1;
AxisHelper::getIndicesForAxis( xAxis, xCorrespondingCoordinateSystem, nDimensionIndex, nAxisIndex );
- Reference< chart2::XChartDocument > xChartDoc( xNumberFormatsSupplier, uno::UNO_QUERY );
+ Reference<util::XNumberFormatsSupplier> const xNumberFormatsSupplier(xChartDoc, uno::UNO_QUERY);
Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY );
if (!xProp.is())
@@ -321,7 +321,7 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis(
{
sal_Int32 nParallelAxisIndex = (nAxisIndex==1) ?0 :1;
Reference< XAxis > xParallelAxis( AxisHelper::getAxis( 1, nParallelAxisIndex, xCorrespondingCoordinateSystem ) );
- nNumberFormatKey = AxisHelper::getExplicitNumberFormatKeyForAxis( xParallelAxis, xCorrespondingCoordinateSystem, xNumberFormatsSupplier, false );
+ nNumberFormatKey = AxisHelper::getExplicitNumberFormatKeyForAxis(xParallelAxis, xCorrespondingCoordinateSystem, xChartDoc, false);
}
}
}
diff --git a/chart2/source/tools/ExplicitCategoriesProvider.cxx b/chart2/source/tools/ExplicitCategoriesProvider.cxx
index 51ee17e..a576071 100644
--- a/chart2/source/tools/ExplicitCategoriesProvider.cxx
+++ b/chart2/source/tools/ExplicitCategoriesProvider.cxx
@@ -183,7 +183,7 @@ void ExplicitCategoriesProvider::convertCategoryAnysToText( uno::Sequence< OUStr
{
Reference< chart2::XAxis > xAxis( xCooSysModel->getAxisByDimension(0,0) );
nAxisNumberFormat = AxisHelper::getExplicitNumberFormatKeyForAxis(
- xAxis, xCooSysModel, uno::Reference< util::XNumberFormatsSupplier> (static_cast< ::cppu::OWeakObject* >( &rModel ), uno::UNO_QUERY), false );
+ xAxis, xCooSysModel, uno::Reference<chart2::XChartDocument>(static_cast< ::cppu::OWeakObject* >(&rModel), uno::UNO_QUERY), false );
}
sal_Int32 nLabelColor;
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
index 79005bf..9ca6286 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
@@ -94,11 +94,16 @@ void VCartesianCoordinateSystem::createGridShapes()
}
void VCartesianCoordinateSystem::createVAxisList(
- const uno::Reference< util::XNumberFormatsSupplier > & xNumberFormatsSupplier
+ const uno::Reference<chart2::XChartDocument> & xChartDoc
, const awt::Size& rFontReferenceSize
, const awt::Rectangle& rMaximumSpaceForLabels
)
{
+ // note: using xChartDoc itself as XNumberFormatsSupplier would cause
+ // a leak from VCartesianAxis due to cyclic reference
+ uno::Reference<util::XNumberFormatsSupplier> const xNumberFormatsSupplier(
+ dynamic_cast<ChartModel*>(xChartDoc.get())->getNumberFormatsSupplier());
+
m_aAxisMap.clear();
sal_Int32 nDimensionCount = m_xCooSysModel->getDimension();
@@ -144,7 +149,7 @@ void VCartesianCoordinateSystem::createVAxisList(
}
aAxisProperties.init(true);
if(aAxisProperties.m_bDisplayLabels)
- aAxisProperties.m_nNumberFormatKey = this->getNumberFormatKeyForAxis( xAxis, xNumberFormatsSupplier );
+ aAxisProperties.m_nNumberFormatKey = this->getNumberFormatKeyForAxis(xAxis, xChartDoc);
::boost::shared_ptr< VAxisBase > apVAxis( new VCartesianAxis(aAxisProperties,xNumberFormatsSupplier,nDimensionIndex,nDimensionCount) );
tFullAxisIndex aFullAxisIndex( nDimensionIndex, nAxisIndex );
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.hxx b/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
index 71bdbf4..b5a5cc4 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.hxx
@@ -34,7 +34,7 @@ public:
virtual ~VCartesianCoordinateSystem();
virtual void createVAxisList(
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & xNumberFormatsSupplier
+ const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument> &ChartDoc
, const ::com::sun::star::awt::Size& rFontReferenceSize
, const ::com::sun::star::awt::Rectangle& rMaximumSpaceForLabels ) SAL_OVERRIDE;
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx b/chart2/source/view/axes/VCoordinateSystem.cxx
index 7e88097..3e8dd8b 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -342,7 +342,7 @@ sal_Int32 VCoordinateSystem::getMaximumAxisIndexByDimension( sal_Int32 nDimensio
}
void VCoordinateSystem::createVAxisList(
- const uno::Reference< util::XNumberFormatsSupplier > & /* xNumberFormatsSupplier */
+ const uno::Reference<chart2::XChartDocument> & /* xChartDoc */
, const awt::Size& /* rFontReferenceSize */
, const awt::Rectangle& /* rMaximumSpaceForLabels */
)
@@ -573,10 +573,10 @@ void VCoordinateSystem::setSeriesNamesForAxis( const Sequence< OUString >& rSeri
sal_Int32 VCoordinateSystem::getNumberFormatKeyForAxis(
const Reference< chart2::XAxis >& xAxis
- , const Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier )
+ , const Reference<chart2::XChartDocument>& xChartDoc)
{
return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
- xAxis, m_xCooSysModel, xNumberFormatsSupplier );
+ xAxis, m_xCooSysModel, xChartDoc);
}
} //namespace chart
diff --git a/chart2/source/view/axes/VPolarCoordinateSystem.cxx b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
index 50a8ce5..fe5caa4 100644
--- a/chart2/source/view/axes/VPolarCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
@@ -62,11 +62,16 @@ uno::Sequence< sal_Int32 > VPolarCoordinateSystem::getCoordinateSystemResolution
}
void VPolarCoordinateSystem::createVAxisList(
- const uno::Reference< util::XNumberFormatsSupplier > & xNumberFormatsSupplier
+ const uno::Reference<chart2::XChartDocument> & xChartDoc
, const awt::Size& rFontReferenceSize
, const awt::Rectangle& rMaximumSpaceForLabels
)
{
+ // note: using xChartDoc itself as XNumberFormatsSupplier would cause
+ // a leak from VPolarAxis due to cyclic reference
+ uno::Reference<util::XNumberFormatsSupplier> const xNumberFormatsSupplier(
+ dynamic_cast<ChartModel*>(xChartDoc.get())->getNumberFormatsSupplier());
+
m_aAxisMap.clear();
sal_Int32 nDimensionCount = m_xCooSysModel->getDimension();
sal_Int32 nDimensionIndex = 0;
@@ -83,7 +88,7 @@ void VPolarCoordinateSystem::createVAxisList(
AxisProperties aAxisProperties(xAxis,this->getExplicitCategoriesProvider());
aAxisProperties.init();
if(aAxisProperties.m_bDisplayLabels)
- aAxisProperties.m_nNumberFormatKey = this->getNumberFormatKeyForAxis( xAxis, xNumberFormatsSupplier );
+ aAxisProperties.m_nNumberFormatKey = this->getNumberFormatKeyForAxis(xAxis, xChartDoc);
::boost::shared_ptr< VAxisBase > apVAxis( VPolarAxis::createAxis( aAxisProperties,xNumberFormatsSupplier,nDimensionIndex,nDimensionCount) );
tFullAxisIndex aFullAxisIndex( nDimensionIndex, nAxisIndex );
diff --git a/chart2/source/view/axes/VPolarCoordinateSystem.hxx b/chart2/source/view/axes/VPolarCoordinateSystem.hxx
index b5c5b85..135c3c1 100644
--- a/chart2/source/view/axes/VPolarCoordinateSystem.hxx
+++ b/chart2/source/view/axes/VPolarCoordinateSystem.hxx
@@ -38,7 +38,7 @@ public:
, const ::com::sun::star::awt::Size& rPageResolution ) SAL_OVERRIDE;
virtual void createVAxisList(
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & xNumberFormatsSupplier
+ const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument> & xChartDoc
, const ::com::sun::star::awt::Size& rFontReferenceSize
, const ::com::sun::star::awt::Rectangle& rMaximumSpaceForLabels ) SAL_OVERRIDE;
diff --git a/chart2/source/view/inc/VCoordinateSystem.hxx b/chart2/source/view/inc/VCoordinateSystem.hxx
index 1420c9c..97fa85a 100644
--- a/chart2/source/view/inc/VCoordinateSystem.hxx
+++ b/chart2/source/view/inc/VCoordinateSystem.hxx
@@ -105,7 +105,7 @@ public:
* Create "view" axis obejcts 'VAxis' from the coordinate system model.
*/
virtual void createVAxisList(
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & xNumberFormatsSupplier
+ const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument> & xChartDoc
, const ::com::sun::star::awt::Size& rFontReferenceSize
, const ::com::sun::star::awt::Rectangle& rMaximumSpaceForLabels );
@@ -145,7 +145,7 @@ protected: //methods
sal_Int32 getNumberFormatKeyForAxis( const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XAxis >& xAxis
, const ::com::sun::star::uno::Reference<
- ::com::sun::star::util::XNumberFormatsSupplier >& xNumberFormatsSupplier );
+ ::com::sun::star::chart2::XChartDocument>& xChartDoc);
private: //methods
void impl_adjustDimension( sal_Int32& rDimensionIndex ) const;
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 2f8abb3..769c007 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -1528,7 +1528,9 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
SeriesPlottersType& rSeriesPlotterList = rParam.mpSeriesPlotterContainer->getSeriesPlotterList();
//create VAxis, so they can give necessary information for automatic scaling
- uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( static_cast< ::cppu::OWeakObject* >( &mrChartModel ), uno::UNO_QUERY );
+ uno::Reference<chart2::XChartDocument> const xChartDoc(&mrChartModel);
+ uno::Reference<util::XNumberFormatsSupplier> const xNumberFormatsSupplier(
+ mrChartModel.getNumberFormatsSupplier());
size_t nC = 0;
for( nC=0; nC < m_aVCooSysList.size(); nC++)
{
@@ -1542,7 +1544,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( const CreateShapeParam2D
pVCooSys->set3DWallPositions( eLeftWallPos, eBackWallPos, eBottomPos );
}
- pVCooSys->createVAxisList(xNumberFormatsSupplier, rPageSize, rParam.maRemainingSpace);
+ pVCooSys->createVAxisList(xChartDoc, rPageSize, rParam.maRemainingSpace);
}
// - prepare list of all axis and how they are used
@@ -1959,9 +1961,9 @@ bool lcl_getPropertySwapXAndYAxis( const uno::Reference< XDiagram >& xDiagram )
sal_Int32 ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
const Reference< chart2::XAxis >& xAxis
, const Reference< chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem
- , const Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier )
+ , const Reference<chart2::XChartDocument>& xChartDoc)
{
- return AxisHelper::getExplicitNumberFormatKeyForAxis( xAxis, xCorrespondingCoordinateSystem, xNumberFormatsSupplier
+ return AxisHelper::getExplicitNumberFormatKeyForAxis( xAxis, xCorrespondingCoordinateSystem, xChartDoc
, true /*bSearchForParallelAxisIfNothingIsFound*/ );
}
commit 2cd354e47df13de857c3f676034066e9a7e5077c
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Oct 20 18:35:17 2014 -0400
Mark these methods const.
Change-Id: Idf53b85d962406caf9ca1df636fffd8b3459baf5
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index be13e64..e40c433 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -428,8 +428,8 @@ TickInfo* MaxLabelTickIter::nextInfo()
return 0;
}
-bool VCartesianAxis::isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties
- , bool bIsHorizontalAxis )
+bool VCartesianAxis::isBreakOfLabelsAllowed(
+ const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis ) const
{
if( m_aTextLabels.getLength() > 100 )
return false;
@@ -446,8 +446,8 @@ bool VCartesianAxis::isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLab
return bIsHorizontalAxis;
}
-bool VCartesianAxis::isAutoStaggeringOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties
- , bool bIsHorizontalAxis, bool bIsVerticalAxis )
+bool VCartesianAxis::isAutoStaggeringOfLabelsAllowed(
+ const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis ) const
{
if( rAxisLabelProperties.eStaggering != STAGGER_AUTO )
return false;
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index e3f26a8..574bc2f 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -121,9 +121,9 @@ protected: //methods
void doStaggeringOfLabels( const AxisLabelProperties& rAxisLabelProperties
, TickFactory2D* pTickFactory2D );
- bool isAutoStaggeringOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties
- , bool bIsHorizontalAxis, bool bIsVerticalAxis );
- bool isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis );
+ bool isAutoStaggeringOfLabelsAllowed(
+ const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis, bool bIsVerticalAxis ) const;
+ bool isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties, bool bIsHorizontalAxis ) const;
::basegfx::B2DVector getScreenPosition( double fLogicX, double fLogicY, double fLogicZ ) const;
ScreenPosAndLogicPos getScreenPosAndLogicPos( double fLogicX, double fLogicY, double fLogicZ ) const;
commit 7171216653ef5647a58238f8d01b3d90a24d9b01
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Oct 20 18:04:01 2014 -0400
Revert "Reset VCoordinateSystem instances rather than deleting and creating them."
This reverts commit 154f2a77e726cf04014e9c8548da7f8aad6ef01b.
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx b/chart2/source/view/axes/VCoordinateSystem.cxx
index 7b6e02b..7e88097 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -89,38 +89,10 @@ VCoordinateSystem::VCoordinateSystem( const Reference< XCoordinateSystem >& xCoo
m_aExplicitScales[2].Orientation = AxisOrientation_MATHEMATICAL;
}
}
-
VCoordinateSystem::~VCoordinateSystem()
{
}
-void VCoordinateSystem::reset()
-{
- m_xLogicTargetForGrids.clear();
- m_xLogicTargetForAxes.clear();
- m_xFinalTarget.clear();
- m_xShapeFactory.clear();
- m_aMatrixSceneToScreen = drawing::HomogenMatrix();
- m_eLeftWallPos = CuboidPlanePosition_Left;
- m_eBackWallPos = CuboidPlanePosition_Back;
- m_eBottomPos = CuboidPlanePosition_Bottom;
- m_aMergedMinMaxSupplier.clearMinimumAndMaximumSupplierList();
- m_aSeriesNamesForZAxis.realloc(0);
-
- m_aExplicitScales.clear();
- m_aExplicitScales.resize(3);
-
- m_aExplicitIncrements.clear();
- m_aExplicitIncrements.resize(3);
-
- m_aSecondaryExplicitScales.clear();
- m_aSecondaryExplicitIncrements.clear();
-
- m_apExplicitCategoriesProvider.reset();
-
- m_aAxisMap.clear(); // TODO : switch to reset() later.
-}
-
void VCoordinateSystem::initPlottingTargets( const Reference< drawing::XShapes >& xLogicTarget
, const Reference< drawing::XShapes >& xFinalTarget
, const Reference< lang::XMultiServiceFactory >& xShapeFactory
diff --git a/chart2/source/view/inc/VCoordinateSystem.hxx b/chart2/source/view/inc/VCoordinateSystem.hxx
index f94beba..1420c9c 100644
--- a/chart2/source/view/inc/VCoordinateSystem.hxx
+++ b/chart2/source/view/inc/VCoordinateSystem.hxx
@@ -51,8 +51,6 @@ public:
static VCoordinateSystem* createCoordinateSystem( const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XCoordinateSystem >& xCooSysModel );
- void reset();
-
virtual void initPlottingTargets(
const ::com::sun::star::uno::Reference<
::com::sun::star::drawing::XShapes >& xLogicTarget
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 439d1f6..2f8abb3 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -356,36 +356,35 @@ VCoordinateSystem* addCooSysToList( std::vector< VCoordinateSystem* >& rVCooSysL
, const uno::Reference< XCoordinateSystem >& xCooSys
, ChartModel& rChartModel )
{
- VCoordinateSystem* pVCooSys = findInCooSysList(rVCooSysList, xCooSys);
- if (!pVCooSys)
+ VCoordinateSystem* pVCooSys = findInCooSysList( rVCooSysList, xCooSys );
+ if( !pVCooSys )
{
- // First time being created. Add it to the list and generate CID for it.
- pVCooSys = VCoordinateSystem::createCoordinateSystem(xCooSys);
- rVCooSysList.push_back(pVCooSys);
-
- OUString aCooSysParticle =
- ObjectIdentifier::createParticleForCoordinateSystem(xCooSys, rChartModel);
+ pVCooSys = VCoordinateSystem::createCoordinateSystem(xCooSys );
+ if(pVCooSys)
+ {
+ OUString aCooSysParticle( ObjectIdentifier::createParticleForCoordinateSystem( xCooSys, rChartModel ) );
+ pVCooSys->setParticle(aCooSysParticle);
- pVCooSys->setParticle(aCooSysParticle);
- }
+ pVCooSys->setExplicitCategoriesProvider( new ExplicitCategoriesProvider(xCooSys, rChartModel) );
- if (pVCooSys)
- {
- pVCooSys->setExplicitCategoriesProvider(
- new ExplicitCategoriesProvider(xCooSys, rChartModel));
+ rVCooSysList.push_back( pVCooSys );
+ }
}
-
return pVCooSys;
}
void SeriesPlotterContainer::resetCoordinateSystems()
{
- std::vector<VCoordinateSystem*>::iterator it = m_rVCooSysList.begin(), itEnd = m_rVCooSysList.end();
- for (; it != itEnd; ++it)
+ //delete all coordinate systems
+ ::std::vector< VCoordinateSystem* > aVectorToDeleteObjects;
+ ::std::swap( aVectorToDeleteObjects, m_rVCooSysList );//#i109770#
+ ::std::vector< VCoordinateSystem* >::const_iterator aIter = aVectorToDeleteObjects.begin();
+ const ::std::vector< VCoordinateSystem* >::const_iterator aEnd = aVectorToDeleteObjects.end();
+ for( ; aIter != aEnd; ++aIter )
{
- VCoordinateSystem* p = *it;
- p->reset();
+ delete *aIter;
}
+ aVectorToDeleteObjects.clear();
}
void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
commit f9351e78438ca2a6bb3b12552849af1f9fe1cf72
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Oct 20 18:03:03 2014 -0400
Revert "Add macro to enable/disable axis shape caching."
This reverts commit 7d0df998f7eb9e3a6f65f3a44c26d94e1a1ced7e.
diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx
index 4308dbe..d155c45 100644
--- a/chart2/inc/ChartView.hxx
+++ b/chart2/inc/ChartView.hxx
@@ -211,6 +211,7 @@ private: //methods
, bool bUseHighContrast );
SdrPage* getSdrPage();
+ void impl_deleteCoordinateSystems();
void impl_notifyModeChangeListener( const OUString& rNewMode );
void impl_refreshAddIn();
diff --git a/chart2/source/inc/macros.hxx b/chart2/source/inc/macros.hxx
index 9e620f5..2319afe 100644
--- a/chart2/source/inc/macros.hxx
+++ b/chart2/source/inc/macros.hxx
@@ -31,7 +31,6 @@
ex.Message )
#define ENABLE_GL3D_BARCHART 1
-#define ENABLE_AXIS_SHAPE_CACHE 0
#endif
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx b/chart2/source/view/axes/VCoordinateSystem.cxx
index 25b7149..7b6e02b 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -94,7 +94,6 @@ VCoordinateSystem::~VCoordinateSystem()
{
}
-#if ENABLE_AXIS_SHAPE_CACHE
void VCoordinateSystem::reset()
{
m_xLogicTargetForGrids.clear();
@@ -121,7 +120,6 @@ void VCoordinateSystem::reset()
m_aAxisMap.clear(); // TODO : switch to reset() later.
}
-#endif
void VCoordinateSystem::initPlottingTargets( const Reference< drawing::XShapes >& xLogicTarget
, const Reference< drawing::XShapes >& xFinalTarget
diff --git a/chart2/source/view/inc/VCoordinateSystem.hxx b/chart2/source/view/inc/VCoordinateSystem.hxx
index 482fdc5..f94beba 100644
--- a/chart2/source/view/inc/VCoordinateSystem.hxx
+++ b/chart2/source/view/inc/VCoordinateSystem.hxx
@@ -24,7 +24,6 @@
#include "ThreeDHelper.hxx"
#include "ExplicitCategoriesProvider.hxx"
#include "chartview/ExplicitScaleValues.hxx"
-#include <macros.hxx>
#include <com/sun/star/chart2/XCoordinateSystem.hpp>
#include <com/sun/star/awt/Rectangle.hpp>
@@ -52,9 +51,7 @@ public:
static VCoordinateSystem* createCoordinateSystem( const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XCoordinateSystem >& xCooSysModel );
-#if ENABLE_AXIS_SHAPE_CACHE
void reset();
-#endif
virtual void initPlottingTargets(
const ::com::sun::star::uno::Reference<
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 9774a29..439d1f6 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -378,31 +378,14 @@ VCoordinateSystem* addCooSysToList( std::vector< VCoordinateSystem* >& rVCooSysL
return pVCooSys;
}
-void deleteCoordinateSystems( std::vector<VCoordinateSystem*>& rVCooSysList )
-{
- ::std::vector< VCoordinateSystem* > aVectorToDeleteObjects;
- aVectorToDeleteObjects.swap(rVCooSysList); //#i109770#
- ::std::vector< VCoordinateSystem* >::const_iterator aIter = aVectorToDeleteObjects.begin();
- const ::std::vector< VCoordinateSystem* >::const_iterator aEnd = aVectorToDeleteObjects.end();
- for( ; aIter != aEnd; ++aIter )
- {
- delete *aIter;
- }
- aVectorToDeleteObjects.clear();
-}
-
void SeriesPlotterContainer::resetCoordinateSystems()
{
-#if ENABLE_AXIS_SHAPE_CACHE
std::vector<VCoordinateSystem*>::iterator it = m_rVCooSysList.begin(), itEnd = m_rVCooSysList.end();
for (; it != itEnd; ++it)
{
VCoordinateSystem* p = *it;
p->reset();
}
-#else
- deleteCoordinateSystems(m_rVCooSysList);
-#endif
}
void SeriesPlotterContainer::initializeCooSysAndSeriesPlotter(
@@ -1201,7 +1184,21 @@ ChartView::~ChartView()
m_pDrawModelWrapper.reset();
}
m_xDrawPage = NULL;
- deleteCoordinateSystems(m_aVCooSysList);
+ impl_deleteCoordinateSystems();
+}
+
+void ChartView::impl_deleteCoordinateSystems()
+{
+ //delete all coordinate systems
+ ::std::vector< VCoordinateSystem* > aVectorToDeleteObjects;
+ ::std::swap( aVectorToDeleteObjects, m_aVCooSysList );//#i109770#
+ ::std::vector< VCoordinateSystem* >::const_iterator aIter = aVectorToDeleteObjects.begin();
+ const ::std::vector< VCoordinateSystem* >::const_iterator aEnd = aVectorToDeleteObjects.end();
+ for( ; aIter != aEnd; ++aIter )
+ {
+ delete *aIter;
+ }
+ aVectorToDeleteObjects.clear();
}
// datatransfer::XTransferable
commit 9641605ccdede68d1a5fcdcdd1da3b4519a84cde
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Oct 20 18:02:47 2014 -0400
Revert "More on caching axis label text shapes. Still disabled."
This reverts commit b83a034b6977bd83057e14f06eb044659f9ca82e.
diff --git a/chart2/source/view/axes/Tickmarks.cxx b/chart2/source/view/axes/Tickmarks.cxx
index 78fe7be..a8cd9a5 100644
--- a/chart2/source/view/axes/Tickmarks.cxx
+++ b/chart2/source/view/axes/Tickmarks.cxx
@@ -58,18 +58,11 @@ sal_Int32 TickInfo::getScreenDistanceBetweenTicks( const TickInfo& rOherTickInfo
return nRet;
}
-uno::Reference<drawing::XShape> TickIter::getTextShape()
+PureTickIter::PureTickIter( TickInfoArrayType& rTickInfoVector )
+ : m_rTickVector(rTickInfoVector)
+ , m_aTickIter(m_rTickVector.begin())
{
- return uno::Reference<drawing::XShape>();
}
-
-PureTickIter::PureTickIter( TickInfoArrayType& rTickInfoVector, const TickLabelArrayType* pLabels ) :
- m_rTickVector(rTickInfoVector),
- mpLabels(pLabels),
- m_aTickIter(m_rTickVector.begin())
-{
-}
-
PureTickIter::~PureTickIter()
{
}
@@ -91,22 +84,6 @@ TickInfo* PureTickIter::nextInfo()
return 0;
}
-uno::Reference<drawing::XShape> PureTickIter::getTextShape()
-{
- uno::Reference<drawing::XShape> xShape;
- if (!mpLabels)
- return xShape;
-
- if (m_aTickIter == m_rTickVector.end())
- return xShape;
-
- size_t nPos = std::distance(m_rTickVector.begin(), m_aTickIter);
- if (nPos >= mpLabels->size())
- return xShape;
-
- return (*mpLabels)[nPos];
-}
-
TickFactory::TickFactory(
const ExplicitScaleData& rScale, const ExplicitIncrementData& rIncrement )
: m_rScale( rScale )
diff --git a/chart2/source/view/axes/Tickmarks.hxx b/chart2/source/view/axes/Tickmarks.hxx
index 352ef2a..15e83eb 100644
--- a/chart2/source/view/axes/Tickmarks.hxx
+++ b/chart2/source/view/axes/Tickmarks.hxx
@@ -56,30 +56,24 @@ private:
typedef std::vector<TickInfo> TickInfoArrayType;
typedef std::vector<TickInfoArrayType> TickInfoArraysType;
-typedef std::vector<css::uno::Reference<css::drawing::XShape> > TickLabelArrayType;
-typedef std::vector<TickLabelArrayType> TickLabelArraysType;
-
class TickIter
{
public:
virtual ~TickIter() {}
virtual TickInfo* firstInfo() = 0;
virtual TickInfo* nextInfo() = 0;
- virtual css::uno::Reference<css::drawing::XShape> getTextShape();
};
class PureTickIter : public TickIter
{
public:
- PureTickIter( TickInfoArrayType& rTickInfoVector, const TickLabelArrayType* pLabels );
+ PureTickIter( TickInfoArrayType& rTickInfoVector );
virtual ~PureTickIter();
virtual TickInfo* firstInfo() SAL_OVERRIDE;
virtual TickInfo* nextInfo() SAL_OVERRIDE;
- virtual css::uno::Reference<css::drawing::XShape> getTextShape() SAL_OVERRIDE;
private:
TickInfoArrayType& m_rTickVector;
- const TickLabelArrayType* mpLabels;
TickInfoArrayType::iterator m_aTickIter;
};
diff --git a/chart2/source/view/axes/VAxisBase.cxx b/chart2/source/view/axes/VAxisBase.cxx
index 1524e77..c391382 100644
--- a/chart2/source/view/axes/VAxisBase.cxx
+++ b/chart2/source/view/axes/VAxisBase.cxx
@@ -49,31 +49,6 @@ VAxisBase::~VAxisBase()
{
}
-#if ENABLE_AXIS_SHAPE_CACHE
-void VAxisBase::reset()
-{
-}
-
-void VAxisBase::copyShapes( const VAxisBase& r )
-{
- TickLabelArraysType aNewTickLabels;
- TickInfoArraysType::const_iterator it = r.m_aAllTickInfos.begin(), itEnd = r.m_aAllTickInfos.end();
- for (; it != itEnd; ++it)
- {
- aNewTickLabels.push_back(TickLabelArrayType());
- TickLabelArrayType& rLabelArray = aNewTickLabels.back();
- TickInfoArrayType::const_iterator it2 = it->begin(), it2End = it->end();
- for (; it2 != it2End; ++it2)
- {
- const TickInfo& rOldTick = *it2;
- rLabelArray.push_back(rOldTick.xTextShape);
- }
- }
-
- m_aAllTickLabels.swap(aNewTickLabels);
-}
-#endif
-
void VAxisBase::initAxisLabelProperties( const ::com::sun::star::awt::Size& rFontReferenceSize
, const ::com::sun::star::awt::Rectangle& rMaximumSpaceForLabels )
{
diff --git a/chart2/source/view/axes/VAxisBase.hxx b/chart2/source/view/axes/VAxisBase.hxx
index 980c170..d43ef58 100644
--- a/chart2/source/view/axes/VAxisBase.hxx
+++ b/chart2/source/view/axes/VAxisBase.hxx
@@ -22,8 +22,6 @@
#include "VAxisOrGridBase.hxx"
#include "VAxisProperties.hxx"
#include "Tickmarks.hxx"
-#include <macros.hxx>
-
#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
namespace chart
@@ -41,11 +39,6 @@ public:
::com::sun::star::util::XNumberFormatsSupplier >& xNumberFormatsSupplier );
virtual ~VAxisBase();
-#if ENABLE_AXIS_SHAPE_CACHE
- void reset();
- void copyShapes( const VAxisBase& r );
-#endif
-
/**
* Return the number of dimensions the diagram has. 2 for x and y, and 3
* for x, y, and z.
@@ -104,8 +97,6 @@ protected: //member
* which has multi-level axis labels.
*/
TickInfoArraysType m_aAllTickInfos;
- TickLabelArraysType m_aAllTickLabels;
-
bool m_bReCreateAllTickInfos;
bool m_bRecordMaximumTextSize;
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 968770d..be13e64 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -218,7 +218,7 @@ private: //member
LabelIterator::LabelIterator( TickInfoArrayType& rTickInfoVector
, const AxisLabelStaggering eAxisLabelStaggering
, bool bInnerLine )
- : m_aPureTickIter(rTickInfoVector, NULL)
+ : m_aPureTickIter( rTickInfoVector )
, m_eAxisLabelStaggering(eAxisLabelStaggering)
, m_bInnerLine(bInnerLine)
{
@@ -375,25 +375,23 @@ bool lcl_hasWordBreak( const Reference< drawing::XShape >& rxShape )
class MaxLabelTickIter : public TickIter
{
public:
- MaxLabelTickIter( TickInfoArrayType& rTickInfoVector, sal_Int32 nLongestLabelIndex, const TickLabelArrayType* pLabels );
+ MaxLabelTickIter( TickInfoArrayType& rTickInfoVector
+ , sal_Int32 nLongestLabelIndex );
virtual ~MaxLabelTickIter();
virtual TickInfo* firstInfo() SAL_OVERRIDE;
virtual TickInfo* nextInfo() SAL_OVERRIDE;
- virtual uno::Reference<drawing::XShape> getTextShape() SAL_OVERRIDE;
private:
TickInfoArrayType& m_rTickInfoVector;
- const TickLabelArrayType* mpTickLabels;
::std::vector< sal_Int32 > m_aValidIndices;
- size_t m_nCurrentIndex;
+ sal_Int32 m_nCurrentIndex;
};
-MaxLabelTickIter::MaxLabelTickIter(
- TickInfoArrayType& rTickInfoVector, sal_Int32 nLongestLabelIndex, const TickLabelArrayType* pLabels ) :
- m_rTickInfoVector(rTickInfoVector),
- mpTickLabels(pLabels),
- m_nCurrentIndex(0)
+MaxLabelTickIter::MaxLabelTickIter( TickInfoArrayType& rTickInfoVector
+ , sal_Int32 nLongestLabelIndex )
+ : m_rTickInfoVector(rTickInfoVector)
+ , m_nCurrentIndex(0)
{
sal_Int32 nMaxIndex = m_rTickInfoVector.size()-1;
if( nLongestLabelIndex<0 || nLongestLabelIndex>=nMaxIndex-1 )
@@ -417,7 +415,7 @@ MaxLabelTickIter::~MaxLabelTickIter()
TickInfo* MaxLabelTickIter::firstInfo()
{
m_nCurrentIndex = 0;
- if (m_nCurrentIndex < m_aValidIndices.size())
+ if( m_nCurrentIndex < static_cast<sal_Int32>(m_aValidIndices.size()) )
return &m_rTickInfoVector[m_aValidIndices[m_nCurrentIndex]];
return 0;
}
@@ -425,23 +423,11 @@ TickInfo* MaxLabelTickIter::firstInfo()
TickInfo* MaxLabelTickIter::nextInfo()
{
m_nCurrentIndex++;
- if (m_nCurrentIndex < m_aValidIndices.size())
+ if( m_nCurrentIndex>=0 && m_nCurrentIndex<static_cast<sal_Int32>(m_aValidIndices.size()) )
return &m_rTickInfoVector[m_aValidIndices[m_nCurrentIndex]];
return 0;
}
-uno::Reference<drawing::XShape> MaxLabelTickIter::getTextShape()
-{
- uno::Reference<drawing::XShape> xShape;
- if (!mpTickLabels)
- return xShape;
-
- if (m_nCurrentIndex >= mpTickLabels->size())
- return xShape;
-
- return (*mpTickLabels)[m_nCurrentIndex];
-}
-
bool VCartesianAxis::isBreakOfLabelsAllowed( const AxisLabelProperties& rAxisLabelProperties
, bool bIsHorizontalAxis )
{
@@ -580,19 +566,14 @@ void VCartesianAxis::createAllTickInfos( TickInfoArraysType& rAllTickInfos )
VAxisBase::createAllTickInfos(rAllTickInfos);
}
-TickIter* VCartesianAxis::createLabelTickIterator( size_t nTextLevel )
+TickIter* VCartesianAxis::createLabelTickIterator( sal_Int32 nTextLevel )
{
- if (nTextLevel >= m_aAllTickInfos.size())
- return NULL;
-
- const TickLabelArrayType* pLabels = NULL;
- if (nTextLevel < m_aAllTickLabels.size())
- pLabels = &m_aAllTickLabels[nTextLevel];
-
- return new PureTickIter(m_aAllTickInfos[nTextLevel], pLabels);
+ if( nTextLevel>=0 && nTextLevel < static_cast< sal_Int32 >(m_aAllTickInfos.size()) )
+ return new PureTickIter( m_aAllTickInfos[nTextLevel] );
+ return NULL;
}
-TickIter* VCartesianAxis::createMaximumLabelTickIterator( size_t nTextLevel )
+TickIter* VCartesianAxis::createMaximumLabelTickIterator( sal_Int32 nTextLevel )
{
if( isComplexCategoryAxis() || isDateAxis() )
{
@@ -605,8 +586,7 @@ TickIter* VCartesianAxis::createMaximumLabelTickIterator( size_t nTextLevel )
if( !m_aAllTickInfos.empty() )
{
sal_Int32 nLongestLabelIndex = m_bUseTextLabels ? this->getIndexOfLongestLabel( m_aTextLabels ) : 0;
- const TickLabelArrayType* pLabels = m_aAllTickLabels.empty() ? NULL : &m_aAllTickLabels[0];
- return new MaxLabelTickIter( m_aAllTickInfos[0], nLongestLabelIndex, pLabels );
+ return new MaxLabelTickIter( m_aAllTickInfos[0], nLongestLabelIndex );
}
}
}
@@ -759,21 +739,10 @@ bool VCartesianAxis::createTextShapes(
//create single label
if(!pTickInfo->xTextShape.is())
- {
- uno::Reference<drawing::XShape> xCached = rTickIter.getTextShape();
- if (xCached.is())
- {
- xTarget->add(xCached);
- pTickInfo->xTextShape = xCached;
- }
- else
- {
- pTickInfo->xTextShape = createSingleLabel(
- m_xShapeFactory, xTarget, aAnchorScreenPosition2D, aLabel,
- rAxisLabelProperties, m_aAxisProperties, aPropNames, aPropValues);
- }
- }
-
+ pTickInfo->xTextShape = createSingleLabel( m_xShapeFactory, xTarget
+ , aAnchorScreenPosition2D, aLabel
+ , rAxisLabelProperties, m_aAxisProperties
+ , aPropNames, aPropValues );
if(!pTickInfo->xTextShape.is())
continue;
@@ -1312,7 +1281,7 @@ void VCartesianAxis::hideIdenticalScreenValues( TickInfoArraysType& rTickInfos )
sal_Int32 nCount = rTickInfos.size();
for( sal_Int32 nN=0; nN<nCount; nN++ )
{
- PureTickIter aTickIter(rTickInfos[nN], NULL);
+ PureTickIter aTickIter( rTickInfos[nN] );
lcl_hideIdenticalScreenValues( aTickIter );
}
}
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx b/chart2/source/view/axes/VCartesianAxis.hxx
index ad94f76..e3f26a8 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -47,8 +47,8 @@ public:
virtual void createAllTickInfos( TickInfoArraysType& rAllTickInfos ) SAL_OVERRIDE;
void createAllTickInfosFromComplexCategories( TickInfoArraysType& rAllTickInfos, bool bShiftedPosition );
- TickIter* createLabelTickIterator( size_t nTextLevel );
- TickIter* createMaximumLabelTickIterator( size_t nTextLevel );
+ TickIter* createLabelTickIterator( sal_Int32 nTextLevel );
+ TickIter* createMaximumLabelTickIterator( sal_Int32 nTextLevel );
sal_Int32 getTextLevelCount() const;
virtual TickFactory* createTickFactory() SAL_OVERRIDE;
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
index 15730a7..79005bf 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
@@ -99,8 +99,7 @@ void VCartesianCoordinateSystem::createVAxisList(
, const awt::Rectangle& rMaximumSpaceForLabels
)
{
- tVAxisMap aOldAxisMap;
- aOldAxisMap.swap(m_aAxisMap);
+ m_aAxisMap.clear();
sal_Int32 nDimensionCount = m_xCooSysModel->getDimension();
bool bSwapXAndY = this->getPropertySwapXAndYAxis();
@@ -149,16 +148,6 @@ void VCartesianCoordinateSystem::createVAxisList(
::boost::shared_ptr< VAxisBase > apVAxis( new VCartesianAxis(aAxisProperties,xNumberFormatsSupplier,nDimensionIndex,nDimensionCount) );
tFullAxisIndex aFullAxisIndex( nDimensionIndex, nAxisIndex );
-
-#if ENABLE_AXIS_SHAPE_CACHE
- tVAxisMap::iterator it = aOldAxisMap.find(aFullAxisIndex);
- if (it != aOldAxisMap.end())
- {
- // Copy the text objects over.
- apVAxis->copyShapes(*it->second);
- }
-#endif
-
m_aAxisMap[aFullAxisIndex] = apVAxis;
apVAxis->set3DWallPositions( m_eLeftWallPos, m_eBackWallPos, m_eBottomPos );
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx b/chart2/source/view/axes/VCoordinateSystem.cxx
index 690dde3..25b7149 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -119,12 +119,7 @@ void VCoordinateSystem::reset()
m_apExplicitCategoriesProvider.reset();
- tVAxisMap::iterator it = m_aAxisMap.begin(), itEnd = m_aAxisMap.end();
- for (; it != itEnd; ++it)
- {
- VAxisBase& rAxis = *it->second;
- rAxis.reset();
- }
+ m_aAxisMap.clear(); // TODO : switch to reset() later.
}
#endif
commit d6dfabc3ed6622d90562a7d4d150e41a95fc8370
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Oct 20 18:02:33 2014 -0400
Revert "Adjust text properties after adding a cached text object..."
This reverts commit 859cb431f1208142529af8f7166347d84e4f4e75.
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx b/chart2/source/view/axes/VCartesianAxis.cxx
index 6914ee0..968770d 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -103,39 +103,6 @@ Reference< drawing::XShape > createSingleLabel(
return xShape2DText;
}
-void adjustSingleLabel(
- const Reference<drawing::XShape>& xShape, const awt::Point& rAnchorPos,
- const AxisLabelProperties& rAxisLabelProps, const AxisProperties& rAxisProps,
- const tNameSequence& rPropNames, const tAnySequence& rPropValues )
-{
- if (!xShape.is())
- return;
-
- uno::Reference<beans::XPropertySet> xProp(xShape, uno::UNO_QUERY);
- if (xProp.is())
- {
- //set properties
- PropertyMapper::setMultiProperties(rPropNames, rPropValues, xProp);
-
- //set position matrix
- //the matrix needs to be set at the end behind autogrow and such position influencing properties
- double fRotationAnglePi = rAxisLabelProps.fRotationAngleDegree * (F_PI / -180.0);
- uno::Any aATransformation = AbstractShapeFactory::makeTransformation(rAnchorPos, fRotationAnglePi);
- try
- {
- xProp->setPropertyValue("Transformation", aATransformation);
- }
- catch( const uno::Exception& e )
- {
- ASSERT_EXCEPTION( e );
- }
- }
-
- LabelPositionHelper::correctPositionForRotation(
- xShape, rAxisProps.maLabelAlignment.meAlignment,
- rAxisLabelProps.fRotationAngleDegree, rAxisProps.m_bComplexCategories);
-}
-
bool lcl_doesShapeOverlapWithTickmark( const Reference< drawing::XShape >& xShape
, double fRotationAngleDegree
, const basegfx::B2DVector& rTickScreenPosition
@@ -796,12 +763,8 @@ bool VCartesianAxis::createTextShapes(
uno::Reference<drawing::XShape> xCached = rTickIter.getTextShape();
if (xCached.is())
{
- pTickInfo->xTextShape = xCached;
xTarget->add(xCached);
- adjustSingleLabel(
- pTickInfo->xTextShape, aAnchorScreenPosition2D,
- rAxisLabelProperties, m_aAxisProperties,
- aPropNames, aPropValues);
+ pTickInfo->xTextShape = xCached;
}
else
{
More information about the Libreoffice-commits
mailing list