From 42481284714e858eebd7840ab47de176dddcdbfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 23 Sep 2019 13:53:49 +0200 Subject: [PATCH] [apps/graph] ContinuousFunctionStore::displaysNonCartesianFunctions --- apps/graph/continuous_function_store.cpp | 8 ++++++++ apps/graph/continuous_function_store.h | 1 + apps/graph/graph/graph_controller.cpp | 18 +++++++----------- apps/graph/graph/graph_controller.h | 3 +-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/apps/graph/continuous_function_store.cpp b/apps/graph/continuous_function_store.cpp index 4631215b5..906b1d067 100644 --- a/apps/graph/continuous_function_store.cpp +++ b/apps/graph/continuous_function_store.cpp @@ -9,6 +9,14 @@ using namespace Shared; namespace Graph { +bool ContinuousFunctionStore::displaysNonCartesianFunctions(int * nbActiveFunctions) const { + int nbOfActiveFunctions = numberOfActiveFunctions(); + if (nbActiveFunctions != nullptr) { + *nbActiveFunctions = nbOfActiveFunctions; + } + return numberOfActiveFunctionsOfType(ContinuousFunction::PlotType::Cartesian) != nbOfActiveFunctions; +} + Ion::Storage::Record::ErrorStatus ContinuousFunctionStore::addEmptyModel() { Ion::Storage::Record::ErrorStatus error; ContinuousFunction newModel = ContinuousFunction::NewModel(&error); diff --git a/apps/graph/continuous_function_store.h b/apps/graph/continuous_function_store.h index 095571ad9..fce291049 100644 --- a/apps/graph/continuous_function_store.h +++ b/apps/graph/continuous_function_store.h @@ -8,6 +8,7 @@ namespace Graph { class ContinuousFunctionStore : public Shared::FunctionStore { public: + bool displaysNonCartesianFunctions(int * nbActiveFunctions = nullptr) const; int numberOfActiveFunctionsOfType(Shared::ContinuousFunction::PlotType plotType) const { return numberOfModelsSatisfyingTest(&isFunctionActiveOfType, &plotType); } diff --git a/apps/graph/graph/graph_controller.cpp b/apps/graph/graph/graph_controller.cpp index f10f9fb7e..6dec7b2cd 100644 --- a/apps/graph/graph/graph_controller.cpp +++ b/apps/graph/graph/graph_controller.cpp @@ -34,6 +34,10 @@ void GraphController::viewWillAppear() { selectFunctionWithCursor(indexFunctionSelectedByCursor()); } +bool GraphController::defautRangeIsNormalized() const { + return functionStore()->displaysNonCartesianFunctions(); +} + void GraphController::interestingFunctionRange(ExpiringPointer f, float tMin, float tMax, float step, float * xm, float * xM, float * ym, float * yM) const { Poincare::Context * context = textFieldDelegateApp()->localContext(); const int balancedBound = std::floor((tMax-tMin)/2/step); @@ -58,7 +62,7 @@ void GraphController::interestingRanges(float * xm, float * xM, float * ym, floa float resultyMax = -FLT_MAX; assert(functionStore()->numberOfActiveFunctions() > 0); int functionsCount = 0; - if (displaysNonCartesianFunctions(&functionsCount)) { + if (functionStore()->displaysNonCartesianFunctions(&functionsCount)) { for (int i = 0; i < functionsCount; i++) { ExpiringPointer f = functionStore()->modelForRecord(functionStore()->activeRecordAtIndex(i)); if (f->plotType() == ContinuousFunction::PlotType::Cartesian) { @@ -149,7 +153,7 @@ bool GraphController::moveCursorHorizontally(int direction) { int GraphController::nextCurveIndexVertically(bool goingUp, int currentSelectedCurve, Poincare::Context * context) const { int nbOfActiveFunctions = 0; - if (!displaysNonCartesianFunctions(&nbOfActiveFunctions)) { + if (!functionStore()->displaysNonCartesianFunctions(&nbOfActiveFunctions)) { return FunctionGraphController::nextCurveIndexVertically(goingUp, currentSelectedCurve, context); } int nextActiveFunctionIndex = currentSelectedCurve + (goingUp ? -1 : 1); @@ -164,16 +168,8 @@ double GraphController::defaultCursorT(Ion::Storage::Record record) { return function->tMin(); } -bool GraphController::displaysNonCartesianFunctions(int * nbActiveFunctions) const { - int nbOfActiveFunctions = functionStore()->numberOfActiveFunctions(); - if (nbActiveFunctions != nullptr) { - *nbActiveFunctions = nbOfActiveFunctions; - } - return functionStore()->numberOfActiveFunctionsOfType(ContinuousFunction::PlotType::Cartesian) != nbOfActiveFunctions; -} - bool GraphController::shouldSetDefaultOnModelChange() const { - return displaysNonCartesianFunctions(); + return functionStore()->displaysNonCartesianFunctions(); } } diff --git a/apps/graph/graph/graph_controller.h b/apps/graph/graph/graph_controller.h index ec0b36467..44231243f 100644 --- a/apps/graph/graph/graph_controller.h +++ b/apps/graph/graph/graph_controller.h @@ -34,8 +34,7 @@ private: GraphView * functionGraphView() override { return &m_view; } CurveParameterController * curveParameterController() override { return &m_curveParameterController; } ContinuousFunctionStore * functionStore() const override { return static_cast(Shared::FunctionGraphController::functionStore()); } - bool displaysNonCartesianFunctions(int * nbActiveFunctions = nullptr) const; - bool defautRangeIsNormalized() const override { return displaysNonCartesianFunctions(); } + bool defautRangeIsNormalized() const override; void interestingFunctionRange(Shared::ExpiringPointer f, float tMin, float tMax, float step, float * xm, float * xM, float * ym, float * yM) const; bool shouldSetDefaultOnModelChange() const override;