R_API void r_cons_pal_update_event() { Sdb *db = sdb_new0 (); int i, n = 0; char **color; /* Compute cons->pal values */ for (i = 0; keys[i].name; i++) { RColor *rcolor = RCOLOR_AT (i); color = COLOR_AT (i); // Color is dynamically allocated, needs to be freed if (*color) { R_FREE (*color); } *color = r_cons_rgb_str (NULL, 0, rcolor); const char *rgb = sdb_fmt ("rgb:%02x%02x%02x", rcolor->r, rcolor->g, rcolor->b); sdb_set (db, rgb, "1", 0); } SdbList *list = sdb_foreach_list (db, true); SdbListIter *iter; SdbKv *kv; r_cons_rainbow_free (); r_cons_rainbow_new (list->length); ls_foreach (list, iter, kv) { r_cons_singleton ()->pal.rainbow[n++] = strdup (kv->key); }
static void cons_pal_update_event(RConsContext *ctx) { Sdb *db = sdb_new0 (); int i, n = 0; char **color; /* Compute cons->pal values */ for (i = 0; keys[i].name; i++) { RColor *rcolor = (RColor *) (((ut8 *) &(ctx->cpal)) + keys[i].coff); color = (char **) (((ut8 *) &(ctx->pal)) + keys[i].off); // Color is dynamically allocated, needs to be freed if (*color) { R_FREE (*color); } *color = r_cons_rgb_str_mode (ctx->color, NULL, 0, rcolor); const char *rgb = sdb_fmt ("rgb:%02x%02x%02x", rcolor->r, rcolor->g, rcolor->b); sdb_set (db, rgb, "1", 0); } SdbList *list = sdb_foreach_list (db, true); SdbListIter *iter; SdbKv *kv; r_cons_rainbow_free (ctx); r_cons_rainbow_new (ctx, list->length); ls_foreach (list, iter, kv) { ctx->pal.rainbow[n++] = strdup (sdbkv_key (kv)); }