From 5205e71e5af7c8dc7b5256dee20ec0b5041132cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 6 Dec 2016 11:05:06 +0100 Subject: [PATCH] [apps/probability] Create a class law curve view inheriting from curve view Change-Id: I3a6aacd3532c4eb9303b9970765e08f546850439 --- apps/probability/Makefile | 1 + apps/probability/law_curve_view.cpp | 33 +++++++++++++++++++++++++++++ apps/probability/law_curve_view.h | 25 ++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 apps/probability/law_curve_view.cpp create mode 100644 apps/probability/law_curve_view.h diff --git a/apps/probability/Makefile b/apps/probability/Makefile index 21188f7b6..ca0544659 100644 --- a/apps/probability/Makefile +++ b/apps/probability/Makefile @@ -4,6 +4,7 @@ app_objs += $(addprefix apps/probability/,\ evaluate_context.o\ law.o\ law_controller.o\ + law_curve_view.o\ parameters_controller.o\ ) diff --git a/apps/probability/law_curve_view.cpp b/apps/probability/law_curve_view.cpp new file mode 100644 index 000000000..eed4a6a0b --- /dev/null +++ b/apps/probability/law_curve_view.cpp @@ -0,0 +1,33 @@ +#include "law_curve_view.h" +#include + +namespace Probability { + +LawCurveView::LawCurveView(Law * law) : + CurveView(), + m_law(law) +{ +} + +void LawCurveView::drawRect(KDContext * ctx, KDRect rect) const { + ctx->fillRect(bounds(), KDColorWhite); + drawAxes(Axis::Horizontal, ctx, rect); + drawExpression(m_law->expression(), KDColorRed, ctx, rect); +} + +float LawCurveView::min(Axis axis) const { + assert(axis == Axis::Horizontal || axis == Axis::Vertical); + return (axis == Axis::Horizontal ? m_law->xMin() : m_law->yMin()); +} + +float LawCurveView::max(Axis axis) const { + assert(axis == Axis::Horizontal || axis == Axis::Vertical); + return (axis == Axis::Horizontal ? m_law->xMax() : m_law->yMax()); +} + +float LawCurveView::evaluateExpressionAtAbscissa(Expression * expression, float abscissa) const { + m_law->evaluateContext()->setOverridenValueForSymbolT(abscissa); + return expression->approximate(*(m_law->evaluateContext())); +} + +} diff --git a/apps/probability/law_curve_view.h b/apps/probability/law_curve_view.h new file mode 100644 index 000000000..031515f7f --- /dev/null +++ b/apps/probability/law_curve_view.h @@ -0,0 +1,25 @@ +#ifndef PROBABILITY_LAW_CURVE_VIEW_H +#define PROBABILITY_LAW_CURVE_VIEW_H + +#include "../curve_view.h" +#include "law.h" +#include +#include + +namespace Probability { + +class LawCurveView : public CurveView { +public: + LawCurveView(Law * law); + void drawRect(KDContext * ctx, KDRect rect) const override; +protected: + float min(Axis axis) const override; + float max(Axis axis) const override; +private: + float evaluateExpressionAtAbscissa(Expression * expression, float abscissa) const override; + Law * m_law; +}; + +} + +#endif