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

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

    int TestStatic_GetAreaPermille(int faceAreaPermille, Models.Location location, Models.OutputResolution outputResolution)
        => GetAreaPermille(faceAreaPermille, location, outputResolution);
    static int GetAreaPermille(int faceAreaPermille, Models.Location location, Models.OutputResolution outputResolution)
        => Mapping.GetAreaPermille(faceAreaPermille, 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.GetNormalizedRectangle(location, locationDigits, outputResolution))}";

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

}