using System.Windows.Media; using Azaion.Common.Database; using Azaion.Common.Extensions; using Newtonsoft.Json; namespace Azaion.Common.DTO; public class AnnotationResult { public Annotation Annotation { get; set; } public string ImagePath { get; set; } public string TimeStr { get; set; } public string ClassName { get; set; } public Color ClassColor0 { get; set; } public Color ClassColor1 { get; set; } public Color ClassColor2 { get; set; } public Color ClassColor3 { get; set; } public AnnotationResult(Dictionary allDetectionClasses, Annotation annotation) { Annotation = annotation; var detections = annotation.Detections.ToList(); Color GetAnnotationClass(List detectionClasses, int colorNumber) { if (detections.Count == 0) return (-1).ToColor(); return colorNumber >= detectionClasses.Count ? allDetectionClasses[detectionClasses.LastOrDefault()].Color : allDetectionClasses[detectionClasses[colorNumber]].Color; } TimeStr = $"{annotation.Time:h\\:mm\\:ss}"; ImagePath = annotation.ImagePath; var detectionClasses = detections.Select(x => x.ClassNumber).Distinct().ToList(); ClassName = detectionClasses.Count > 1 ? string.Join(", ", detectionClasses.Select(x => allDetectionClasses[x].ShortName)) : allDetectionClasses[detectionClasses.FirstOrDefault()].Name; ClassColor0 = GetAnnotationClass(detectionClasses, 0); ClassColor1 = GetAnnotationClass(detectionClasses, 1); ClassColor2 = GetAnnotationClass(detectionClasses, 2); ClassColor3 = GetAnnotationClass(detectionClasses, 3); } }