mirror of
https://github.com/riegera2412/UVtools.git
synced 2026-07-12 03:22:32 +02:00
15c500ecaf
- **PCB Exposure:** - (Add) Able to select multiple files and create a layer per file or merge them into one layer - (Add) Able to import files from a zip file - (Improvement) Round pixel coordinates and line thickness - (Improvement) Better position precision for primitives - (Improvement) Disable the ok button if no files were selected - (Change) Do not auto mirror based on printer lcd mirror type - (Fix) Limit line thickness to 1px minimum - (Fix) Allow leading zero omit from XY coordinates (#492) - (Fix) Mirror option was shifting the board position - (Add) Calibrate - Blooming effect: Generates test models with various strategies and increments to measure the blooming effect - (Add) Setting: Issues - Default order by, changes the default order on the issues list (#482) - (Improvement) CTBv4 and encrypted: Fetch `BottomWaitTimes` virtual property from first bottom layer that has at least 2 pixels (#483) - (Fix) Linux: Enable desktop integration for AppImages (#490) - (Fix) Extracting zip contents inside folders would cause a error and not extract those contents - (Upgrade) AvaloniaUI from 0.10.14 to 0.10.15 [Fixes auto-size problems]
247 lines
11 KiB
XML
247 lines
11 KiB
XML
<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="600"
|
|
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="fa-solid 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="Noise removal:"/>
|
|
|
|
<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_mm"
|
|
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>
|