From 48be600d89d84b5c1daf1fe941db63d22a66a72a Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Wed, 4 Sep 2019 14:43:33 +0200 Subject: [PATCH] [apps/graph] App holds an Interval for each plot type --- apps/graph/app.cpp | 4 +++- apps/graph/app.h | 10 +++++++--- .../values/interval_parameter_selector_controller.cpp | 2 +- apps/graph/values/values_controller.cpp | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/graph/app.cpp b/apps/graph/app.cpp index e11699966..30cfe80ea 100644 --- a/apps/graph/app.cpp +++ b/apps/graph/app.cpp @@ -33,7 +33,9 @@ App * App::Snapshot::unpack(Container * container) { void App::Snapshot::reset() { Shared::FunctionApp::Snapshot::reset(); - m_interval.reset(); + for (int i = 0; i < Shared::CartesianFunction::k_numberOfPlotTypes; i++) { + m_interval[i].reset(); + } } App::Descriptor * App::Snapshot::descriptor() { diff --git a/apps/graph/app.h b/apps/graph/app.h index 9aabd80e9..7d8bcd854 100644 --- a/apps/graph/app.h +++ b/apps/graph/app.h @@ -27,12 +27,14 @@ public: Descriptor * descriptor() override; CartesianFunctionStore * functionStore() override; Shared::InteractiveCurveViewRange * graphRange(); - Shared::Interval * interval() { return &m_interval; } + Shared::Interval * intervalForType(Shared::CartesianFunction::PlotType plotType) { + return m_interval + static_cast(plotType); + } private: void tidy() override; CartesianFunctionStore m_functionStore; Shared::InteractiveCurveViewRange m_graphRange; - Shared::Interval m_interval; + Shared::Interval m_interval[Shared::CartesianFunction::k_numberOfPlotTypes]; }; static App * app() { return static_cast(Container::activeApp()); @@ -43,7 +45,9 @@ public: CodePoint XNT() override; NestedMenuController * variableBoxForInputEventHandler(InputEventHandler * textInput) override; CartesianFunctionStore * functionStore() override { return static_cast(Shared::FunctionApp::functionStore()); } - Shared::Interval * interval() { return snapshot()->interval(); } + Shared::Interval * intervalForType(Shared::CartesianFunction::PlotType plotType) { + return snapshot()->intervalForType(plotType); + } ValuesController * valuesController() override { return &m_valuesController; } diff --git a/apps/graph/values/interval_parameter_selector_controller.cpp b/apps/graph/values/interval_parameter_selector_controller.cpp index b67d0c5ab..a43828a2f 100644 --- a/apps/graph/values/interval_parameter_selector_controller.cpp +++ b/apps/graph/values/interval_parameter_selector_controller.cpp @@ -29,7 +29,7 @@ bool IntervalParameterSelectorController::handleEvent(Ion::Events::Event event) Shared::IntervalParameterController * controller = App::app()->valuesController()->intervalParameterController(); Shared::CartesianFunction::PlotType plotType = plotTypeAtRow(selectedRow()); controller->setTitle(messageForType(plotType)); - controller->setInterval(App::app()->interval()); + controller->setInterval(App::app()->intervalForType(plotType)); stack->push(controller); return true; } diff --git a/apps/graph/values/values_controller.cpp b/apps/graph/values/values_controller.cpp index b1b95b951..e5caaf444 100644 --- a/apps/graph/values/values_controller.cpp +++ b/apps/graph/values/values_controller.cpp @@ -108,7 +108,7 @@ int ValuesController::numberOfColumnsForRecord(Ion::Storage::Record record) cons } Shared::Interval * ValuesController::intervalAtColumn(int columnIndex) { - return App::app()->interval(); + return App::app()->intervalForType(plotTypeAtColumn(&columnIndex)); } CartesianFunction::PlotType ValuesController::plotTypeAtColumn(int * i) const {