rendered paste bodypublic XY findColorSpiral(Rectangle where, IColor color, int tol)
{
IMap client = getClient(where);
int direction = 0;
int length = 1;
int centerx = ((int)client.w) / 2;
int centery = ((int)client.h) / 2;
int x = centerx;
int y = centery;
if(tolerant(client.image[x][y], color, tol)) return new XY(where.x + x, where.y + y);
do
{
for(int i = 0; i < length; i++)
{
if(direction == 0) y = y - 1;
if(direction == 1) x = x + 1;
if(direction == 2) y = y + 1;
if(direction == 3) x = x - 1;
if(x > 0 && y > 0 && x < client.w && y < client.h)
if(tolerant(client.image[x][y], color, tol)) return new XY(where.x + x, where.y + y);
}
//SMMS(x, y);
direction = (direction + 1) % 4;
if((direction % 2) == 0 ) length = length + 1;
}while(!((x < 0) || (y < 0) || (x > client.w) || (y > client.h)));
if(x != -1 && y != -1) if(tolerant(client.image[x][y], color, tol)) return new XY(where.x + x, where.y + y);
return null;
}