Example #1
0
int imPaletteFindColor(const long* palette, int palette_count, long color, unsigned char tol)
{
  assert(palette);
  assert(palette_count);

  /* Divides in two section for faster results when Tolerance is 0.*/
  if (tol == 0)
  {
    for (int lIndex = 0; lIndex < palette_count; lIndex++, palette++)
    {
      if (color == *palette)
        return lIndex;
    }
  }
  else
  {
    imbyte red1, green1, blue1;
    imColorDecode(&red1, &green1, &blue1, color);

    for (int lIndex = 0; lIndex < palette_count; lIndex++, palette++)
    {
      imbyte red2, green2, blue2;
      imColorDecode(&red2, &green2, &blue2, *palette);

      if (iAbs(red1 - red2) < tol &&
          iAbs(green1 - green2) < tol &&
          iAbs(blue1 - blue2) < tol)
      {
        return lIndex;
      }
    }
  }

  return -1;
}
Example #2
0
int distance(const Position pos1, const Position pos2) {
	return iAbs(pos2.x - pos1.x) + iAbs(pos2.y - pos1.y);
}