2026-01-26 14:51:28 +09:00

65 lines
2.3 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora.Api;
using System;
using System.Collections.Generic;
namespace VisionCommon {
/// <summary>
/// 패턴을 트래킹하기 위해 패턴 위치를 저장/관리하는 매니저
/// </summary>
public class PatternTrackingManager {
private static readonly Logger _Logger = new Logger(typeof(PatternTrackingManager).Name);
private static Dictionary<FovInfo, DataList> _PatternTrackings = new Dictionary<FovInfo, DataList>();
/// <summary>
/// 패턴 위치 추가
/// </summary>
/// <param name="fovInfo">FOV 키</param>
/// <param name="cross">패턴 위치</param>
public static void AddCross(FovInfo fovInfo, Cross cross) {
if (!_PatternTrackings.ContainsKey(fovInfo)) {
_PatternTrackings.Add(fovInfo, new DataList());
}
_PatternTrackings[fovInfo].Add(cross);
}
/// <summary>
/// 모든 패턴 위치 리턴
/// </summary>
/// <param name="fovInfo">FOV 키</param>
/// <returns>모든 패턴 위치</returns>
public static List<Cross> GetCrosses(FovInfo fovInfo) {
if (_PatternTrackings.ContainsKey(fovInfo)) {
return _PatternTrackings[fovInfo].GetDataList().ConvertAll(o => (Cross)o);
}
return null;
}
/// <summary>
/// 마지막 lastDataCnt개의 패턴 위치 리턴
/// </summary>
/// <param name="fovInfo">FOV 키</param>
/// <param name="lastDataCnt">마지막 패턴 위치 개수</param>
/// <returns>마지막 lastDataCnt개의 패턴 위치</returns>
public static List<Cross> GetCrosses(FovInfo fovInfo, int lastDataCnt) {
if (_PatternTrackings.ContainsKey(fovInfo)) {
return _PatternTrackings[fovInfo].GetDataList(lastDataCnt).ConvertAll(o => (Cross)o);
}
return null;
}
/// <summary>
/// 모든 패턴 위치 초기화
/// </summary>
/// <param name="fovInfo">FOV 키</param>
public static void Clear(FovInfo fovInfo) {
if (_PatternTrackings.ContainsKey(fovInfo)) {
_PatternTrackings[fovInfo].Clear();
}
}
}
}