From 9a26dc4d441242069bceffdf563fd2deae56a2fa Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Tue, 6 Aug 2019 19:36:12 -0700 Subject: [PATCH 1/7] Zooming buttons implemented --- .../GraphingCalculator.xaml | 85 +++++++++++++++++++ .../GraphingCalculator.xaml.cpp | 22 +++++ .../GraphingCalculator.xaml.h | 12 +++ src/GraphControl/Control/Grapher.cpp | 14 +++ src/GraphControl/Control/Grapher.h | 4 +- 5 files changed, 135 insertions(+), 2 deletions(-) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index bd0ec8d50..1f7678f49 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -215,6 +215,91 @@ + + + + + + + diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp index b7c37cf5b..250356f60 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp @@ -118,3 +118,25 @@ void GraphingCalculator::TextBoxGotFocus(TextBox^ sender, RoutedEventArgs^ e) { sender->SelectAll(); } + +void GraphingCalculator::ZoomInButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +{ + constexpr double scrollDamper = 0.15; + double scale = 1.0 + (abs(zoomButtonDelta) / WHEEL_DELTA) * scrollDamper; + scale = 1.0 / scale; + + GraphingControl->ScaleRange(0, 0, scale); +} + +void GraphingCalculator::ZoomOutButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +{ + constexpr double scrollDamper = 0.15; + double scale = 1.0 + (abs(zoomButtonDelta) / WHEEL_DELTA) * scrollDamper; + + GraphingControl->ScaleRange(0, 0, scale); +} + +void GraphingCalculator::ZoomResetButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +{ + GraphingControl->ResetGrid(); +} diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index 8faef8601..b94881153 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -19,6 +19,14 @@ namespace CalculatorApp void set(CalculatorApp::ViewModel::GraphingCalculatorViewModel^ vm); } + static property double zoomButtonDelta + { + double get() + { + return 120; + } + } + private: void GraphingCalculator_DataContextChanged(Windows::UI::Xaml::FrameworkElement^ sender, Windows::UI::Xaml::DataContextChangedEventArgs^ args); @@ -29,6 +37,10 @@ namespace CalculatorApp void TextBoxKeyDown(Windows::UI::Xaml::Controls::TextBox^ textbox, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e); void SubmitTextbox(Windows::UI::Xaml::Controls::TextBox^ textbox); + void ZoomInButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void ZoomOutButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void ZoomResetButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + double validateDouble(Platform::String^ value, double defaultValue); CalculatorApp::ViewModel::GraphingCalculatorViewModel^ m_viewModel; diff --git a/src/GraphControl/Control/Grapher.cpp b/src/GraphControl/Control/Grapher.cpp index 643b504d3..bf6bda75f 100644 --- a/src/GraphControl/Control/Grapher.cpp +++ b/src/GraphControl/Control/Grapher.cpp @@ -105,6 +105,20 @@ namespace GraphControl } } + void Grapher::ResetGrid() + { + if (m_graph != nullptr && m_renderMain != nullptr) + { + if (auto renderer = m_graph->GetRenderer()) + { + if (SUCCEEDED(renderer->ResetRange())) + { + 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 899799584..adb2a3149 100644 --- a/src/GraphControl/Control/Grapher.h +++ b/src/GraphControl/Control/Grapher.h @@ -127,6 +127,8 @@ namespace GraphControl event Windows::Foundation::EventHandler^>^ VariablesUpdated; void SetVariable(Platform::String^ variableName, double newValue); + void ScaleRange(double centerX, double centerY, double scale); + void ResetGrid(); protected: #pragma region Control Overrides @@ -172,8 +174,6 @@ namespace GraphControl void OnItemsAdded(int index, int count); void OnItemsRemoved(int index, int count); - void ScaleRange(double centerX, double centerY, double scale); - private: DX::RenderMain^ m_renderMain = nullptr; From 7ccf8811ac16b9a906cdb1d6bd68f54267cc99bc Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Wed, 7 Aug 2019 18:45:05 -0700 Subject: [PATCH 2/7] Zoom holding down works --- src/Calculator/Resources/en-US/Resources.resw | 4 + .../GraphingCalculator.xaml | 142 ++++++++---------- .../GraphingCalculator.xaml.h | 2 +- 3 files changed, 71 insertions(+), 77 deletions(-) diff --git a/src/Calculator/Resources/en-US/Resources.resw b/src/Calculator/Resources/en-US/Resources.resw index e7d703c59..a55f4152d 100644 --- a/src/Calculator/Resources/en-US/Resources.resw +++ b/src/Calculator/Resources/en-US/Resources.resw @@ -3435,6 +3435,10 @@ ^ {Locked}This is the character that should trigger this button. Note that it is a character and not a key, so it does not come from the Windows::System::VirtualKey enum. + + Home + {Locked}This is the shortcut for the zoom reset button. + Add Equation Placeholder text for the equation input button diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 1f7678f49..2fc7fda5d 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -12,6 +12,28 @@ mc:Ignorable="d"> + + @@ -30,6 +52,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + RequestedTheme="Light" + Background="White"> @@ -216,88 +263,31 @@ - + + - + + diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index b94881153..82afdc88c 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -23,7 +23,7 @@ namespace CalculatorApp { double get() { - return 120; + return 50; } } From a0217c694f8ce011ff26c99e8124edea25a73f6a Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Thu, 8 Aug 2019 13:10:51 -0700 Subject: [PATCH 3/7] Zoom feature completed --- src/Calculator/Resources/en-US/Resources.resw | 8 ++++++++ .../Views/GraphingCalculator/GraphingCalculator.xaml | 6 +++--- .../Views/GraphingCalculator/GraphingCalculator.xaml.cpp | 6 +++--- .../Views/GraphingCalculator/GraphingCalculator.xaml.h | 9 ++++++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Calculator/Resources/en-US/Resources.resw b/src/Calculator/Resources/en-US/Resources.resw index a55f4152d..8db9f85e0 100644 --- a/src/Calculator/Resources/en-US/Resources.resw +++ b/src/Calculator/Resources/en-US/Resources.resw @@ -3439,6 +3439,14 @@ Home {Locked}This is the shortcut for the zoom reset button. + + Add + {Locked}This is the shortcut for the zoom in button. + + + Subtract + {Locked}This is the shortcut for the zoom out button. + Add Equation Placeholder text for the equation input button diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 2fc7fda5d..8e414a18e 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -268,7 +268,7 @@ FontFamily="{StaticResource SymbolThemeFontFamily}" Content="" RequestedTheme="Light" - Click="ZoomOutButtonClick" + Command="{x:Bind ZoomOutButtonPressed, Mode=OneTime}" Style="{ThemeResource ZoomRepeatButtonStyle}"> @@ -277,7 +277,7 @@ FontFamily="{StaticResource SymbolThemeFontFamily}" Content="" RequestedTheme="Light" - Click="ZoomInButtonClick" + Command="{x:Bind ZoomInButtonPressed, Mode=OneTime}" Style="{ThemeResource ZoomRepeatButtonStyle}"> @@ -286,7 +286,7 @@ FontFamily="{StaticResource SymbolThemeFontFamily}" Content="" RequestedTheme="Light" - Click="ZoomResetButtonClick" + Command="{x:Bind ZoomResetButtonPressed, Mode=OneTime}" Style="{ThemeResource ZoomButtonStyle}"> diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp index 250356f60..46716d115 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cpp @@ -119,7 +119,7 @@ void GraphingCalculator::TextBoxGotFocus(TextBox^ sender, RoutedEventArgs^ e) sender->SelectAll(); } -void GraphingCalculator::ZoomInButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +void GraphingCalculator::ZoomInButtonClick(Object ^ /* parameter */) { constexpr double scrollDamper = 0.15; double scale = 1.0 + (abs(zoomButtonDelta) / WHEEL_DELTA) * scrollDamper; @@ -128,7 +128,7 @@ void GraphingCalculator::ZoomInButtonClick(Platform::Object ^ sender, Windows::U GraphingControl->ScaleRange(0, 0, scale); } -void GraphingCalculator::ZoomOutButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +void GraphingCalculator::ZoomOutButtonClick(Object ^ /* parameter */) { constexpr double scrollDamper = 0.15; double scale = 1.0 + (abs(zoomButtonDelta) / WHEEL_DELTA) * scrollDamper; @@ -136,7 +136,7 @@ void GraphingCalculator::ZoomOutButtonClick(Platform::Object ^ sender, Windows:: GraphingControl->ScaleRange(0, 0, scale); } -void GraphingCalculator::ZoomResetButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +void GraphingCalculator::ZoomResetButtonClick(Object ^ /* parameter */) { GraphingControl->ResetGrid(); } diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h index 82afdc88c..2641ff7f5 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h @@ -12,6 +12,9 @@ namespace CalculatorApp GraphingCalculator(); OBSERVABLE_OBJECT(); + COMMAND_FOR_METHOD(ZoomOutButtonPressed, GraphingCalculator::ZoomOutButtonClick); + COMMAND_FOR_METHOD(ZoomInButtonPressed, GraphingCalculator::ZoomInButtonClick); + COMMAND_FOR_METHOD(ZoomResetButtonPressed, GraphingCalculator::ZoomResetButtonClick); property CalculatorApp::ViewModel::GraphingCalculatorViewModel^ ViewModel { @@ -37,9 +40,9 @@ namespace CalculatorApp void TextBoxKeyDown(Windows::UI::Xaml::Controls::TextBox^ textbox, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e); void SubmitTextbox(Windows::UI::Xaml::Controls::TextBox^ textbox); - void ZoomInButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); - void ZoomOutButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); - void ZoomResetButtonClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void ZoomInButtonClick(Object ^ parameter); + void ZoomOutButtonClick(Object ^ parameter); + void ZoomResetButtonClick(Object ^ parameter); double validateDouble(Platform::String^ value, double defaultValue); From 1f7b5a2aa5ee68f5bcb804b1cdfb94e571769b8a Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Thu, 8 Aug 2019 13:19:06 -0700 Subject: [PATCH 4/7] Gets rid of space --- src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 8e414a18e..8eb27728a 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -286,7 +286,7 @@ FontFamily="{StaticResource SymbolThemeFontFamily}" Content="" RequestedTheme="Light" - Command="{x:Bind ZoomResetButtonPressed, Mode=OneTime}" + Command="{x:Bind ZoomResetButtonPressed, Mode=OneTime}" Style="{ThemeResource ZoomButtonStyle}"> From 30ed765cee769045ee972f4c071357733e78ae27 Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Mon, 12 Aug 2019 18:24:22 -0700 Subject: [PATCH 5/7] Graph settings controls UI started --- .../GraphingCalculator.xaml | 76 +++++++++++++++++-- 1 file changed, 69 insertions(+), 7 deletions(-) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 8eb27728a..545fa2675 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -19,8 +19,6 @@ - - @@ -31,8 +29,13 @@ - - + + @@ -263,13 +266,68 @@ + + + Style="{ThemeResource ZoomRepeatButtonStyle}" + VerticalAlignment="Bottom" + HorizontalAlignment="Right"> + Style="{ThemeResource ZoomRepeatButtonStyle}" + VerticalAlignment="Bottom" + HorizontalAlignment="Right"> From c98687cc9872866570a8f0288904b0ac98c373d6 Mon Sep 17 00:00:00 2001 From: "Wei (Waley) Zhang" Date: Mon, 12 Aug 2019 18:44:34 -0700 Subject: [PATCH 6/7] More graph settings controls UI --- .../GraphingCalculator.xaml | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml index 545fa2675..af31181cc 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml @@ -312,7 +312,38 @@ - + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + - +