Force Single Image
This commit is contained in:
@ -6,6 +6,7 @@ namespace View_by_Distance.Shared.Models;
|
||||
public class Closest : Properties.IClosest
|
||||
{
|
||||
|
||||
protected readonly bool _AboveTolerance;
|
||||
protected readonly int _Average;
|
||||
protected readonly bool? _IsWrongYear;
|
||||
protected Mapping _Mapping;
|
||||
@ -13,6 +14,7 @@ public class Closest : Properties.IClosest
|
||||
protected readonly DateTime _MinimumDateTime;
|
||||
protected readonly int _NormalizedPixelPercentage;
|
||||
protected readonly long? _TicksDelta;
|
||||
public bool AboveTolerance => _AboveTolerance;
|
||||
public double Average => _Average;
|
||||
public bool? IsWrongYear => _IsWrongYear;
|
||||
public Mapping Mapping => _Mapping;
|
||||
@ -22,8 +24,9 @@ public class Closest : Properties.IClosest
|
||||
public long? TicksDelta => _TicksDelta;
|
||||
|
||||
[JsonConstructor]
|
||||
public Closest(int average, int normalizedPixelPercentage, bool? isWrongYear, Mapping mapping, double minimum, DateTime minimumDateTime, long? ticksDelta)
|
||||
public Closest(bool aboveTolerance, int average, int normalizedPixelPercentage, bool? isWrongYear, Mapping mapping, double minimum, DateTime minimumDateTime, long? ticksDelta)
|
||||
{
|
||||
_AboveTolerance = aboveTolerance;
|
||||
_Average = average;
|
||||
_NormalizedPixelPercentage = normalizedPixelPercentage;
|
||||
_IsWrongYear = isWrongYear;
|
||||
|
@ -6,33 +6,36 @@ namespace View_by_Distance.Shared.Models;
|
||||
public class Mapping : Properties.IMapping
|
||||
{
|
||||
|
||||
protected readonly int? _ApproximateYears;
|
||||
protected int? _ApproximateYears;
|
||||
protected readonly string _DisplayDirectoryName;
|
||||
protected bool? _Filtered;
|
||||
protected bool _Forced;
|
||||
protected readonly int? _NormalizedPixelPercentage;
|
||||
protected PersonBirthday _PersonBirthday;
|
||||
public int? ApproximateYears => _ApproximateYears;
|
||||
public string DisplayDirectoryName => _DisplayDirectoryName;
|
||||
public bool? Filtered => _Filtered;
|
||||
public bool Forced => _Forced;
|
||||
public int? NormalizedPixelPercentage => _NormalizedPixelPercentage;
|
||||
public PersonBirthday PersonBirthday => _PersonBirthday;
|
||||
|
||||
[JsonConstructor]
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, bool? filtered, int? normalizedPixelPercentage, PersonBirthday personBirthday)
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, bool? filtered, bool forced, int? normalizedPixelPercentage, PersonBirthday personBirthday)
|
||||
{
|
||||
_ApproximateYears = approximateYears;
|
||||
_DisplayDirectoryName = displayDirectoryName;
|
||||
_Filtered = filtered;
|
||||
_Forced = forced;
|
||||
_NormalizedPixelPercentage = normalizedPixelPercentage;
|
||||
_PersonBirthday = personBirthday;
|
||||
}
|
||||
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, int? normalizedPixelPercentage, PersonBirthday personBirthday) :
|
||||
this(approximateYears, displayDirectoryName, null, normalizedPixelPercentage, personBirthday)
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, bool forced, int? normalizedPixelPercentage, PersonBirthday personBirthday) :
|
||||
this(approximateYears, displayDirectoryName, null, forced, normalizedPixelPercentage, personBirthday)
|
||||
{ }
|
||||
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, PersonBirthday personBirthday) :
|
||||
this(approximateYears, displayDirectoryName, null, null, personBirthday)
|
||||
public Mapping(int? approximateYears, string displayDirectoryName, bool forced, PersonBirthday personBirthday) :
|
||||
this(approximateYears, displayDirectoryName, null, forced, null, personBirthday)
|
||||
{ }
|
||||
|
||||
public override string ToString()
|
||||
@ -45,6 +48,4 @@ public class Mapping : Properties.IMapping
|
||||
|
||||
public void SetFiltered(bool value) => _Filtered = value;
|
||||
|
||||
public void SetPersonBirthday(PersonBirthday personBirthday) => _PersonBirthday = personBirthday;
|
||||
|
||||
}
|
@ -6,6 +6,7 @@ public interface IMapping
|
||||
public int? ApproximateYears { get; }
|
||||
public string DisplayDirectoryName { get; }
|
||||
public bool? Filtered { get; }
|
||||
public bool Forced { get; }
|
||||
public int? NormalizedPixelPercentage { get; }
|
||||
public PersonBirthday PersonBirthday { get; }
|
||||
|
||||
|
@ -3,14 +3,15 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
||||
internal abstract class Closest
|
||||
{
|
||||
|
||||
private static int Get(List<double> faceDistances) => (int)(Math.Round(faceDistances.Average(), Stateless.IClosest.Digits) * Stateless.ILocation.Factor);
|
||||
private static int Get(double rawAverage) => (int)(Math.Round(rawAverage, Stateless.IClosest.Digits) * Stateless.ILocation.Factor);
|
||||
|
||||
private static Models.Closest Get(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
|
||||
private static Models.Closest Get(Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
|
||||
{
|
||||
Models.Closest result;
|
||||
int average = Get(faceDistance.Distances);
|
||||
double minimum = faceDistance.Distances.Min();
|
||||
long? ticksDelta;
|
||||
double minimum = faceDistance.Distances.Min();
|
||||
double rawAverage = faceDistance.Distances.Average();
|
||||
bool aboveTolerance = minimum >= Stateless.IClosest.Tolerance || rawAverage >= Stateless.IClosest.Tolerance;
|
||||
if (faceDistance.IsWrongYear is null || faceDistance.IsWrongYear.Value)
|
||||
ticksDelta = null;
|
||||
else
|
||||
@ -18,19 +19,20 @@ internal abstract class Closest
|
||||
ticksDelta = Math.Abs(faceDistance.MinimumDateTime.Ticks - minimumDateTime.Ticks);
|
||||
if (faceDistance.MinimumDateTime < faceDistance.Mapping.PersonBirthday.Value)
|
||||
ticksDelta *= 2;
|
||||
else if (faceDistance.Mapping.ApproximateYears.HasValue && faceDistance.MinimumDateTime < DateTime.Now.AddYears(-faceDistance.Mapping.ApproximateYears.Value))
|
||||
ticksDelta *= 2;
|
||||
}
|
||||
if (minimum > Stateless.IClosest.Tolerance)
|
||||
faceDistance.Mapping.SetPersonBirthday(personBirthday);
|
||||
if (face.Location?.NormalizedPixelPercentage is null)
|
||||
throw new NullReferenceException(nameof(face.Location.NormalizedPixelPercentage));
|
||||
result = new(average, face.Location.NormalizedPixelPercentage.Value, faceDistance.IsWrongYear, faceDistance.Mapping, minimum, faceDistance.MinimumDateTime, ticksDelta);
|
||||
int average = Get(rawAverage);
|
||||
result = new(aboveTolerance, average, face.Location.NormalizedPixelPercentage.Value, faceDistance.IsWrongYear, faceDistance.Mapping, minimum, faceDistance.MinimumDateTime, ticksDelta);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
|
||||
internal static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
|
||||
{
|
||||
Models.Closest[] results;
|
||||
Models.Closest[] closestCollection = (from l in faceDistances select Get(personBirthday, face, minimumDateTime, l)).ToArray();
|
||||
Models.Closest[] closestCollection = (from l in faceDistances select Get(face, minimumDateTime, l)).ToArray();
|
||||
results = (from l in closestCollection orderby l.Average, l.TicksDelta.HasValue, l.TicksDelta select l).ToArray();
|
||||
return results;
|
||||
}
|
||||
|
@ -5,6 +5,6 @@ public interface IClosest
|
||||
|
||||
Models.Closest[] TestStatic_Get(List<FaceDistance> faceDistances);
|
||||
|
||||
static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(personBirthday, face, minimumDateTime, faceDistances);
|
||||
static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(face, minimumDateTime, faceDistances);
|
||||
|
||||
}
|
Reference in New Issue
Block a user