-static gint image_sim_channel_eq_sort_cb(gconstpointer a, gconstpointer b)
-{
- auto pa = static_cast<const gint *>(a);
- auto pb = static_cast<const gint *>(b);
- if (pa[1] < pb[1]) return -1;
- if (pa[1] > pb[1]) return 1;
- return 0;
-}
-
-static void image_sim_channel_equal(guint8 *pix, gint len)
-{
- gint *buf;
- gint i;
- gint p;
-
- buf = g_new0(gint, len * 2);
-
- p = 0;
- for (i = 0; i < len; i++)
- {
- buf[p] = i;
- p++;
- buf[p] = static_cast<gint>(pix[i]);
- p++;
- }
-
- qsort(buf, len, sizeof(gint) * 2, image_sim_channel_eq_sort_cb);
-
- p = 0;
- for (i = 0; i < len; i++)
- {
- gint n;
-
- n = buf[p];
- p += 2;
- pix[n] = static_cast<guint8>(255 * i / len);
- }
-
- g_free(buf);
-}
-