From f464bb21c8e8483200feb159cfdf9e5bc29aa27f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= Date: Mon, 9 Dec 2013 19:53:20 +0100 Subject: [PATCH] fdo#72137 Allocate enough points in MovingAverageRegression calc. Change-Id: I9ae058cad678cdb86709a4e40e3d4bd47900d386 --- .../source/view/charttypes/VSeriesPlotter.cxx | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx index 1e6c96dd4b75..74322777a79d 100644 --- a/chart2/source/view/charttypes/VSeriesPlotter.cxx +++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx @@ -997,20 +997,15 @@ void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries& rVDataSeries, xProperties->getPropertyValue( "InterceptValue") >>= aInterceptValue; } - double fMinX; - double fMaxX; - double fChartMinX = m_pPosHelper->getLogicMinX(); double fChartMaxX = m_pPosHelper->getLogicMaxX(); + double fMinX = fChartMinX; + double fMaxX = fChartMaxX; + double fPointScale = 1.0; - if( bAverageLine ) - { - fMinX = fChartMinX; - fMaxX = fChartMaxX; - } - else + if( !bAverageLine ) { rVDataSeries.getMinMaxXValue(fMinX, fMaxX); fMaxX += aExtrapolateForward; @@ -1018,6 +1013,7 @@ void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries& rVDataSeries, fPointScale = (fMaxX - fMinX) / (fChartMaxX - fChartMinX); } + xCalculator->setRegressionProperties(aDegree, aForceIntercept, aInterceptValue, aPeriod); xCalculator->recalculateRegression( rVDataSeries.getAllX(), rVDataSeries.getAllY() ); sal_Int32 nPointCount = 100 * fPointScale; @@ -1025,15 +1021,6 @@ void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries& rVDataSeries, if ( nPointCount < 2 ) nPointCount = 2; - drawing::PolyPolygonShape3D aRegressionPoly; - aRegressionPoly.SequenceX.realloc(1); - aRegressionPoly.SequenceY.realloc(1); - aRegressionPoly.SequenceZ.realloc(1); - aRegressionPoly.SequenceX[0].realloc(nPointCount); - aRegressionPoly.SequenceY[0].realloc(nPointCount); - aRegressionPoly.SequenceZ[0].realloc(nPointCount); - sal_Int32 nRealPointCount=0; - std::vector< ExplicitScaleData > aScales( m_pPosHelper->getScales()); uno::Reference< chart2::XScaling > xScalingX; uno::Reference< chart2::XScaling > xScalingY; @@ -1048,7 +1035,19 @@ void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries& rVDataSeries, fMinX, fMaxX, nPointCount, xScalingX, xScalingY, bMaySkipPoints )); - for(sal_Int32 nP=0; nP