Update Analysis after variables change (#1056)

* Updated Analyze Equation to set the current value of the variables before analysis

* Updated SetGraphArgs to take in a graph parameter and use it in AnalyzeEquation()
This commit is contained in:
Stephanie Anderl 2020-02-28 09:34:16 -08:00 committed by GitHub
parent 915e0a8220
commit d7e7f46c99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 9 deletions

View File

@ -199,6 +199,8 @@ namespace GraphControl
{
if (auto graph = GetGraph(equation))
{
SetGraphArgs(graph);
if (auto analyzer = graph->GetAnalyzer())
{
vector<Equation ^> equationVector;
@ -300,7 +302,7 @@ namespace GraphControl
if (initResult != nullopt)
{
UpdateGraphOptions(m_graph->GetOptions(), validEqs);
SetGraphArgs();
SetGraphArgs(m_graph);
m_renderMain->Graph = m_graph;
@ -329,7 +331,7 @@ namespace GraphControl
if (initResult != nullopt)
{
UpdateGraphOptions(m_graph->GetOptions(), validEqs);
SetGraphArgs();
SetGraphArgs(m_graph);
m_renderMain->Graph = m_graph;
co_await m_renderMain->RunRenderPassAsync();
@ -366,15 +368,15 @@ namespace GraphControl
}
}
void Grapher::SetGraphArgs()
void Grapher::SetGraphArgs(shared_ptr<IGraph> graph)
{
if (m_graph != nullptr && m_renderMain != nullptr)
if (graph != nullptr && m_renderMain != nullptr)
{
critical_section::scoped_lock lock(m_renderMain->GetCriticalSection());
for (auto variable : Variables)
{
m_graph->SetArgValue(variable->Key->Data(), variable->Value);
graph->SetArgValue(variable->Key->Data(), variable->Value);
}
}
}
@ -443,7 +445,6 @@ namespace GraphControl
if (m_graph != nullptr && m_renderMain != nullptr)
{
auto workItemHandler = ref new WorkItemHandler([this, variableName, newValue](IAsyncAction ^ action) {
m_renderMain->GetCriticalSection().lock();
m_graph->SetArgValue(variableName->Data(), newValue);
@ -453,7 +454,6 @@ namespace GraphControl
});
ThreadPool::RunAsync(workItemHandler, WorkItemPriority::High, WorkItemOptions::None);
}
}

View File

@ -276,7 +276,7 @@ public
concurrency::task<void> TryPlotGraph(bool keepCurrentView, bool shouldRetry);
void UpdateGraphOptions(Graphing::IGraphingOptions& options, const std::vector<Equation ^>& validEqs);
std::vector<Equation ^> GetGraphableEquations();
void SetGraphArgs();
void SetGraphArgs(std::shared_ptr<Graphing::IGraph> graph);
std::shared_ptr<Graphing::IGraph> GetGraph(GraphControl::Equation ^ equation);
void UpdateVariables();