From fbee2d81e4ab70b50cf6ffceb4ddd34a3818c35d Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Tue, 20 Aug 2019 14:00:01 +0200 Subject: [PATCH] [apps/*/curve_view] Use drawCartesianCurve specifically for drawing Cartesian curves --- apps/graph/graph/graph_view.cpp | 4 ++-- apps/probability/distribution_curve_view.cpp | 4 ++-- apps/regression/graph_view.cpp | 2 +- apps/shared/curve_view.cpp | 4 ++++ apps/shared/curve_view.h | 1 + 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/graph/graph/graph_view.cpp b/apps/graph/graph/graph_view.cpp index 75066e2b1..2ac8f4c48 100644 --- a/apps/graph/graph/graph_view.cpp +++ b/apps/graph/graph/graph_view.cpp @@ -28,7 +28,7 @@ void GraphView::drawRect(KDContext * ctx, KDRect rect) const { ExpiringPointer f = m_functionStore->modelForRecord(record);; /* Draw function */ - drawCurve(ctx, rect, [](float t, void * model, void * context) { + drawCartesianCurve(ctx, rect, [](float t, void * model, void * context) { CartesianFunction * f = (CartesianFunction *)model; Poincare::Context * c = (Poincare::Context *)context; return f->evaluateAtAbscissa(t, c); @@ -39,7 +39,7 @@ void GraphView::drawRect(KDContext * ctx, KDRect rect) const { float tangentParameter[2]; tangentParameter[0] = f->approximateDerivative(m_curveViewCursor->x(), context()); tangentParameter[1] = -tangentParameter[0]*m_curveViewCursor->x()+f->evaluateAtAbscissa(m_curveViewCursor->x(), context()); - drawCurve(ctx, rect, [](float t, void * model, void * context) { + drawCartesianCurve(ctx, rect, [](float t, void * model, void * context) { float * tangent = (float *)model; return tangent[0]*t+tangent[1]; }, tangentParameter, nullptr, Palette::GreyVeryDark); diff --git a/apps/probability/distribution_curve_view.cpp b/apps/probability/distribution_curve_view.cpp index 521432e6b..c1184fefb 100644 --- a/apps/probability/distribution_curve_view.cpp +++ b/apps/probability/distribution_curve_view.cpp @@ -25,7 +25,7 @@ void DistributionCurveView::drawRect(KDContext * ctx, KDRect rect) const { return; } if (m_distribution->isContinuous()) { - drawCurve(ctx, rect, EvaluateAtAbscissa, m_distribution, nullptr, Palette::YellowDark, true, lowerBound, upperBound); + drawCartesianCurve(ctx, rect, EvaluateAtAbscissa, m_distribution, nullptr, Palette::YellowDark, true, lowerBound, upperBound); } else { drawHistogram(ctx, rect, EvaluateAtAbscissa, m_distribution, nullptr, 0, 1, false, Palette::GreyMiddle, Palette::YellowDark, lowerBound, upperBound+0.5f); } @@ -51,7 +51,7 @@ void DistributionCurveView::drawStandardNormal(KDContext * ctx, KDRect rect, flo // Draw a centered reduced normal curve NormalDistribution n; constCastedThis->setCurveViewRange(&n); - drawCurve(ctx, rect, EvaluateAtAbscissa, &n, nullptr, Palette::YellowDark, true, colorLowerBound, colorUpperBound); + drawCartesianCurve(ctx, rect, EvaluateAtAbscissa, &n, nullptr, Palette::YellowDark, true, colorLowerBound, colorUpperBound); // Put back the previous curve view range constCastedThis->setCurveViewRange(previousRange); diff --git a/apps/regression/graph_view.cpp b/apps/regression/graph_view.cpp index 9018154bf..3fc7c71d2 100644 --- a/apps/regression/graph_view.cpp +++ b/apps/regression/graph_view.cpp @@ -26,7 +26,7 @@ void GraphView::drawRect(KDContext * ctx, KDRect rect) const { if (!m_store->seriesIsEmpty(series)) { KDColor color = Palette::DataColor[series]; Model * seriesModel = m_store->modelForSeries(series); - drawCurve(ctx, rect, [](float abscissa, void * model, void * context) { + drawCartesianCurve(ctx, rect, [](float abscissa, void * model, void * context) { Model * regressionModel = static_cast(model); double * regressionCoefficients = static_cast(context); return (float)regressionModel->evaluate(regressionCoefficients, abscissa); diff --git a/apps/shared/curve_view.cpp b/apps/shared/curve_view.cpp index 16c093c6e..08d1a5f26 100644 --- a/apps/shared/curve_view.cpp +++ b/apps/shared/curve_view.cpp @@ -527,6 +527,10 @@ void CurveView::drawCurve(KDContext * ctx, KDRect rect, EvaluateModelWithParamet } } +void CurveView::drawCartesianCurve(KDContext * ctx, KDRect rect, EvaluateModelWithParameter yEvaluation, void * model, void * context, KDColor color, bool colorUnderCurve, float colorLowerBound, float colorUpperBound) const { + drawCurve(ctx, rect, yEvaluation, model, context, color, colorUnderCurve, colorLowerBound, colorUpperBound); +} + void CurveView::drawHistogram(KDContext * ctx, KDRect rect, EvaluateModelWithParameter evaluation, void * model, void * context, float firstBarAbscissa, float barWidth, bool fillBar, KDColor defaultColor, KDColor highlightColor, float highlightLowerBound, float highlightUpperBound) const { float rectMin = pixelToFloat(Axis::Horizontal, rect.left()); diff --git a/apps/shared/curve_view.h b/apps/shared/curve_view.h index b739a3bd1..73563eb3d 100644 --- a/apps/shared/curve_view.h +++ b/apps/shared/curve_view.h @@ -63,6 +63,7 @@ protected: void drawAxes(KDContext * ctx, KDRect rect) const; void drawAxis(KDContext * ctx, KDRect rect, Axis axis) const; void drawCurve(KDContext * ctx, KDRect rect, EvaluateModelWithParameter evaluation, void * model, void * context, KDColor color, bool colorUnderCurve = false, float colorLowerBound = 0.0f, float colorUpperBound = 0.0f) const; + void drawCartesianCurve(KDContext * ctx, KDRect rect, EvaluateModelWithParameter yEvaluation, void * model, void * context, KDColor color, bool colorUnderCurve = false, float colorLowerBound = 0.0f, float colorUpperBound = 0.0f) const; void drawHistogram(KDContext * ctx, KDRect rect, EvaluateModelWithParameter evaluation, void * model, void * context, float firstBarAbscissa, float barWidth, bool fillBar, KDColor defaultColor, KDColor highlightColor, float highlightLowerBound = INFINITY, float highlightUpperBound = -INFINITY) const; void computeLabels(Axis axis);