diff options
author | Vladimir Glazunov <vg@openoffice.org> | 2010-02-12 17:46:41 +0100 |
---|---|---|
committer | Vladimir Glazunov <vg@openoffice.org> | 2010-02-12 17:46:41 +0100 |
commit | 4ed2a42bf1d412f75371ed890305d4429c11b20d (patch) | |
tree | 9bfa23966a1d3a3b7755253d1e0f82444312e69b /chart2/source | |
parent | d17a054c8c441ffb075ef157e4818e8b190038a8 (diff) | |
parent | eff8202ca2f213d18ad360ebd3929e139697f513 (diff) |
CWS-TOOLING: integrate CWS kohei03
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/view/charttypes/PieChart.cxx | 29 | ||||
-rw-r--r-- | chart2/source/view/charttypes/PieChart.hxx | 4 |
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 |