Function ControlledColorSearch(x,y,Color,x1,y1,x2,y2,Tol,xc,yc:integer;flip:boolean;Wind:Longint):boolean; stdcall;
var
Windc:HDC;
color11:Tcolor;
varint:Tpoint;
begin
Windc:=GetDc(Wind);
if x1 > x2 then
VarInt.x := 1
else if y1 = y2 then
varint.y := 0
else
VarInt.x := -1;
if y1 > y2 then
VarInt.y := 1
else if y1 = y2 then
varint.y := 0
else
VarInt.y := -1;
if (xc=0) and (yc=0) then
begin
X:=x1 + VarInt.x;
y:=y1 + VarInt.y;
end
else
begin
if xc > -1 then
if (flip=true) and (x=x2) then
x := x1 + varint.x
else x := xc;
if yc > -1 then
if (flip = False) and (y = y2) then
y := y1 + VarInt.Y
else y := yc;
end;
if (flip = False) then
begin
repeat
if not(y = y2) and not(x = x2) then
begin
if x1 < x2 then
x :=x + 1
else if x1 > x2 then
x := x - 1;
Color11:=GetPixel(windc,x,y);
if (SimilarColors(color,color11,Tol) = true) then
begin
result:=True;
xc:=x;
yc:=y;
exit;
end;
end;
repeat
if not(y = y2) then
begin
if y1 < y2 then
Y := y + 1
else
Y := y - 1;
Color11 := GetPixel(windc,x,y);
if (SimilarColors(color,color11,Tol) = true) then
begin
result:=True;
xc:=x;
yc:=y;
exit;
end;
end
else
begin
y:=y1;
break;
end;
until (y = y2) or (result = true);
until (x = x2) or (result = true);
end;
if (flip = True) then
begin
repeat
if not(y = y2) and not(x = x2) then
begin
if y1 < y2 then
y :=y + 1
else if y1 > y2 then
y := y - 1;
Color11:=GetPixel(windc,x,y);
if (SimilarColors(color,color11,Tol) = true) then
begin
result:=True;
xc:=x;
yc:=y;
exit;
end;
end;
repeat
if not(x = y2) then
begin
if x1 < x2 then
x := x + 1
else
x := x - 1;
Color11 := GetPixel(windc,x,y);
if (SimilarColors(color,color11,Tol) = true) then
begin
result:=True;
xc:=x;
yc:=y;
exit;
end;
end
else
begin
x:=x1;
break;
end;
until (x = y2) or(result = true);
until (y = x2) or (result = true);
end;
end;