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_GetAreaPermyriad(int faceAreaPermyriad, int height, Models.Location location, int width)
        => GetAreaPermyriad(faceAreaPermyriad, height, location, width);
    static int GetAreaPermyriad(int faceAreaPermyriad, int height, Models.Location location, int width)
        => Mapping.GetAreaPermyriad(faceAreaPermyriad, location.Bottom, height, location.Left, location.Right, location.Top, width);

    int TestStatic_GetAreaPermyriad(int faceAreaPermyriad, int bottom, int height, int left, int right, int top, int width)
        => GetAreaPermyriad(faceAreaPermyriad, bottom, height, left, right, top, width);
    static int GetAreaPermyriad(int faceAreaPermyriad, int bottom, int height, int left, int right, int top, int width)
        => Mapping.GetAreaPermyriad(faceAreaPermyriad, bottom, height, left, right, top, width);

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

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

    string TestStatic_GetDeterministicHashCodeKey(int id, int locationDigits)
        => GetDeterministicHashCodeKey(id, locationDigits);
    static string GetDeterministicHashCodeKey(int id, int locationDigits)
        => $"{id}.{ILocation.GetLeftPadded(locationDigits, ILocation.GetWholePercentages(locationDigits))}";

    (int?, int?) TestStatic_GetConverted(string facesFileNameExtension, string file) =>
        GetConverted(facesFileNameExtension, file);
    static (int?, int?) GetConverted(string facesFileNameExtension, string file) =>
        Mapping.GetConverted(facesFileNameExtension, file);

}