summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorTomaž Vajngerl <quikee@gmail.com>2013-12-09 19:53:20 +0100
committerTomaž Vajngerl <quikee@gmail.com>2013-12-09 19:56:25 +0100
commitf464bb21c8e8483200feb159cfdf9e5bc29aa27f (patch)
tree58fb78cbdb7e3099eaaccd5a9d6b33109513c175 /chart2
parentb4b623c10ca4dbb94cdd7fd8189b40e50fbf9b6e (diff)
fdo#72137 Allocate enough points in MovingAverageRegression calc.
Change-Id: I9ae058cad678cdb86709a4e40e3d4bd47900d386
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx37
1 files 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<aCalculatedPoints.getLength(); nP++)
+ nPointCount = aCalculatedPoints.getLength();
+
+ 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;
+
+ for(sal_Int32 nP = 0; nP < aCalculatedPoints.getLength(); ++nP)
{
double fLogicX = aCalculatedPoints[nP].X;
double fLogicY = aCalculatedPoints[nP].Y;