Пример #1
0
 protected override bool CheckLocation(int x, int y)
 {
     if ((x >= _sl) && (y >= _st) && (x < _sr) && (y < _sb) &&
         BitmapHelper.CompareBitmapLocked(_searchOnData, _searchForData, x, y, _tolerance))
     {
         var num = x + _searchFor.Width;
         while ((num < _sr) &&
                BitmapHelper.CompareBitmapLocked(_searchOnData, _searchForData, num, y, _tolerance))
         {
             num += _searchFor.Width;
         }
         var num2 = x - _searchFor.Width;
         while ((num2 >= _sl) &&
                BitmapHelper.CompareBitmapLocked(_searchOnData, _searchForData, num2, y, _tolerance))
         {
             num2 -= _searchFor.Width;
         }
         var r = Rectangle.FromLTRB(num2 + _searchFor.Width, y, num, y + _searchForData.Height);
         if (r.Width / _searchFor.Width >= _minLength)
         {
             MaskRectangle(r);
             _result.Add(r);
             return(true);
         }
     }
     return(false);
 }
 protected virtual bool CheckLocation(int cx, int cy)
 {
     if ((cx >= _sl) && (cy >= _st) && (cx < _sr) && (cy < _sb) &&
         BitmapHelper.CompareBitmapLocked(_searchOnData, _searchForData, cx, cy, _tolerance))
     {
         var r = new Rectangle(cx, cy, _searchForData.Width, _searchForData.Height);
         MaskRectangle(r);
         _result.Add(r);
         return(true);
     }
     return(false);
 }
Пример #3
0
            protected Rectangle ExpandToRight(Rectangle rect)
            {
                var rectangle = rect;
                var num       = rect.Right - _topRightData.Width + 1;
                var y         = rect.Y;
                var num3      = rect.Bottom - _bottomRightData.Height;

                for (var i = num; i < _sr; i++)
                {
                    if (!BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, i, y, _tolerance) ||
                        !BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, i, num3, _tolerance))
                    {
                        return(rectangle);
                    }
                    rectangle.Width++;
                }
                return(rectangle);
            }
Пример #4
0
            protected Rectangle ExpandToBottom(Rectangle rect)
            {
                var rectangle = rect;
                var x         = rect.X;
                var num2      = rect.Right - _bottomRightData.Width;
                var num3      = rect.Bottom - _bottomRightData.Height + 1;

                for (var i = num3; i < _sb; i++)
                {
                    if (!BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, x, i, _tolerance) ||
                        !BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, num2, i, _tolerance))
                    {
                        return(rectangle);
                    }
                    rectangle.Height++;
                }
                return(rectangle);
            }
Пример #5
0
            protected Rectangle ExpandToTop(Rectangle rect)
            {
                var rectangle = rect;
                var x         = rect.X;
                var num2      = rect.Right - _topRightData.Width;
                var num3      = rect.Y - 1;

                for (var i = num3; i >= _st; i--)
                {
                    if (!BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, x, i, _tolerance) ||
                        !BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, num2, i, _tolerance))
                    {
                        return(rectangle);
                    }
                    rectangle.Y--;
                    rectangle.Height++;
                }
                return(rectangle);
            }
Пример #6
0
            protected Rectangle ExpandToLeft(Rectangle rect)
            {
                var rectangle = rect;
                var num       = rect.X - 1;
                var y         = rect.Y;
                var num3      = rect.Bottom - _bottomLeftData.Height;

                for (var i = num; i >= _sl; i--)
                {
                    if (!BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, i, y, _tolerance) ||
                        !BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, i, num3, _tolerance))
                    {
                        return(rectangle);
                    }
                    rectangle.X--;
                    rectangle.Width++;
                }
                return(rectangle);
            }
Пример #7
0
            protected override bool CheckLocation(int x, int y)
            {
                if ((x >= _sl) && (y >= _st) && (x < _sr) && (y < _sb))
                {
                    switch (_startCorner)
                    {
                    case 0:
                        if (BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, x, y, _tolerance))
                        {
                            for (var i = x + _topLeft.Width; i < _sr; i++)
                            {
                                if (BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, i, y, _tolerance))
                                {
                                    for (var j = y + _topLeft.Height; j < _sb; j++)
                                    {
                                        if (
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, i, j,
                                                                             _tolerance) &&
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, x, j,
                                                                             _tolerance))
                                        {
                                            var rectangle =
                                                Expand(Rectangle.FromLTRB(x, y, i + _bottomRight.Width,
                                                                          j + _bottomRight.Height));
                                            _result.Add(rectangle);
                                            rectangle.Inflate(-1, -1);
                                            MaskRectangle(rectangle);
                                            return(true);
                                        }
                                    }
                                }
                            }
                        }
                        break;

                    case 1:
                        if (BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, x, y, _tolerance))
                        {
                            for (var k = y + _topRight.Height; k < _sb; k++)
                            {
                                if (BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, x, k,
                                                                     _tolerance))
                                {
                                    for (var m = x - _bottomLeft.Width; m >= _sl; m--)
                                    {
                                        if (
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, m, k,
                                                                             _tolerance) &&
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, m, y,
                                                                             _tolerance))
                                        {
                                            var rectangle2 =
                                                Expand(Rectangle.FromLTRB(m, y, x + _topRight.Width,
                                                                          k + _bottomRight.Height));
                                            _result.Add(rectangle2);
                                            rectangle2.Inflate(-1, -1);
                                            MaskRectangle(rectangle2);
                                            return(true);
                                        }
                                    }
                                }
                            }
                        }
                        break;

                    case 2:
                        if (BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, x, y, _tolerance))
                        {
                            for (var n = y - _topLeft.Height; n >= _st; n--)
                            {
                                if (BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, x, n, _tolerance))
                                {
                                    for (var num6 = x + _topLeft.Width; num6 < _sr; num6++)
                                    {
                                        if (
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, num6, n,
                                                                             _tolerance) &&
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, num6,
                                                                             y, _tolerance))
                                        {
                                            var rectangle3 =
                                                Expand(Rectangle.FromLTRB(x, n, num6 + _topRight.Width,
                                                                          y + _bottomLeft.Height));
                                            _result.Add(rectangle3);
                                            rectangle3.Inflate(-1, -1);
                                            MaskRectangle(rectangle3);
                                            return(true);
                                        }
                                    }
                                }
                            }
                        }
                        break;

                    case 3:
                        if (BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomRightData, x, y, _tolerance))
                        {
                            for (var num7 = x - _bottomLeft.Width; num7 >= _sl; num7--)
                            {
                                if (BitmapHelper.CompareBitmapLocked(_searchOnData, _bottomLeftData, num7, y,
                                                                     _tolerance))
                                {
                                    for (var num8 = y - _topLeft.Height; num8 >= _st; num8--)
                                    {
                                        if (
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _topLeftData, num7, num8,
                                                                             _tolerance) &&
                                            BitmapHelper.CompareBitmapLocked(_searchOnData, _topRightData, x, num8,
                                                                             _tolerance))
                                        {
                                            var rectangle4 =
                                                Expand(Rectangle.FromLTRB(num7, num8, x + _bottomRight.Width,
                                                                          y + _bottomRight.Height));
                                            _result.Add(rectangle4);
                                            rectangle4.Inflate(-1, -1);
                                            MaskRectangle(rectangle4);
                                            return(true);
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    }
                }
                return(false);
            }