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);
        }
Пример #2
0
 public bool IsSearchAreaMatch(ScreenSearchArea screenSearchArea, (int X, int Y) location)