/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using Aurora.Api; using System; using System.Collections.Generic; using System.Windows.Controls; using VisionCommon; using VisionCommonUI; using VisionCommonUI.Resources; #if USE_COGNEX using CogUI; #else using MilUI; #endif namespace VisionUI { /// /// Interaction logic for MultiOcrSettingView.xaml /// public partial class MultiOcrSettingView : UserControl, IDisposable { private Logger _Logger = new Logger(typeof(MultiOcrSettingView).Name); private PatternAgentBase _patternAgent; private PatternInfo _patternInfo; private CameraDisplay _cameraDisplay; private FovInfo _fovInfo; public MultiOcrSettingView( PatternAgentBase patternAgent, PatternInfo patternInfo, ICameraDisplay cameraDisplay, FovInfo fovInfo) { _patternAgent = patternAgent; _patternInfo = patternInfo; _cameraDisplay = (CameraDisplay)cameraDisplay; _fovInfo = fovInfo; InitializeComponent(); #if !USE_COGNEX CreateView(); #endif } #if !USE_COGNEX private List _MultiOcrParamSettingViews = new List(); private void CreateView() { gridMultiOcrParamSettingViews.Children.Clear(); _MultiOcrParamSettingViews.Clear(); var sp = new StackPanel() { Orientation = Orientation.Vertical, Margin = new System.Windows.Thickness(5) }; // 인덱스 0 : 멀티 패턴 Master, 인덱스 1~8 : 멀티 패턴 Slave for (int roiIdx = 1; roiIdx <= (int)eRoiIdx.Roi8; roiIdx++) { PatternInfo subPatternInfo; var subPatternIndex = PatternAgentBase.GetSubPatternIndex(_patternInfo, roiIdx); if (_patternAgent.IsPatternExist(subPatternIndex)) { subPatternInfo = _patternAgent.GetPatternInfo(subPatternIndex); } else { subPatternInfo = _patternInfo.Clone() as PatternInfo; subPatternInfo.SetPatternSubId(roiIdx); subPatternInfo.Description = string.Format($"OCR{roiIdx}"); subPatternInfo.PatternType = ePatternType.Ocr; } var multiOcrParamSettingView = new MultiOcrParamSettingView(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo); multiOcrParamSettingView.DataContext = new MultiOcrParamSettingViewModel(_patternAgent, subPatternInfo, _cameraDisplay, _fovInfo, (eRoiIdx)roiIdx); _MultiOcrParamSettingViews.Add(multiOcrParamSettingView); sp.Children.Add(multiOcrParamSettingView); } gridMultiOcrParamSettingViews.Children.Add(sp); } private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { if (multiOcrParamSettingView.IsChecked() == false) { (multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).SetEnabled(true); } } } private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { if (multiOcrParamSettingView.IsChecked() == true) { (multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).SetEnabled(false); } } } private void Button_Click_Reload(object sender, System.Windows.RoutedEventArgs e) { ClearGraphics(); foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { (multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).Clear(); } } private void Button_Click_Find(object sender, System.Windows.RoutedEventArgs e) { if (!_patternInfo.IsActivated) { MessageBoxUtil.ShowMessageBoxError(StrTokens.MSG_E_PatternNotActivated); return; } if (_cameraDisplay != null) { var image = _cameraDisplay.GetImage(); if (image == null) { MessageBoxUtil.ShowMessageBoxError(StrTokens.MSG_E_ImageNotReady); return; } } _cameraDisplay.ClearMeasureGraphics(); foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { (multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).Find(); } } private void Button_Click_Save(object sender, System.Windows.RoutedEventArgs e) { foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { (multiOcrParamSettingView.DataContext as MultiOcrParamSettingViewModel).Save(); } (DataContext as MultiOcrSettingViewModel).Save(); MessageBoxUtil.ShowMessageBoxOk(StrTokens.MSG_O_SaveCompleted); } private void ClearGraphics() { _cameraDisplay.ClearFindGraphics(); _cameraDisplay.ClearMeasureGraphics(); } #else private void Button_Click_Find(object sender, System.Windows.RoutedEventArgs e) { } private void Button_Click_Save(object sender, System.Windows.RoutedEventArgs e) { } private void Button_Click_Reload(object sender, System.Windows.RoutedEventArgs e) { } private void CheckBox_Unchecked(object sender, System.Windows.RoutedEventArgs e) { } private void CheckBox_Checked(object sender, System.Windows.RoutedEventArgs e) { } #endif public void Dispose() { #if !USE_COGNEX foreach (var multiOcrParamSettingView in _MultiOcrParamSettingViews) { multiOcrParamSettingView.Dispose(); } gridMultiOcrParamSettingViews.Children.Clear(); #endif } } }