From 67964ca38391797273e2f16ca87e6ece23d41338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 9 Sep 2019 10:52:58 +0200 Subject: [PATCH] [apps/curve_view] Fix the drawing Scenario: exponential distribution, lambda = 1.23E-38 --- apps/shared/curve_view.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/shared/curve_view.cpp b/apps/shared/curve_view.cpp index f3921a645..d92cd4a2f 100644 --- a/apps/shared/curve_view.cpp +++ b/apps/shared/curve_view.cpp @@ -538,10 +538,12 @@ void CurveView::drawCurve(KDContext * ctx, KDRect rect, float tStart, float tEnd } void CurveView::drawCartesianCurve(KDContext * ctx, KDRect rect, float xMin, float xMax, EvaluateXYForParameter xyEvaluation, void * model, void * context, KDColor color, bool colorUnderCurve, float colorLowerBound, float colorUpperBound) const { - float tStart = maxFloat(xMin, pixelToFloat(Axis::Horizontal, rect.left() - k_externRectMargin)); - float tEnd = minFloat(xMax, pixelToFloat(Axis::Horizontal, rect.right() + k_externRectMargin)); - assert(!std::isinf(tStart) && !std::isnan(tStart) && !std::isinf(tEnd) && !std::isnan(tEnd) ); - if (tStart > tEnd) { + float rectLeft = pixelToFloat(Axis::Horizontal, rect.left() - k_externRectMargin); + float rectRight = pixelToFloat(Axis::Horizontal, rect.right() + k_externRectMargin); + float tStart = std::isnan(rectLeft) ? xMin : maxFloat(xMin, rectLeft); + float tEnd = std::isnan(rectRight) ? xMax : minFloat(xMax, rectRight); + assert(!std::isnan(tStart) && !std::isnan(tEnd)); + if (std::isinf(tStart) || std::isinf(tEnd) || tStart > tEnd) { return; } float tStep = pixelWidth();