[Libreoffice-commits] core.git: chart2/source

Tomaž Vajngerl quikee at gmail.com
Mon Dec 9 10:57:07 PST 2013


 chart2/source/view/charttypes/VSeriesPlotter.cxx |   37 +++++++++++------------
 1 file changed, 18 insertions(+), 19 deletions(-)

New commits:
commit f464bb21c8e8483200feb159cfdf9e5bc29aa27f
Author: Tomaž Vajngerl <quikee at gmail.com>
Date:   Mon Dec 9 19:53:20 2013 +0100

    fdo#72137 Allocate enough points in MovingAverageRegression calc.
    
    Change-Id: I9ae058cad678cdb86709a4e40e3d4bd47900d386

diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 1e6c96d..7432277 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;


More information about the Libreoffice-commits mailing list