From 8d8acf96ede0ab557da42e22a803ca82c39ee15b Mon Sep 17 00:00:00 2001 From: koldo Date: Sun, 20 Sep 2015 08:05:37 +0000 Subject: [PATCH] ScatterDraw: Improvements in case of Null series git-svn-id: svn://ultimatepp.org/upp/trunk@8950 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ScatterDraw/ScatterDraw.cpp | 32 +++++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/uppsrc/ScatterDraw/ScatterDraw.cpp b/uppsrc/ScatterDraw/ScatterDraw.cpp index 4384858d3..9baa6c85e 100644 --- a/uppsrc/ScatterDraw/ScatterDraw.cpp +++ b/uppsrc/ScatterDraw/ScatterDraw.cpp @@ -381,53 +381,61 @@ void ScatterDraw::FitToData(bool vertical, double factor) { double ScatterDraw::GetXMin() { double minx = -DOUBLE_NULL; - //double maxx = DOUBLE_NULL; for (int j = 0; j < series.GetCount(); j++) { if (series[j].opacity == 0 || series[j].PointsData()->IsExplicit()) continue; - minx = min(minx, series[j].PointsData()->MinX()); - //maxx = max(maxx, series[j].PointsData()->MaxX()); + double smin = series[j].PointsData()->MinX(); + if (!IsNull(smin) && smin < minx) + minx = smin; } + if (minx == -DOUBLE_NULL) + return Null; return minx; } double ScatterDraw::GetXMax() { - //double minx = -DOUBLE_NULL; double maxx = DOUBLE_NULL; for (int j = 0; j < series.GetCount(); j++) { if (series[j].opacity == 0 || series[j].PointsData()->IsExplicit()) continue; - //minx = min(minx, series[j].PointsData()->MinX()); - maxx = max(maxx, series[j].PointsData()->MaxX()); + double smax = series[j].PointsData()->MaxX(); + if (!IsNull(smax) && smax > maxx) + maxx = smax; } + if (maxx == DOUBLE_NULL) + return Null; return maxx; } double ScatterDraw::GetYMin() { double miny = -DOUBLE_NULL; - //double maxy = DOUBLE_NULL; for (int j = 0; j < series.GetCount(); j++) { if (series[j].opacity == 0 || series[j].PointsData()->IsExplicit()) continue; - miny = min(miny, series[j].PointsData()->MinY()); - //maxy = max(maxy, series[j].PointsData()->MaxY()); + double smin = series[j].PointsData()->MinY(); + if (!IsNull(smin) && smin < miny) + miny = smin; } + if (miny == -DOUBLE_NULL) + return Null; return miny; } double ScatterDraw::GetYMax() { - //double miny = -DOUBLE_NULL; double maxy = DOUBLE_NULL; for (int j = 0; j < series.GetCount(); j++) { if (series[j].opacity == 0 || series[j].PointsData()->IsExplicit()) continue; - //miny = min(miny, series[j].PointsData()->MinY()); - maxy = max(maxy, series[j].PointsData()->MaxY()); + double smax = series[j].PointsData()->MaxY(); + if (!IsNull(smax) && smax > maxy) + maxy = smax; } + if (maxy == DOUBLE_NULL) + return Null; return maxy; }