public bool TrySearchText(string textToSearch, string jsonResult, IScreen screen, ScreenSearchArea searchArea, out IScreenArea area) { if (string.IsNullOrEmpty(textToSearch)) { throw new ArgumentNullException(); } area = null; IAzureRecognizeTextResponse textResponse = Deserialize(jsonResult); if (textResponse.RecognitionResult?.Lines?.Length == 0) { return(false); } bool isLine = textToSearch.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Length > 1; foreach (IAzureLine line in textResponse.RecognitionResult?.Lines) { (int X, int Y) = line.GetArea().GetCentralPoint(); if (isLine) { if (line.Text.IndexOf(textToSearch, StringComparison.OrdinalIgnoreCase) >= 0 && screen.IsSearchAreaMatch(searchArea, (X, Y))) { area = line.GetArea(); return(true); } } else if (line.Words.Length > 0) { IAzureWord word = Array.Find(line.Words, x => string.Equals(x.Text, textToSearch, StringComparison.OrdinalIgnoreCase)); if (word != null) { (int X2, int Y2) = word.GetArea().GetCentralPoint(); if (screen.IsSearchAreaMatch(searchArea, (X2, Y2))) { area = word.GetArea(); return(true); } } } } return(false); }
public bool IsSearchAreaMatch(ScreenSearchArea screenSearchArea, (int X, int Y) location)