From 580f0f79f5075cba4ee51620462593a801015d7d Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Fri, 23 Aug 2019 17:58:46 +0200 Subject: [PATCH] [apps/graph/values_controller] Define numberOfColumnsForRecord --- apps/graph/values/values_controller.cpp | 22 ++++++++++------------ apps/graph/values/values_controller.h | 1 + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/apps/graph/values/values_controller.cpp b/apps/graph/values/values_controller.cpp index 43fc47156..9a2a34ad4 100644 --- a/apps/graph/values/values_controller.cpp +++ b/apps/graph/values/values_controller.cpp @@ -69,23 +69,21 @@ Ion::Storage::Record ValuesController::recordAtColumn(int i, bool * isDerivative int index = 1; for (int k = 0; k < functionStore()->numberOfActiveFunctions(); k++) { Ion::Storage::Record record = functionStore()->activeRecordAtIndex(k); - ExpiringPointer f = functionStore()->modelForRecord(record); - if (i == index) { + if (index <= i && i < index + numberOfColumnsForRecord(record)) { + *isDerivative = i != index; return record; } - index++; - if (f->displayDerivative()) { - if (i == index) { - *isDerivative = true; - return record; - } - index++; - } + index += numberOfColumnsForRecord(record); } assert(false); return nullptr; } +int ValuesController::numberOfColumnsForRecord(Ion::Storage::Record record) const { + ExpiringPointer f = functionStore()->modelForRecord(record); + return 1 + f->displayDerivative(); +} + int ValuesController::maxNumberOfCells() { return k_maxNumberOfCells; } @@ -130,8 +128,8 @@ double ValuesController::evaluationOfAbscissaAtColumn(double abscissa, int colum void ValuesController::updateNumberOfColumns() { int result = 1; for (int i = 0; i < functionStore()->numberOfActiveFunctions(); i++) { - ExpiringPointer f = functionStore()->modelForRecord(functionStore()->activeRecordAtIndex(i)); - result += 1 + f->displayDerivative(); + Ion::Storage::Record record = functionStore()->activeRecordAtIndex(i); + result += numberOfColumnsForRecord(record); } m_numberOfColumns = result; } diff --git a/apps/graph/values/values_controller.h b/apps/graph/values/values_controller.h index 1173957b5..2a8f9ee5e 100644 --- a/apps/graph/values/values_controller.h +++ b/apps/graph/values/values_controller.h @@ -22,6 +22,7 @@ private: constexpr static int k_maxNumberOfFunctions = 5; Ion::Storage::Record recordAtColumn(int i) override; Ion::Storage::Record recordAtColumn(int i, bool * isDerivative); + int numberOfColumnsForRecord(Ion::Storage::Record record) const; int maxNumberOfCells() override; int maxNumberOfFunctions() override; double evaluationOfAbscissaAtColumn(double abscissa, int columnIndex) override;