2026-06-05 13:44:39 +09:00

80 lines
2.8 KiB
C#

using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
namespace VisionCommon {
public class TrackingParam : ICloneable {
public bool Enabled { get; set; } = false;
public int Count { get; set; } = 10;
public object Clone() {
return new TrackingParam() {
Enabled = this.Enabled,
Count = this.Count
};
}
}
public class PatternRecipe : ICloneCopy<PatternRecipe> {
public TrackingParam TrackingParam { get; set; } = new TrackingParam();
public ObservableCollection<ProcPatternInfo> ProcPatternInfos { get; set; } = new ObservableCollection<ProcPatternInfo>();
public PatternRecipe() {
}
public PatternRecipe Clone() {
return ((ICloneable)this).Clone() as PatternRecipe;
}
object ICloneable.Clone() {
var cloneObj = new PatternRecipe();
CopyTo(cloneObj);
return cloneObj;
}
public void CopyTo(PatternRecipe target) {
target.TrackingParam = this.TrackingParam.Clone() as TrackingParam;
var clonedList = this.ProcPatternInfos.Select(x => x.Clone()).ToList();
target.ProcPatternInfos = new ObservableCollection<ProcPatternInfo>(clonedList);
}
}
public class ProcPatternInfo : ICloneCopy<ProcPatternInfo> {
public eProcPatternId ProcPatternId { get; set; } = eProcPatternId.ProcPattern1;
/// <summary> 얼라인 혹은 검사에 대한 string ID </summary>
public string ProcId { get; set; } = "Align1";
public string PatternName { get; set; } = "Mark_1";
public int PatternId { get; set; } = -1;
public bool IsFovPattern { get; set; } = true;
public ProcPatternInfo Clone() {
return ((ICloneable)this).Clone() as ProcPatternInfo;
}
object ICloneable.Clone() {
var cloneObj = new ProcPatternInfo();
CopyTo(cloneObj);
return cloneObj;
}
public void CopyTo(ProcPatternInfo target) {
target.ProcPatternId = this.ProcPatternId;
target.ProcId = this.ProcId;
target.PatternName = this.PatternName;
target.PatternId = this.PatternId;
target.IsFovPattern = this.IsFovPattern;
}
}
/// <summary>
/// 하나의 FOV 내에서 동시에 찾을 패턴의 갯수 ID
/// EX) ProcPattern1 : 1개 / ProcPattern2 : 2개 / ... / ProcPattern10 : 10개
/// </summary>
public enum eProcPatternId {
None = -1,
ProcPattern1 = 0, ProcPattern2, ProcPattern3, ProcPattern4, ProcPattern5,
ProcPattern6, ProcPattern7, ProcPattern8, ProcPattern9, ProcPattern10,
Max
}
}