diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2014-03-07 16:53:52 -0600 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2014-03-07 20:33:55 -0600 |
commit | 7b4d53699cf93188aa768d92e94409f245995b26 (patch) | |
tree | 4c83108ec963b4347fc42ebe068807e245a2de09 /chart2 | |
parent | 57b89ea1c2ff07b53c3cc002e5ec9e52abd0c1bd (diff) |
coverity#704566 Unchecked dynamic cast
Change-Id: I13ecfc6cd816a1653a292d00de348ca7683783f1
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/view/charttypes/BarChart.cxx | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/chart2/source/view/charttypes/BarChart.cxx b/chart2/source/view/charttypes/BarChart.cxx index 7b0ff8289145..6e6521b7176d 100644 --- a/chart2/source/view/charttypes/BarChart.cxx +++ b/chart2/source/view/charttypes/BarChart.cxx @@ -86,23 +86,39 @@ drawing::Direction3D BarChart::getPreferredDiagramAspectRatio() const if( m_nDimension == 3 ) { aRet = drawing::Direction3D(1.0,-1.0,1.0); - BarPositionHelper* pPosHelper = dynamic_cast<BarPositionHelper*>(&( this->getPlottingPositionHelper( MAIN_AXIS_INDEX) ) ); - drawing::Direction3D aScale( pPosHelper->getScaledLogicWidth() ); - if(aScale.DirectionX!=0.0) + BarPositionHelper* pPosHelper = dynamic_cast<BarPositionHelper*>(&( this->getPlottingPositionHelper( MAIN_AXIS_INDEX) ) ); + assert(pPosHelper); + if(pPosHelper) { - double fXSlotCount = 1.0; - if(!m_aZSlots.empty()) - fXSlotCount = m_aZSlots.begin()->size(); - - aRet.DirectionZ = aScale.DirectionZ/(aScale.DirectionX + aScale.DirectionX*(fXSlotCount-1.0)*pPosHelper->getScaledSlotWidth()); + drawing::Direction3D aScale( pPosHelper->getScaledLogicWidth() ); + if(aScale.DirectionX!=0.0) + { + double fXSlotCount = 1.0; + if(!m_aZSlots.empty()) + { + fXSlotCount = m_aZSlots.begin()->size(); + } + aRet.DirectionZ = aScale.DirectionZ / + (aScale.DirectionX + aScale.DirectionX * (fXSlotCount-1.0) * pPosHelper->getScaledSlotWidth()); + } + else + { + return VSeriesPlotter::getPreferredDiagramAspectRatio(); + } } else + { return VSeriesPlotter::getPreferredDiagramAspectRatio(); + } + if(aRet.DirectionZ<0.05) + { aRet.DirectionZ=0.05; - if(aRet.DirectionZ>10) + } + else if(aRet.DirectionZ>10) + { aRet.DirectionZ=10; - + } if( m_pMainPosHelper && m_pMainPosHelper->isSwapXAndY() ) { double fTemp = aRet.DirectionX; |