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

92 lines
2.8 KiB
C#

using System;
namespace VisionCommon {
/// <summary>
/// 하드웨어 카메라마다 여러 개의 FovInfo를 가질 수 있다.
/// </summary>
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();
}
}
}