2022-10-23 22:45:55 -07:00

229 lines
13 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
namespace View_by_Distance.Instance.Models;
public class Configuration
{
protected Property.Models.Configuration _PropertyConfiguration;
public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration;
public bool CheckDFaceAndUpWriteDates { init; get; }
public bool CheckJsonForDistanceResults { init; get; }
public int CrossDirectoryMaxItemsInDistanceCollection { init; get; }
public int DistanceFactor { init; get; }
public bool DistanceMoveUnableToMatch { init; get; }
public int DistancePixelDistanceTolerance { init; get; }
public bool DistanceRenameToMatch { init; get; }
public int FaceAreaPermille { init; get; }
public int FaceDistanceHiddenImageFactor { init; get; }
public int FaceConfidencePercent { init; get; }
public int FaceDistancePermyriad { init; get; }
public bool ForceFaceLastWriteTimeToCreationTime { init; get; }
public bool ForceMetadataLastWriteTimeToCreationTime { init; get; }
public bool ForceResizeLastWriteTimeToCreationTime { init; get; }
public string[] IgnoreExtensions { init; get; }
public string[] IgnoreRelativePaths { init; get; }
public string[] JLinks { init; get; }
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
public bool LoadOrCreateThenSaveIndex { init; get; }
public int LocationDigits { init; get; }
public int LocationFactor { init; get; }
public int? MappedMaxIndex { init; get; }
public string MappingDefaultName { init; get; }
public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; }
public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { init; get; }
public string[] MixedYearRelativePaths { init; get; }
public string ModelDirectory { init; get; }
public string ModelName { init; get; }
public int NumberOfJitters { init; get; }
public int NumberOfTimesToUpsample { init; get; }
public string OutputExtension { init; get; }
public int OutputQuality { init; get; }
public string[] OutputResolutions { init; get; }
public bool OverrideForFaceImages { init; get; }
public bool OverrideForFaceLandmarkImages { init; get; }
public bool OverrideForResizeImages { init; get; }
public int PersonBirthdayFirstYear { init; get; }
public string PersonBirthdayFormat { init; get; }
public string PersonKeyFormat { init; get; }
public string PredictorModelName { init; get; }
public bool PropertiesChangedForDistance { init; get; }
public bool PropertiesChangedForFaces { init; get; }
public bool PropertiesChangedForIndex { init; get; }
public bool PropertiesChangedForMetadata { init; get; }
public bool PropertiesChangedForResize { init; get; }
public int[] RangeDaysDeltaTolerance { init; get; }
public int[] RangeFaceAreaPermilleTolerance { init; get; }
public double[] RangeFaceConfidence { init; get; }
public double[] RangeDistanceTolerance { init; get; }
public bool RetryImagesWithoutAFace { init; get; }
public bool Reverse { init; get; }
public string[] SaveFaceDistancesForOutputResolutions { init; get; }
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
public bool SaveFullYearOfRandomFiles { init; get; }
public string[] SaveMappedForOutputResolutions { init; get; }
public string[] SaveNotMappedForOutputResolutions { init; get; }
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
public bool SaveResizedSubfiles { init; get; }
public string[] SaveShortcutsForOutputResolutions { init; get; }
public bool SkipSearch { init; get; }
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
public int SortingMaximumPerKey { init; get; }
public int SortingMinimumToUseSigma { init; get; }
public bool TestDistanceResults { init; get; }
public string[] ValidResolutions { init; get; }
[JsonConstructor]
public Configuration(Property.Models.Configuration propertyConfiguration,
bool checkDFaceAndUpWriteDates,
bool checkJsonForDistanceResults,
int crossDirectoryMaxItemsInDistanceCollection,
int distanceFactor,
bool distanceMoveUnableToMatch,
int distancePixelDistanceTolerance,
bool distanceRenameToMatch,
int faceAreaPermille,
int faceDistanceHiddenImageFactor,
int faceConfidencePercent,
int faceDistancePermyriad,
bool forceFaceLastWriteTimeToCreationTime,
bool forceMetadataLastWriteTimeToCreationTime,
bool forceResizeLastWriteTimeToCreationTime,
string[] ignoreExtensions,
string[] ignoreRelativePaths,
string[] jLinks,
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
bool loadOrCreateThenSaveIndex,
int locationDigits,
int locationFactor,
int? mappedMaxIndex,
string mappingDefaultName,
bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping,
bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping,
string[] mixedYearRelativePaths,
string modelDirectory,
string modelName,
int numberOfJitters,
int numberOfTimesToUpsample,
string outputExtension,
int outputQuality,
string[] outputResolutions,
bool overrideForFaceImages,
bool overrideForFaceLandmarkImages,
bool overrideForResizeImages,
int personBirthdayFirstYear,
string personBirthdayFormat,
string personKeyFormat,
string predictorModelName,
bool propertiesChangedForDistance,
bool propertiesChangedForFaces,
bool propertiesChangedForIndex,
bool propertiesChangedForMetadata,
bool propertiesChangedForResize,
int[] rangeDaysDeltaTolerance,
int[] rangeFaceAreaPermilleTolerance,
double[] rangeFaceConfidence,
double[] rangeDistanceTolerance,
bool retryImagesWithoutAFace,
bool reverse,
string[] saveFaceDistancesForOutputResolutions,
string[] saveFaceLandmarkForOutputResolutions,
bool saveFullYearOfRandomFiles,
string[] saveMappedForOutputResolutions,
string[] saveNotMappedForOutputResolutions,
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
bool saveResizedSubfiles,
string[] saveShortcutsForOutputResolutions,
bool skipSearch,
int sortingMaximumPerFaceShouldBeHigh,
int sortingMaximumPerKey,
int sortingSigma,
bool testDistanceResults,
string[] validResolutions)
{
_PropertyConfiguration = propertyConfiguration;
CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates;
CheckJsonForDistanceResults = checkJsonForDistanceResults;
CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection;
DistanceFactor = distanceFactor;
DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
DistanceRenameToMatch = distanceRenameToMatch;
FaceAreaPermille = faceAreaPermille;
FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
FaceConfidencePercent = faceConfidencePercent;
FaceDistancePermyriad = faceDistancePermyriad;
ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime;
IgnoreExtensions = ignoreExtensions;
IgnoreRelativePaths = ignoreRelativePaths;
JLinks = jLinks;
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex;
LocationDigits = locationDigits;
LocationFactor = locationFactor;
MappedMaxIndex = mappedMaxIndex;
MappingDefaultName = mappingDefaultName;
MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping;
MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping;
MixedYearRelativePaths = mixedYearRelativePaths;
ModelDirectory = modelDirectory;
ModelName = modelName;
NumberOfJitters = numberOfJitters;
NumberOfTimesToUpsample = numberOfTimesToUpsample;
OutputExtension = outputExtension;
OutputQuality = outputQuality;
OutputResolutions = outputResolutions;
OverrideForFaceImages = overrideForFaceImages;
OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages;
OverrideForResizeImages = overrideForResizeImages;
PersonBirthdayFirstYear = personBirthdayFirstYear;
PersonBirthdayFormat = personBirthdayFormat;
PersonKeyFormat = personKeyFormat;
PredictorModelName = predictorModelName;
PropertiesChangedForDistance = propertiesChangedForDistance;
PropertiesChangedForFaces = propertiesChangedForFaces;
PropertiesChangedForIndex = propertiesChangedForIndex;
PropertiesChangedForMetadata = propertiesChangedForMetadata;
PropertiesChangedForResize = propertiesChangedForResize;
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance;
RangeFaceAreaPermilleTolerance = rangeFaceAreaPermilleTolerance;
RangeFaceConfidence = rangeFaceConfidence;
RangeDistanceTolerance = rangeDistanceTolerance;
RetryImagesWithoutAFace = retryImagesWithoutAFace;
Reverse = reverse;
SaveFaceDistancesForOutputResolutions = saveFaceDistancesForOutputResolutions;
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
SaveMappedForOutputResolutions = saveMappedForOutputResolutions;
SaveNotMappedForOutputResolutions = saveNotMappedForOutputResolutions;
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
SaveResizedSubfiles = saveResizedSubfiles;
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
SkipSearch = skipSearch;
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
SortingMaximumPerKey = sortingMaximumPerKey;
SortingMinimumToUseSigma = sortingSigma;
TestDistanceResults = testDistanceResults;
ValidResolutions = validResolutions;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
public void SetAndUpdate(Property.Models.Configuration configuration, int? numberOfJitters, int? numberOfTimesToUpsample, string? modelName, string? predictorModelName)
{
_PropertyConfiguration = configuration;
_PropertyConfiguration.Update(numberOfJitters, numberOfTimesToUpsample, modelName, predictorModelName);
}
}