to3796zw 6223627821 CleanVersion_1st
PTOP 각형만 남은 버전
2026-06-18 11:15:10 +09:00

104 lines
3.9 KiB
C#

using Aurora;
using Aurora.View;
using AuroraCAS;
using Hermes.Functional;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using VisionCommon;
using VisionCommonUI;
using VisionCommonUI.Resources;
using WeldingCommon.Utils;
namespace WeldingCommon.Views {
public class WDSelectScoutFieldViewModel : NotifyPropertyChangedBase
{
public delegate void RequestCloseEventHandler();
public event RequestCloseEventHandler RequestClose;
private CamConfig _CamConfig;
#region Binding Properties
public ImageSource BackgroundImage { get; set; }
public List<ChildBufRowCol> FieldScanParamList { get; set; }
private int _RowCount;
public int RowCount { get => _RowCount; set => SetProperty(ref _RowCount, value); }
private int _ColumnCount;
public int ColumnCount { get => _ColumnCount; set => SetProperty(ref _ColumnCount, value); }
#endregion
public WDSelectScoutFieldViewModel(IAuroraEnvironment aurora)
{
_CamConfig = aurora.DeviceManager.GetDeviceConfig(eCamId.CAM1.ToString()) as CamConfig;
SetBackgroundImage(aurora);
LoadFieldScanParams();
}
private void SetBackgroundImage(IAuroraEnvironment aurora)
{
//var defaultValue = "D:\\ILSOSConfig\\_Vision\\Default\\DefaultFieldScanImage.Jpeg";
var defaultValue = "D:\\ILSOSConfig\\ILSOS_PrismaticRD_PTOP\\_vision\\FieldScanImage\\Default\\DefaultFieldScanImage.Jpeg";
var imagePath = DB.LASARecipeHelper.GetValue("ScannerFieldImageFile", defaultValue).ToString();
if (File.Exists(imagePath)) {
BackgroundImage = new BitmapImage(new Uri(imagePath));
return;
}
//var imageSizeWidthChild = _CamConfig.ImageSize.Width / 2;
//var imageSizeHeightChild = _CamConfig.ImageSize.Height / 2;
var imageSizeWidthChild = (int)(_CamConfig.ImageSize.Width * _CamConfig.ImageSizeRatioX); // 이게 맞지 않나..?
var imageSizeHeightChild = (int)(_CamConfig.ImageSize.Height * _CamConfig.ImageSizeRatioY);
int stride = imageSizeWidthChild / 8;
byte[] pixels = new byte[imageSizeHeightChild * stride];
//Fill pixel data with black color.
pixels.ForEach(pixel => pixel = 0x00);
BitmapSource bitmap = BitmapSource.Create(
imageSizeWidthChild,
imageSizeHeightChild,
96, 96,
PixelFormats.Indexed1,
new BitmapPalette(new List<Color> { Colors.Black }),
pixels,
stride);
BackgroundImage = bitmap;
}
private void LoadFieldScanParams()
{
//FieldScanParamList = _CamConfig.ChildImage.ChildBufRowCols
// .OrderBy(row => row.RowIdx)
// .ThenBy(col => col.ColIdx)
// .Select(param => param.Clone() as ChildBufRowCol)
// .ToList();
FieldScanParamList = CommonHelper.GetMainPage().LoadScoutField();
ColumnCount = FieldScanParamList.Max(x => x.ColIdx) + 1;
RowCount = FieldScanParamList.Max(y => y.RowIdx) + 1;
}
public void PerformCmdSave()
{
var camConfig = VisionEnv.AuroraEnv.DeviceManager.GetDeviceConfig(eCamId.CAM1.ToString()) as CamConfig;
camConfig.ChildImage.ChildBufRowCols = FieldScanParamList.ConvertAll(o => o.Clone() as ChildBufRowCol);
CommonHelper.GetMainPage().UpdateScoutField(camConfig.ChildImage.ChildBufRowCols);
VisionEnv.AuroraEnv.DeviceManager.SaveDeviceConfig(eCamId.CAM1.ToString());
MessageBoxUtil.ShowMessageBoxOk(StrTokens.MSG_O_SaveCompleted);
RequestClose?.Invoke();
}
}
}