- Expose MoveRangeByRatio from the UI

This commit is contained in:
Daniel Belcher 2019-04-01 00:51:43 -07:00
commit fdc65a7045
5 changed files with 55 additions and 7 deletions

View file

@ -57,6 +57,23 @@
<local:EquationInputArea Grid.Row="0" Equations="{x:Bind ViewModel.Equations}"/>
<StackPanel Grid.Row="1" Orientation="Vertical">
<TextBlock Text="Move Range By Ratio"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBox x:Name="RatioXTextBox"
Grid.Column="0"
KeyDown="MoveRangeByRatioTextBox_KeyDown"
PlaceholderText="RatioX"/>
<TextBox x:Name="RatioYTextBox"
Grid.Column="1"
KeyDown="MoveRangeByRatioTextBox_KeyDown"
PlaceholderText="RatioY"/>
</Grid>
<TextBlock Text="Scale Range"/>
<Grid>
<Grid.ColumnDefinitions>

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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<SwapChainPanel^>(GetTemplateChild(StringReference(s_templateKey_SwapChainPanel)));

View file

@ -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