summaryrefslogtreecommitdiff
path: root/chart2/source
diff options
context:
space:
mode:
authorVladimir Glazunov <vg@openoffice.org>2010-02-12 17:46:41 +0100
committerVladimir Glazunov <vg@openoffice.org>2010-02-12 17:46:41 +0100
commit4ed2a42bf1d412f75371ed890305d4429c11b20d (patch)
tree9bfa23966a1d3a3b7755253d1e0f82444312e69b /chart2/source
parentd17a054c8c441ffb075ef157e4818e8b190038a8 (diff)
parenteff8202ca2f213d18ad360ebd3929e139697f513 (diff)
CWS-TOOLING: integrate CWS kohei03
Diffstat (limited to 'chart2/source')
-rw-r--r--chart2/source/view/charttypes/PieChart.cxx29
-rw-r--r--chart2/source/view/charttypes/PieChart.hxx4
2 files changed, 21 insertions, 12 deletions
diff --git a/chart2/source/view/charttypes/PieChart.cxx b/chart2/source/view/charttypes/PieChart.cxx
index 608adb49290b..41299bd8f9bc 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -129,6 +129,8 @@ PieChart::PieChart( const uno::Reference<XChartType>& xChartTypeModel
, m_pPosHelper( new PiePositionHelper( NormalAxis_Z, (m_nDimension==3)?0.0:90.0 ) )
, m_bUseRings(false)
{
+ ::rtl::math::setNan(&m_fMaxOffset);
+
PlotterBase::m_pPosHelper = m_pPosHelper;
VSeriesPlotter::m_pMainPosHelper = m_pPosHelper;
m_pPosHelper->m_fRadiusOffset = 0.0;
@@ -248,27 +250,31 @@ double PieChart::getMinimumX()
{
return 0.5;
}
-double PieChart::getMaxOffset() const
+double PieChart::getMaxOffset()
{
- double fRet = 0.0;
+ if (!::rtl::math::isNan(m_fMaxOffset))
+ // Value already cached. Use it.
+ return m_fMaxOffset;
+
+ m_fMaxOffset = 0.0;
if( m_aZSlots.size()<=0 )
- return fRet;
+ return m_fMaxOffset;
if( m_aZSlots[0].size()<=0 )
- return fRet;
+ return m_fMaxOffset;
const ::std::vector< VDataSeries* >& rSeriesList( m_aZSlots[0][0].m_aSeriesVector );
if( rSeriesList.size()<=0 )
- return fRet;
+ return m_fMaxOffset;
VDataSeries* pSeries = rSeriesList[0];
uno::Reference< beans::XPropertySet > xSeriesProp( pSeries->getPropertiesOfSeries() );
if( !xSeriesProp.is() )
- return fRet;
+ return m_fMaxOffset;
double fExplodePercentage=0.0;
xSeriesProp->getPropertyValue( C2U( "Offset" )) >>= fExplodePercentage;
- if(fExplodePercentage>fRet)
- fRet=fExplodePercentage;
+ if(fExplodePercentage>m_fMaxOffset)
+ m_fMaxOffset=fExplodePercentage;
uno::Sequence< sal_Int32 > aAttributedDataPointIndexList;
if( xSeriesProp->getPropertyValue( C2U( "AttributedDataPoints" ) ) >>= aAttributedDataPointIndexList )
@@ -280,12 +286,12 @@ double PieChart::getMaxOffset() const
{
fExplodePercentage=0.0;
xPointProp->getPropertyValue( C2U( "Offset" )) >>= fExplodePercentage;
- if(fExplodePercentage>fRet)
- fRet=fExplodePercentage;
+ if(fExplodePercentage>m_fMaxOffset)
+ m_fMaxOffset=fExplodePercentage;
}
}
}
- return fRet;
+ return m_fMaxOffset;
}
double PieChart::getMaximumX()
{
@@ -357,6 +363,7 @@ void PieChart::createShapes()
nExplodeableSlot = m_aZSlots[0].size()-1;
m_aLabelInfoList.clear();
+ ::rtl::math::setNan(&m_fMaxOffset);
//=============================================================================
for( double fSlotX=0; aXSlotIter != aXSlotEnd && (m_bUseRings||fSlotX<0.5 ); aXSlotIter++, fSlotX+=1.0 )
diff --git a/chart2/source/view/charttypes/PieChart.hxx b/chart2/source/view/charttypes/PieChart.hxx
index e65cfdcc5626..7249ef24bbaa 100644
--- a/chart2/source/view/charttypes/PieChart.hxx
+++ b/chart2/source/view/charttypes/PieChart.hxx
@@ -105,7 +105,7 @@ private: //methods
, double fLogicZ, double fDepth, double fExplodePercentage
, tPropertyNameValueMap* pOverWritePropertiesMap );
- double getMaxOffset() const;
+ double getMaxOffset();
bool detectLabelOverlapsAndMove(const ::com::sun::star::awt::Size& rPageSize);//returns true when there might be more to do
void resetLabelPositionsToPreviousState();
struct PieLabelInfo;
@@ -137,6 +137,8 @@ private: //member
};
::std::vector< PieLabelInfo > m_aLabelInfoList;
+
+ double m_fMaxOffset; /// cached max offset value (init'ed to NaN)
};
//.............................................................................
} //namespace chart