using System; using System.IO; namespace VisionCommon { public class FovPatternIndex : PatternIndex, ICloneable { public eUnitId UnitId { get; set; } = 0; public eSubSysId SubSysId { get; set; } = 0; public eFovId FovId { get; set; } = eFovId.Fov1; public string FovName { get; set; } = string.Empty; public FovPatternIndex( SubSysInfo subSysInfo, eFovId fovId, int patternId, int patternSubId = 0) : this(subSysInfo.UnitId, subSysInfo.SubSysId, fovId, patternId, patternSubId) { } public FovPatternIndex( eUnitId unitid, eSubSysId subSysId, eFovId fovId, int patternId, int patternSubId = 0) : this(unitid, subSysId, string.Empty, fovId, patternId, patternSubId) { } public FovPatternIndex( SubSysInfo subSysInfo, eFovId fovId, string fovName, int patternId, int patternSubId = 0) : this(subSysInfo.UnitId, subSysInfo.SubSysId, fovName, fovId, patternId, patternSubId) { } public FovPatternIndex(FovInfo fovInfo, string fovName, int patternId, int patternSubId = 0) : this(fovInfo.UnitId, fovInfo.SubSysId, fovName, fovInfo.FovId, patternId, patternSubId) { } public FovPatternIndex( eUnitId unitid, eSubSysId subSysId, string fovName, eFovId fovId, int patternId, int patternSubId = 0) { UnitId = unitid; SubSysId = subSysId; FovName = fovName; FovId = fovId; PatternId = patternId; PatternSubId = patternSubId; } public override string GetFullId() { return ToString(); } public override string ToString() { return $"{(int)UnitId}_{(int)SubSysId}_{(int)FovId}_{PatternId}_{PatternSubId}"; } public string GetPrefix() { return GetPrefix(UnitId, SubSysId, FovId); } public static string GetPrefix( eUnitId unitId, eSubSysId subSysId, eFovId fovId) { return $"{(int)unitId}_{(int)subSysId}_{(int)fovId}_"; } public string GetPatternIdPrefix() { return GetPatternIdPrefix(UnitId, SubSysId, FovId, PatternId); } public static string GetPatternIdPrefix( eUnitId unitId, eSubSysId subSysId, eFovId fovId, int patternId) { return $"{(int)unitId}_{(int)subSysId}_{(int)fovId}_{patternId}_"; } public override string GetSubPatternDirectoryPath() { return Path.Combine( ((int)UnitId).ToString(), ((int)SubSysId).ToString(), ((int)FovId).ToString(), PatternId.ToString(), PatternSubId.ToString()); } public string GetPatternDirectoryPath() { return Path.Combine( ((int)UnitId).ToString(), ((int)SubSysId).ToString(), ((int)FovId).ToString(), PatternId.ToString()); } public override object Clone() { return new FovPatternIndex( UnitId, SubSysId, FovName, FovId, PatternId, PatternSubId); } public override bool Equals(object obj) { if (this.GetType() != obj.GetType()) { return false; } return Equals(obj as FovPatternIndex); } public bool Equals(FovPatternIndex patternIndex) { if (patternIndex is null) { return false; } if (Object.ReferenceEquals(this, patternIndex)) { return true; } return this.ToString() == patternIndex.ToString(); } public override int GetHashCode() { return UnitId.GetHashCode() ^ SubSysId.GetHashCode() ^ FovId.GetHashCode() ^ PatternId.GetHashCode() ^ PatternSubId.GetHashCode(); } } }