2026-01-26 18:56:53 +09:00

361 lines
25 KiB
XML

<UserControl x:Class="CogUI.PreProcessingSettingView"
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:CogUI"
xmlns:visionCommon="clr-namespace:VisionCommon;assembly=VisionCommon"
xmlns:visionCommonUI="clr-namespace:VisionCommonUI;assembly=VisionCommonUI"
xmlns:view="clr-namespace:Aurora.View;assembly=Aurora"
x:Name="preProcessingSettingView"
mc:Ignorable="d"
Width="530" Height="840"
BorderThickness="1" BorderBrush="Gray">
<UserControl.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type GroupBox}" BasedOn="{StaticResource AVDefaultGB}" />
<local:ForegroundColorConverter x:Key="foregroundColorConverter"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="5"/>
<RowDefinition Height="70"/>
</Grid.RowDefinitions>
<GroupBox Grid.Row="0" Margin="10">
<GroupBox.Header>
<TextBlock Style="{StaticResource styleTextBlockSubTitleSmall}">
<Run Text="{Binding [Filtering], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [Parameter], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="8*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Style="{StaticResource styleTextBlockSubTitleSmall}"
HorizontalAlignment="Center">
<Run Text="{Binding [Off], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text=" / "/>
<Run Text="{Binding [On], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
<CheckBox Grid.Row="1" Style="{StaticResource styleToggleSwitch}" x:Name="ckBoxConEnabled"
IsChecked="{Binding PreProcParam.FilParam.Enabled}"
Click="FilOnOff_Clicked"/>
</Grid>
<Grid Grid.Column="1">
<Grid IsEnabled="{Binding PreProcParam.FilParam.Enabled}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [FilteringType], Source={StaticResource langTokens}, Mode=OneWay}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [RepeatCount], Source={StaticResource langTokens}, Mode=OneWay}"/>
<ComboBox Grid.Row="1" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding FilteringTypes}"
SelectedItem="{Binding PreProcParam.FilParam.Types[0]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="1" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderFilter1"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.FilParam.RepeatCounts[0]}"/>
<ComboBox Grid.Row="2" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding FilteringTypes}"
SelectedItem="{Binding PreProcParam.FilParam.Types[1]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="2" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderFilter2"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.FilParam.RepeatCounts[1]}"/>
<ComboBox Grid.Row="3" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding FilteringTypes}"
SelectedItem="{Binding PreProcParam.FilParam.Types[2]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="3" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderFilter3"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.FilParam.RepeatCounts[2]}"/>
<ComboBox Grid.Row="4" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding FilteringTypes}"
SelectedItem="{Binding PreProcParam.FilParam.Types[3]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="4" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderFilter4"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.FilParam.RepeatCounts[3]}"/>
<ComboBox Grid.Row="5" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding FilteringTypes}"
SelectedItem="{Binding PreProcParam.FilParam.Types[4]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="5" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderFilter5"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.FilParam.RepeatCounts[4]}"/>
</Grid>
</Grid>
</Grid>
</GroupBox>
<GroupBox Grid.Row="1" Margin="10">
<GroupBox.Header>
<TextBlock Style="{StaticResource styleTextBlockSubTitleSmall}">
<Run Text="{Binding [Binarization], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [Parameter], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</GroupBox.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="0, 5, 0, 0">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Margin="0, 5, 0, 0" Style="{StaticResource styleTextBlockSubTitleSmall}"
HorizontalAlignment="Center">
<Run Text="{Binding [Off], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text=" / "/>
<Run Text="{Binding [On], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
<CheckBox Grid.Row="1" Style="{StaticResource styleToggleSwitch}" x:Name="ckBoxBinEnabled"
IsChecked="{Binding PreProcParam.BinParam.Enabled}"
Click="BinOnOff_Clicked"/>
</Grid>
<Grid Grid.Row="1" IsEnabled="{Binding PreProcParam.BinParam.Enabled}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.ColumnSpan="2" Style="{StaticResource stylePatternSliderTextBlock}" HorizontalAlignment="Center">
<Run Text="{Binding [Object], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [Color], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
<RadioButton Grid.Row="1" Grid.Column="0" Style="{StaticResource stylePatternMaskRadioButton}" GroupName="radioBinObjColor"
Height="30" x:Name="radioBtnBinBlack"
IsChecked="{Binding PreProcParam.BinParam.ForegroundColor, Converter={StaticResource foregroundColorConverter}, ConverterParameter={x:Static visionCommon:eForegroundColor.Black}}"
Click="ForegroundButton_Clicked">
<RadioButton.ToolTip>
<TextBlock>
<Run Text="{Binding [Black], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</RadioButton.ToolTip>
<Image Style="{StaticResource stylePatternButtonImage}"
Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_circle_black.png"/>
</RadioButton>
<RadioButton Grid.Row="1" Grid.Column="1" Style="{StaticResource stylePatternMaskRadioButton}" GroupName="radioBinObjColor"
Height="30" x:Name="radioBtnBinWhite"
IsChecked="{Binding PreProcParam.BinParam.ForegroundColor, Converter={StaticResource foregroundColorConverter}, ConverterParameter={x:Static visionCommon:eForegroundColor.White}}"
Click="ForegroundButton_Clicked">
<RadioButton.ToolTip>
<TextBlock>
<Run Text="{Binding [White], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</RadioButton.ToolTip>
<Image Style="{StaticResource stylePatternButtonImage}"
Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_circle_white.png"/>
</RadioButton>
</Grid>
</Grid>
<Grid Grid.Column ="1" IsEnabled="{Binding PreProcParam.BinParam.Enabled}">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<visionCommonUI:UCContentSlider Grid.Row="0" Margin="0, 5, 0, 0" x:Name="sliderThresholdLow"
MinValue="0"
MaxValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.BinParam.ThresholdHigh}"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.BinParam.ThresholdLow}">
<TextBlock Style="{StaticResource stylePatternSliderTextBlock}">
<Run Text="{Binding [Threshold], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [Low], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</visionCommonUI:UCContentSlider>
<visionCommonUI:UCContentSlider Grid.Row="1" Margin="0, 5, 0, 0" x:Name="sliderThresholdHigh"
MinValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.BinParam.ThresholdLow}"
MaxValue="255"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.BinParam.ThresholdHigh}">
<TextBlock Style="{StaticResource stylePatternSliderTextBlock}">
<Run Text="{Binding [Threshold], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [High], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</visionCommonUI:UCContentSlider>
</Grid>
</Grid>
<GroupBox Grid.Row="1" Margin="10" IsEnabled="{Binding PreProcParam.BinParam.Enabled}">
<GroupBox.Header>
<TextBlock Style="{StaticResource styleTextBlockSubTitleSmall}">
<Run Text="{Binding [Morphology], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text="{Binding [Parameter], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
</GroupBox.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="8*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Style="{StaticResource styleTextBlockSubTitleSmall}"
HorizontalAlignment="Center">
<Run Text="{Binding [Off], Source={StaticResource langTokens}, Mode=OneWay}"/>
<Run Text=" / "/>
<Run Text="{Binding [On], Source={StaticResource langTokens}, Mode=OneWay}"/>
</TextBlock>
<CheckBox Grid.Row="1" Style="{StaticResource styleToggleSwitch}" x:Name="ckBoxMorphEnabled"
IsChecked="{Binding PreProcParam.MorphParam.Enabled}"
Click="MorphOnOff_Clicked"/>
</Grid>
<Grid Grid.Column="1" IsEnabled="{Binding PreProcParam.MorphParam.Enabled}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [FilteringType], Source={StaticResource langTokens}, Mode=OneWay}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [RepeatCount], Source={StaticResource langTokens}, Mode=OneWay}"/>
<ComboBox Grid.Row="1" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding MorphologyTypes}"
SelectedItem="{Binding PreProcParam.MorphParam.Types[0]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="1" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderMorph1"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.MorphParam.RepeatCounts[0]}"/>
<ComboBox Grid.Row="2" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding MorphologyTypes}"
SelectedItem="{Binding PreProcParam.MorphParam.Types[1]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="2" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderMorph2"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.MorphParam.RepeatCounts[1]}"/>
<ComboBox Grid.Row="3" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding MorphologyTypes}"
SelectedItem="{Binding PreProcParam.MorphParam.Types[2]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="3" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderMorph3"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.MorphParam.RepeatCounts[2]}"/>
<ComboBox Grid.Row="4" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding MorphologyTypes}"
SelectedItem="{Binding PreProcParam.MorphParam.Types[3]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="4" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderMorph4"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.MorphParam.RepeatCounts[3]}"/>
<ComboBox Grid.Row="5" Grid.Column="0" Margin="5" FontSize="14" HorizontalContentAlignment="Center"
ItemsSource="{Binding MorphologyTypes}"
SelectedItem="{Binding PreProcParam.MorphParam.Types[4]}"
SelectionChanged="ComboBox_SelectionChanged">
</ComboBox>
<visionCommonUI:UCContentSlider Grid.Row="5" Grid.Column="1" Margin="0, -20, 0, 5" x:Name="sliderMorph5"
MinValue="0" MaxValue="5" TickFrequency="1"
KeyValue="{Binding ElementName=preProcessingSettingView, Path=DataContext.PreProcParam.MorphParam.RepeatCounts[4]}"/>
</Grid>
</Grid>
</Grid>
</GroupBox>
</Grid>
</GroupBox>
<Separator Grid.Row="2"/>
<StackPanel Grid.Row="3" Margin="10" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Style="{StaticResource styleBtnPatternSetting}"
Click="ReloadImageBtn_Clicked"
ToolTip="Reload image from the display.">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Style="{StaticResource stylePatternButtonImage}"
Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_loading_arrow.png"/>
<TextBlock Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [Reload], Source={StaticResource langTokens}, Mode=OneWay}"/>
</StackPanel>
</Button>
<Button Style="{StaticResource styleBtnPatternSetting}"
Click="ApplyBtn_Clicked">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Style="{StaticResource stylePatternButtonImage}"
Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_ok.png"/>
<TextBlock Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [Apply], Source={StaticResource langTokens}, Mode=OneWay}"/>
</StackPanel>
</Button>
<Button Style="{StaticResource styleBtnPatternSetting}"
Click="CancelBtn_Clicked">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Style="{StaticResource stylePatternButtonImage}"
Source="pack://application:,,,/VisionCommonUI;component/Icons/ColorIcons/img_cancel.png"/>
<TextBlock Style="{StaticResource stylePatternButtonTextBlock}"
Text="{Binding [Close], Source={StaticResource langTokens}, Mode=OneWay}"/>
</StackPanel>
</Button>
</StackPanel>
</Grid>
</UserControl>