/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using System; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Linq; namespace VisionCommon { public class TrackingParam : ICloneable { public bool Enabled { get; set; } = true; public int Count { get; set; } = 20; public object Clone() { return new TrackingParam() { Enabled = this.Enabled, Count = this.Count }; } } public class PatternRecipe : ICloneCopy { public TrackingParam TrackingParam { get; set; } = new TrackingParam(); public ObservableCollection ProcPatternInfos { get; set; } = new ObservableCollection(); 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(clonedList); } } public class ProcPatternInfo : ICloneCopy { public eProcPatternId ProcPatternId { get; set; } = eProcPatternId.ProcPattern1; /// 얼라인 혹은 검사에 대한 string ID public string ProcId { get; set; } = "Align1"; public string PatternName { get; set; } = "Fov1_Align1_Proc1"; 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; } } /// /// 하나의 FOV 내에서 동시에 찾을 패턴의 갯수 ID /// EX) ProcPattern1 : 1개 / ProcPattern2 : 2개 / ... / ProcPattern10 : 10개 /// public enum eProcPatternId { None = -1, ProcPattern1 = 0, ProcPattern2, ProcPattern3, ProcPattern4, ProcPattern5, ProcPattern6, ProcPattern7, ProcPattern8, ProcPattern9, ProcPattern10, ProcPattern11, ProcPattern12, ProcPattern13, Max } }