int imPaletteFindNearest(const long* palette, int palette_count, long color) { assert(palette); assert(palette_count); int lSqrDiff, lBestDiff = (unsigned int)-1; int pIndex = -1; imbyte red1, green1, blue1; imColorDecode(&red1, &green1, &blue1, color); for (int lIndex = 0; lIndex < palette_count; lIndex++, palette++) { if (color == *palette) return lIndex; imbyte red2, green2, blue2; imColorDecode(&red2, &green2, &blue2, *palette); lSqrDiff = iSqr(red1 - red2) + iSqr(green1 - green2) + iSqr(blue1 - blue2); if (lSqrDiff < lBestDiff) { lBestDiff = lSqrDiff; pIndex = lIndex; } } return pIndex; }
void mostEqualDivisors(short n, short& x, short& y) { short i; i = iSqr( n ); if( n % i != 0 ) if( n % (i+1) == 0 ) i++; if( i < (n/i) ) i = n/i; x = n/i; y = i; }