53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Drawing;
|
|
|
|
namespace Test_Merge
|
|
{
|
|
public class DriverNameWindow : Window
|
|
{
|
|
public static Random rnd = new Random();
|
|
public DriverNameWindow(Bitmap image, Rectangle bounds, bool generateEngine = true) : base(image, bounds,generateEngine)
|
|
{
|
|
Name = "Name";
|
|
}
|
|
/// <summary>
|
|
/// Decodes using OCR wich driver name is in the image
|
|
/// </summary>
|
|
/// <param name="DriverList"></param>
|
|
/// <returns>The driver name in string</returns>
|
|
public override async Task<object> DecodePng(List<string> DriverList)
|
|
{
|
|
string result = "";
|
|
result = await GetStringFromPng(WindowImage, Engine);
|
|
|
|
if (!IsADriver(DriverList, result))
|
|
{
|
|
//I put everything in uppercase to try to lower the chances of bad answers
|
|
result = FindClosestMatch(DriverList.ConvertAll(d => d.ToUpper()), result.ToUpper());
|
|
}
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// Verifies that the name found in the OCR is a valid name
|
|
/// </summary>
|
|
/// <param name="driverList"></param>
|
|
/// <param name="potentialDriver"></param>
|
|
/// <returns>If ye or no the driver exists</returns>
|
|
private static bool IsADriver(List<string> driverList, string potentialDriver)
|
|
{
|
|
bool result = false;
|
|
//I cant use drivers.Contains because it has missmatched cases and all
|
|
foreach (string name in driverList)
|
|
{
|
|
if (name.ToUpper() == potentialDriver.ToUpper())
|
|
result = true;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|