using System; namespace VisionCommon { /// /// 하드웨어 카메라마다 여러 개의 FovInfo를 가질 수 있다. /// public class FovInfo { private SubSysInfo _subSysInfo; public eUnitId UnitId { get { return _subSysInfo.UnitId; } set { _subSysInfo.UnitId = value; } } public string UnitName { get { return _subSysInfo.UnitName; } set { _subSysInfo.UnitName = value; } } public eSubSysId SubSysId { get { return _subSysInfo.SubSysId; } set { _subSysInfo.SubSysId = value; } } public string SubSysName { get { return _subSysInfo.SubSysName; } set { _subSysInfo.SubSysName = value; } } public eFovId FovId { get; set; } = eFovId.None; public string FovName { get; set; } = string.Empty; public FovInfo( eUnitId unitId, string unitName, eSubSysId subSysId, string subSysName, eFovId fovId, string fovName = "") : this(new SubSysInfo(new UnitInfo(unitId, unitName), subSysId, subSysName), fovId, fovName) { } public FovInfo(SubSysInfo subSysInfo, eFovId fovId, string fovName = "") { _subSysInfo = subSysInfo.Clone(); FovId = fovId; FovName = fovName; } public new FovInfo Clone() { return new FovInfo( new SubSysInfo(new UnitInfo(UnitId, UnitName), SubSysId, SubSysName), FovId, FovName); } public string GetKey() { return CreateKey(UnitId, SubSysId, FovId); } public static string CreateKey(eUnitId unitId, eSubSysId subSysId, eFovId fovId) { return $"{(int)unitId}_{(int)subSysId}_{(int)fovId}"; } public override string ToString() { return $"{(int)UnitId}-{UnitName}_{(int)SubSysId}-{SubSysName}_{(int)FovId}-{FovName}"; } public override bool Equals(object obj) { return Equals(obj as FovInfo); } public bool Equals(FovInfo fovInfo) { if (fovInfo is null) { return false; } if (Object.ReferenceEquals(this, fovInfo)) { return true; } return this.UnitId == fovInfo.UnitId && this.SubSysId == fovInfo.SubSysId && this.FovId == fovInfo.FovId; } public override int GetHashCode() { return _subSysInfo.GetHashCode() ^ FovId.GetHashCode(); } public UnitInfo ToUnitInfo() { return _subSysInfo.ToUnitInfo(); } public SubSysInfo ToSubSysInfo() { return _subSysInfo.Clone(); } } }