diff options
Diffstat (limited to 'UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml')
-rw-r--r-- | UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml b/UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml new file mode 100644 index 0000000..39d0207 --- /dev/null +++ b/UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml @@ -0,0 +1,246 @@ +<UserControl xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:i="clr-namespace:Projektanker.Icons.Avalonia;assembly=Projektanker.Icons.Avalonia" + mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + x:Class="UVtools.WPF.Controls.Tools.ToolLithophaneControl"> + <Grid ColumnDefinitions="Auto,10,350"> + <StackPanel Spacing="10"> + <Grid + RowDefinitions="Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto,10,Auto" + ColumnDefinitions="Auto,10,190,20,Auto,10,190"> + + <TextBlock Grid.Row="0" Grid.Column="0" + VerticalAlignment="Center" + Text="Layer height:"/> + <NumericUpDown Grid.Row="0" Grid.Column="2" + Classes="ValueLabel ValueLabel_mm" + Increment="0.01" + Minimum="0.01" + Maximum="0.30" + FormatString="F3" + Value="{Binding Operation.LayerHeight}"/> + + <TextBlock Grid.Row="0" Grid.Column="4" + VerticalAlignment="Center" + HorizontalAlignment="Right" + Text="Bottom layer count:"/> + <NumericUpDown Grid.Row="0" Grid.Column="6" + Classes="ValueLabel ValueLabel_layers" + Increment="1" + Minimum="1" + Maximum="1000" + Value="{Binding Operation.BottomLayerCount}"/> + + + <TextBlock Grid.Row="2" Grid.Column="0" + VerticalAlignment="Center" + Text="Bottom exposure:"/> + <NumericUpDown Grid.Row="2" Grid.Column="2" + Classes="ValueLabel ValueLabel_s" + Increment="0.5" + Minimum="0.1" + Maximum="200" + FormatString="F2" + Value="{Binding Operation.BottomExposure}"/> + <TextBlock Grid.Row="2" Grid.Column="4" + VerticalAlignment="Center" + HorizontalAlignment="Right" + Text="Normal exposure:"/> + <NumericUpDown Grid.Row="2" Grid.Column="6" + Classes="ValueLabel ValueLabel_s" + Increment="0.5" + Minimum="0.1" + Maximum="200" + FormatString="F2" + Value="{Binding Operation.NormalExposure}"/> + + <TextBlock Grid.Row="4" Grid.Column="0" + VerticalAlignment="Center" + Text="Image:"/> + + <Grid Grid.Row="4" Grid.Column="2" Grid.ColumnSpan="5" + ColumnDefinitions="*,Auto"> + <TextBox Grid.Column="0" + IsReadOnly="True" + VerticalAlignment="Center" + Text="{Binding Operation.FilePath}"/> + <Button Grid.Column="1" + VerticalAlignment="Stretch" + Command="{Binding SelectFile}" + i:Attached.Icon="fas fa-file-import"/> + </Grid> + + <TextBlock Grid.Row="6" Grid.Column="0" + VerticalAlignment="Center" + Text="Rotate:"/> + + <ComboBox Grid.Row="6" Grid.Column="2" + HorizontalAlignment="Stretch" + Items="{Binding Operation.Rotate, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}" + SelectedItem="{Binding Operation.Rotate, Converter={StaticResource FromValueDescriptionToEnumConverter}}"/> + + <StackPanel Grid.Row="6" Grid.Column="4" Grid.ColumnSpan="3" + Orientation="Horizontal" Spacing="20"> + <CheckBox VerticalAlignment="Center" + IsChecked="{Binding Operation.Mirror}" + Content="Mirror"/> + + <CheckBox VerticalAlignment="Center" + IsChecked="{Binding Operation.InvertColor}" + Content="Invert color"/> + </StackPanel> + + <TextBlock Grid.Row="8" Grid.Column="0" + VerticalAlignment="Center" + Text="Resize:"/> + + <NumericUpDown Grid.Row="8" Grid.Column="2" + Classes="ValueLabel ValueLabel_percent" + Minimum="1" + Maximum="900" + Increment="1" + FormatString="F2" + Value="{Binding Operation.ResizeFactor}"/> + + <TextBlock Grid.Row="10" Grid.Column="0" + VerticalAlignment="Center" + Text="Brightness gain:"/> + + <NumericUpDown Grid.Row="10" Grid.Column="2" + Classes="ValueLabel ValueLabel_sun" + Minimum="-128" + Maximum="127" + Increment="1" + Value="{Binding Operation.BrightnessGain}"/> + + <CheckBox Grid.Row="10" Grid.Column="4" Grid.ColumnSpan="3" + VerticalAlignment="Center" + IsChecked="{Binding Operation.EnhanceContrast}" + Content="Enhance contrast"/> + + <TextBlock Grid.Row="12" Grid.Column="0" + VerticalAlignment="Center" + Text="Remove noise:"/> + + <NumericUpDown Grid.Row="12" Grid.Column="2" + Classes="ValueLabel ValueLabel_px" + Minimum="0" + Maximum="255" + Increment="1" + Value="{Binding Operation.RemoveNoiseIterations}"/> + + <TextBlock Grid.Row="12" Grid.Column="4" + VerticalAlignment="Center" + HorizontalAlignment="Right" + Text="Gap closing:"/> + + <NumericUpDown Grid.Row="12" Grid.Column="6" + Classes="ValueLabel ValueLabel_px" + Minimum="0" + Maximum="255" + Increment="1" + Value="{Binding Operation.GapClosingIterations}"/> + + <TextBlock Grid.Row="14" Grid.Column="0" + VerticalAlignment="Center" + Text="Gaussian blur:"/> + + <NumericUpDown Grid.Row="14" Grid.Column="2" + Classes="ValueLabel ValueLabel_px" + Minimum="0" + Maximum="255" + Increment="1" + Value="{Binding Operation.GaussianBlur}"/> + + <TextBlock Grid.Row="16" Grid.Column="0" + VerticalAlignment="Center" + Text="Start threshold:"/> + + <NumericUpDown Grid.Row="16" Grid.Column="2" + Classes="ValueLabel ValueLabel_sun" + Minimum="1" + Maximum="255" + Increment="1" + Value="{Binding Operation.StartThresholdRange}"/> + + <TextBlock Grid.Row="16" Grid.Column="4" + VerticalAlignment="Center" + HorizontalAlignment="Right" + Text="End threshold:"/> + + <NumericUpDown Grid.Row="16" Grid.Column="6" + Classes="ValueLabel ValueLabel_sun" + Minimum="1" + Maximum="255" + Increment="1" + Value="{Binding Operation.EndThresholdRange}"/> + + <TextBlock Grid.Row="18" Grid.Column="0" + VerticalAlignment="Center" + Text="Base type:"/> + + <ComboBox Grid.Row="18" Grid.Column="2" Grid.ColumnSpan="5" + HorizontalAlignment="Stretch" + Items="{Binding Operation.BaseType, Converter={StaticResource EnumToCollectionConverter}, Mode=OneTime}" + SelectedItem="{Binding Operation.BaseType, Converter={StaticResource FromValueDescriptionToEnumConverter}}"/> + + <TextBlock Grid.Row="20" Grid.Column="0" + VerticalAlignment="Center" + Text="Base thickness:"/> + + <NumericUpDown Grid.Row="20" Grid.Column="2" + Classes="ValueLabel ValueLabel_mm" + Minimum="0" + Maximum="255" + Increment="1" + FormatString="F2" + Value="{Binding Operation.BaseThickness}"/> + + <TextBlock Grid.Row="20" Grid.Column="4" + HorizontalAlignment="Right" + VerticalAlignment="Center" + Text="Base margin:"/> + + <NumericUpDown Grid.Row="20" Grid.Column="6" + Classes="ValueLabel ValueLabel_px" + Minimum="0" + Maximum="65535" + Increment="1" + Value="{Binding Operation.BaseMargin}"/> + + <TextBlock Grid.Row="22" Grid.Column="0" + VerticalAlignment="Center" + IsEnabled="{Binding !Operation.OneLayerPerThreshold}" + Text="Lithophane height:"/> + + <NumericUpDown Grid.Row="22" Grid.Column="2" + Classes="ValueLabel ValueLabel_px" + Minimum="0" + Maximum="10000" + Increment="1" + IsEnabled="{Binding !Operation.OneLayerPerThreshold}" + Value="{Binding Operation.LithophaneHeight}"/> + + <CheckBox Grid.Row="22" Grid.Column="4" Grid.ColumnSpan="3" + VerticalAlignment="Center" + IsChecked="{Binding Operation.OneLayerPerThreshold}" + Content="One layer per threshold level"/> + + <CheckBox Grid.Row="24" Grid.Column="2" + VerticalAlignment="Center" + IsChecked="{Binding Operation.EnableAntiAliasing}" + Content="Enable Anti-Aliasing"/> + </Grid> + + </StackPanel> + + <StackPanel Grid.Column="2" Orientation="Vertical" Spacing="10"> + <Image Stretch="Uniform" + Source="{Binding PreviewImage}"/> + + <TextBlock Text="{Binding PreviewImage.Size, StringFormat=Size: {0}}" HorizontalAlignment="Center"/> + </StackPanel> + </Grid> +</UserControl> |