Files
UVtools/UVtools.WPF/Controls/Tools/ToolLithophaneControl.axaml
Tiago Conceição 15c500ecaf v3.5.0
- **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]
2022-06-19 04:19:23 +01:00

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>