OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / WpfDisplay / Views / QualitySettingsView.xaml

85 lines · xaml ref:
<UserControl x:Class="WpfDisplay.Views.QualitySettingsView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfDisplay.Views" 
             xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:conv="clr-namespace:WpfDisplay.Converters"
             xmlns:vm="clr-namespace:WpfDisplay.ViewModels"
             xmlns:toolkit="http://schemas.xceed.com/wpf/xaml/toolkit"
             mc:Ignorable="d" 
             x:Name="qualitySettingsView"
             d:DesignHeight="600" d:DesignWidth="300"
             d:DataContext="{d:DesignInstance Type=vm:QualitySettingsViewModel, IsDesignTimeCreatable=False}">
    <StackPanel>
        <ListBox
            HorizontalAlignment="Center"
            Style="{StaticResource MaterialDesignToolToggleListBox}" Margin="4"
            SelectedIndex="0">
            <ListBoxItem>🧭 Exploration</ListBoxItem>
            <ListBoxItem IsSelected="{Binding IsFinalRenderingMode}">📸 Final</ListBoxItem>
        </ListBox>
        <!--"Preview" settings-->
        <StackPanel Visibility="{Binding IsFinalRenderingMode, Converter={StaticResource invertBooleanToVisibilityConverter}}">
            <TextBlock HorizontalAlignment="Center" Margin="4,16">
                Preview resolution: <Run Text="{Binding PreviewResolutionText, Mode=OneWay}" />
            </TextBlock>
        </StackPanel>
        <!--"Final" settings-->
        <StackPanel Visibility="{Binding IsFinalRenderingMode, Converter={StaticResource betterBooleanToVisibilityConverter}}" Margin="0,8">
            <Grid HorizontalAlignment="Center">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition Width="auto"/>
                </Grid.ColumnDefinitions>
                <toolkit:IntegerUpDown 
                        Value="{Binding ImageWidth, UpdateSourceTrigger=PropertyChanged }"
                        Minimum="1" Increment="100"
                        ToolTip="Image width"
                        Grid.Column="0" MinWidth="70" Margin="4" UpdateValueOnEnterKey="True"/>
                <ToggleButton
                        IsChecked="{Binding IsResolutionLinked}" 
                        Width="20" Height="20" FontSize="12" Foreground="Gray"
                        Style="{StaticResource MaterialDesignFlatToggleButton}"
                        ToolTip="Lock aspect ratio"
                        Grid.Column="1" Margin="4">🔗</ToggleButton>
                <toolkit:IntegerUpDown 
                        Value="{Binding ImageHeight, UpdateSourceTrigger=PropertyChanged}"
                        Minimum="1" Increment="100"
                        ToolTip="Image height"
                        Grid.Column="2" MinWidth="70" Margin="4" UpdateValueOnEnterKey="True"/>
                <Menu Grid.Column="3" Height="22">
                    <MenuItem  ItemsSource="{Binding ResolutionPresets}" 
                               Header="⋮" ToolTip="Resolution presets"
                               HorizontalAlignment="Right" Padding="8 4" FontSize="12" Height="22">
                        <MenuItem.ItemContainerStyle>
                            <Style TargetType="MenuItem" BasedOn="{StaticResource MaterialDesignMenuItem}">
                                <Setter Property="Header" Value="{Binding Key}"/>
                                <Setter Property="Command" Value="{Binding DataContext.ApplyResolutionPresetCommand, ElementName=qualitySettingsView}"/>
                                <Setter Property="CommandParameter" Value="{Binding Value}"/>
                            </Style>
                        </MenuItem.ItemContainerStyle>
                    </MenuItem>
                </Menu>
            </Grid>
            <local:ValueSlider Value="{Binding Renderer.MaxFilterRadius}" SliderSettings="{Binding MaxFilterRadiusSlider}" Label="{Binding MaxFilterRadiusLabel}" Margin="4"/>
        </StackPanel>
        <Separator Style="{StaticResource MaterialDesignSeparator}"/>
        <local:ValueSlider Value="{Binding Ifs.TargetIterationLevel}" SliderSettings="{Binding TargetIterationLevelSlider}" Margin="4"/>
        <Separator Style="{StaticResource MaterialDesignSeparator}"/>
        <StackPanel Margin="4">
            <CheckBox IsChecked="{Binding EnableDE}" ToolTip="Using density estimation.">Noise reduction</CheckBox>
            <StackPanel Visibility="{Binding EnableDE, Converter={StaticResource betterBooleanToVisibilityConverter}}" Background="{DynamicResource MaterialDesignDarkBackground}" Margin="8">
                <local:ValueSlider Value="{Binding Renderer.DEMaxRadius}" SliderSettings="{Binding DEMaxRadiusSlider}"/>
                <local:ValueSlider Value="{Binding Renderer.DEPower}" SliderSettings="{Binding DEPowerSlider}"/>
                <local:ValueSlider Value="{Binding Renderer.DEThreshold}" SliderSettings="{Binding DEThresholdSlider}"/>
            </StackPanel>
            <local:ValueSlider Value="{Binding Syntropy}" SliderSettings="{Binding SyntropySlider}"/>
            <local:ValueSlider Value="{Binding Ifs.Warmup}" SliderSettings="{Binding WarmupSlider}"/>
        </StackPanel>
    </StackPanel>
</UserControl>