Public feed
#376580
function ControlledColorSearch(var x, y:integer; Color, x1, y1, x2, y2, Tol: Integer; Flip: Boolean; Wnd: Hwnd): Boolean; stdcall;
var
WndDC: HDC;
xx, yy: Integer;
VarInt:Tpoint;
Begin
WndDC := GetDC(Wnd);
if x1>x2 then varint.X := -1
else varint.x := 1;
if y1>y2 then varint.y := -1
else varint.Y := 1;
if (x<>0) and (y<>0) then
begin
if flip = False then
begin
if (y = y2) and (x<>x2) then
begin
yy:=y1;
xx:=x+varint.x;
end
else if (y=y2) and (x=x2) then
begin
result:=False;
exit;
end
else if y<>y2 then
YY:=y+varint.y;
end
else
begin
if (x = x2) and (y<>y2) then
begin
xx:=x1;
yy:=y+varint.y;
end
else if (x=x2) and (y=y2) then
begin
result:=False;
exit;
end
else if x<>x2 then
xx:=x+varint.x;
end;
end
else begin
yy:=y1;
xx:=x1;
end;
if not Flip then
begin
for xx := x1 to x2 do
for yy := y1 to y2 do
if SimilarColors(Color, GetPixel(WndDC, x, y), Tol) then
begin
Result := True;
ReleaseDC(Wnd, WndDC);
x := xx;
y := yy;
exit;
end;
Result := False;
x := -1;
y := -1;
ReleaseDC(Wnd, WndDC);
end
else if flip = true then
begin
for yy := y1 to y2 do
for xx := x1 to x2 do
if SimilarColors(Color, GetPixel(WndDC, x, y), Tol) then
begin
Result := True;
ReleaseDC(Wnd, WndDC);
x := xx;
y := yy;
exit;
end;
Result := False;
x := -1;
y := -1;
ReleaseDC(Wnd, WndDC);
end;
end;