static gint8 get_bgcol(gint line, guint8 type) { guint32 min_d, d, color_index, x, bg_red, bg_green, bg_blue, color_r, color_g, color_b; GimpRGB bgcolor; if(!gimp_context_get_background(&bgcolor)) return 0; printf("bg color is (%u, %u, %u).\n", bgcolor.r, bgcolor.g, bgcolor.b); min_d = 99999999; /* insanely high to make sure d is never higher. */ color_index = 0; bg_red = bgcolor.r/16777216; /* Convert 32 bit gimp values to normal 8-bit values */ bg_green = bgcolor.g/16777216; bg_blue = bgcolor.b/16777216; printf("in 8-bit notation, (%u, %u, %u).\n", bg_red, bg_green, bg_blue); for (x = 0; x<16; x++) { color_r = vicpalette[x*3]; color_g = vicpalette[x*3+1]; color_b = vicpalette[x*3+2]; d = sqrt( pow(bg_red - color_r, 2) + pow(bg_green - color_g, 2) + pow (bg_blue - color_b, 2) ); printf("Checked color %d = %u, %u, %u. Error is %u.\n", x, color_r, color_g, color_b, d); if(d < min_d) { min_d = d; color_index = x; } } printf("Closest match is %u.\n\n", color_index); return color_index; }