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); }
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); }
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); }
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); }
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); }
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); }