namespace View_by_Distance.Shared.Models.Stateless.Methods;

public interface IMapping
{ // ...

    (string?, string?, string?, bool?) TestStatic_GetSegments(string facesFileNameExtension, string fileName)
        => GetSegments(facesFileNameExtension, fileName);
    static (string?, string?, string?, bool?) GetSegments(string facesFileNameExtension, string fileName)
        => Mapping.GetSegments(facesFileNameExtension, fileName);

    int TestStatic_GetAreaPermille(int height, Models.Location location, int width)
        => GetAreaPermille(height, location, width);
    static int GetAreaPermille(int height, Models.Location location, int width)
        => Mapping.GetAreaPermille(location.Bottom, height, location.Left, location.Right, location.Top, width);

    int TestStatic_GetAreaPermille(int bottom, int height, int left, int right, int top, int width)
        => GetAreaPermille(bottom, height, left, right, top, width);
    static int GetAreaPermille(int bottom, int height, int left, int right, int top, int width)
        => Mapping.GetAreaPermille(bottom, height, left, right, top, width);

    int TestStatic_GetAreaPermille(Models.Location location, OutputResolution outputResolution)
        => GetAreaPermille(location, outputResolution);
    static int GetAreaPermille(Models.Location location, OutputResolution outputResolution)
        => Mapping.GetAreaPermille(location.Bottom, outputResolution.Height, location.Left, location.Right, location.Top, outputResolution.Width);

    string TestStatic_GetDeterministicHashCodeKey(int id, Models.Location location, int locationDigits, int locationFactor, OutputResolution outputResolution)
        => GetDeterministicHashCodeKey(id, location, locationDigits, locationFactor, outputResolution);
    static string GetDeterministicHashCodeKey(int id, Models.Location location, int locationDigits, int locationFactor, OutputResolution outputResolution)
        => $"{id}.{ILocation.GetLeftPadded(locationDigits, ILocation.GetNormalizedPixelPercentage(location, locationDigits, locationFactor, outputResolution))}";

    (int?, int?, List<Models.Mapping>?) TestStatic_GetReversedDeterministicHashCodeKey(string facesFileNameExtension, string file) =>
        GetReversedDeterministicHashCodeKey(facesFileNameExtension, file);
    static (int?, int?, List<Models.Mapping>?) GetReversedDeterministicHashCodeKey(string facesFileNameExtension, string file) =>
        Mapping.GetReversedDeterministicHashCodeKey(facesFileNameExtension, false, new(), file);

    (int?, int?, List<Models.Mapping>?) TestStatic_GetReversedDeterministicHashCodeKey(string facesFileNameExtension, bool idToMappingCollectionAny, Dictionary<int, List<Models.Mapping>> idToMappingCollection, string file) =>
        GetReversedDeterministicHashCodeKey(facesFileNameExtension, idToMappingCollectionAny, idToMappingCollection, file);
    static (int?, int?, List<Models.Mapping>?) GetReversedDeterministicHashCodeKey(string facesFileNameExtension, bool idToMappingCollectionAny, Dictionary<int, List<Models.Mapping>> idToMappingCollection, string file) =>
        Mapping.GetReversedDeterministicHashCodeKey(facesFileNameExtension, idToMappingCollectionAny, idToMappingCollection, file);

}