From fdc65a7045e955ee5dfb2553e6aa6d1497afd2ee Mon Sep 17 00:00:00 2001 From: Daniel Belcher Date: Mon, 1 Apr 2019 00:51:43 -0700 Subject: [PATCH] - Expose MoveRangeByRatio from the UI --- .../GraphingCalculator.xaml | 17 +++++++++++ .../GraphingCalculator.xaml.cpp | 29 ++++++++++++++----- .../GraphingCalculator.xaml.h | 1 + src/GraphControl/Control/Grapher.cpp | 14 +++++++++ src/GraphControl/Control/Grapher.h | 1 + 5 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index d09b95d6..bd2ff427 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -57,6 +57,23 @@ + + + + + + + + + + + diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp index 171a4459..6a8ee7e5 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp @@ -24,7 +24,15 @@ using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Media; using namespace Windows::UI::Xaml::Media::Imaging; -constexpr auto sc_ViewModelPropertyName = L"ViewModel"; +namespace +{ + constexpr auto sc_ViewModelPropertyName = L"ViewModel"; + + double valFromTB(TextBox^ tb) + { + return stod(tb->Text->Data()); + }; +} GraphingCalculator::GraphingCalculator() { @@ -56,12 +64,6 @@ void GraphingCalculator::ScaleRangeTextBox_KeyDown(Object^ sender, KeyRoutedEven { if (e->Key == VirtualKey::Enter) { - auto valFromTB = [](TextBox^ tb) - { - wstring text = tb->Text->Data(); - return stod(text); - }; - double centerX = valFromTB(CenterXTextBox); double centerY = valFromTB(CenterYTextBox); double scale = valFromTB(ScaleTextBox); @@ -71,3 +73,16 @@ void GraphingCalculator::ScaleRangeTextBox_KeyDown(Object^ sender, KeyRoutedEven e->Handled = true; } } + +void GraphingCalculator::MoveRangeByRatioTextBox_KeyDown(Object^ sender, KeyRoutedEventArgs^ e) +{ + if (e->Key == VirtualKey::Enter) + { + double ratioX = valFromTB(RatioXTextBox); + double ratioY = valFromTB(RatioYTextBox); + + Graph->MoveRangeByRatio(ratioX, ratioY); + + e->Handled = true; + } +} diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index 1a0ad5e6..4774c0d1 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -23,6 +23,7 @@ namespace CalculatorApp void GraphingCalculator_DataContextChanged(Windows::UI::Xaml::FrameworkElement^ sender, Windows::UI::Xaml::DataContextChangedEventArgs^ args); void ScaleRangeTextBox_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e); + void MoveRangeByRatioTextBox_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e); private: CalculatorApp::ViewModel::GraphingCalculatorViewModel^ m_viewModel; diff --git a/src/GraphControl/Control/Grapher.cpp b/src/GraphControl/Control/Grapher.cpp index 535d20f7..86809619 100644 --- a/src/GraphControl/Control/Grapher.cpp +++ b/src/GraphControl/Control/Grapher.cpp @@ -80,6 +80,20 @@ namespace GraphControl } } + void Grapher::MoveRangeByRatio(double ratioX, double ratioY) + { + if (m_graph) + { + if (auto renderer = m_graph->GetRenderer()) + { + if (SUCCEEDED(renderer->MoveRangeByRatio(ratioX, ratioY))) + { + m_renderMain->RunRenderPass(); + } + } + } + } + void Grapher::OnApplyTemplate() { auto swapChainPanel = dynamic_cast(GetTemplateChild(StringReference(s_templateKey_SwapChainPanel))); diff --git a/src/GraphControl/Control/Grapher.h b/src/GraphControl/Control/Grapher.h index b29ec74b..d6b57d1c 100644 --- a/src/GraphControl/Control/Grapher.h +++ b/src/GraphControl/Control/Grapher.h @@ -101,6 +101,7 @@ namespace GraphControl #pragma endregion void ScaleRange(double centerX, double centerY, double scale); + void MoveRangeByRatio(double ratioX, double ratioY); protected: #pragma region Control Overrides