version 1.10, 2015/06/05 22:33:39 |
version 1.11, 2015/06/05 22:50:27 |
|
|
{ |
{ |
struct colour_rgb rgb = { .r = r, .g = g, .b = b }, *found; |
struct colour_rgb rgb = { .r = r, .g = g, .b = b }, *found; |
u_int distance, lowest, colour, i; |
u_int distance, lowest, colour, i; |
|
int dr, dg, db; |
|
|
found = bsearch(&rgb, colour_to_256, nitems(colour_to_256), |
found = bsearch(&rgb, colour_to_256, nitems(colour_to_256), |
sizeof colour_to_256[0], colour_cmp_rgb); |
sizeof colour_to_256[0], colour_cmp_rgb); |
|
|
colour = 16; |
colour = 16; |
lowest = UINT_MAX; |
lowest = UINT_MAX; |
for (i = 0; i < 240; i++) { |
for (i = 0; i < 240; i++) { |
r = colour_from_256[i].r - rgb.r; |
dr = (int)colour_from_256[i].r - r; |
g = colour_from_256[i].g - rgb.g; |
dg = (int)colour_from_256[i].g - g; |
b = colour_from_256[i].b - rgb.b; |
db = (int)colour_from_256[i].b - b; |
|
|
distance = r * r + g * g + b * b; |
distance = dr * dr + dg * dg + db * db; |
if (distance < lowest) { |
if (distance < lowest) { |
lowest = distance; |
lowest = distance; |
colour = 16 + i; |
colour = 16 + i; |