Exemplo n.º 1
0
int
tty_try_alloc_color_pair2 (const char *fg, const char *bg, const char *attrs,
                           gboolean is_temp_color)
{
    gchar *color_pair;
    tty_color_pair_t *mc_color_pair;
    int ifg, ibg, attr;

    if (fg == NULL || !strcmp (fg, "base"))
        fg = tty_color_defaults__fg;
    if (bg == NULL || !strcmp (bg, "base"))
        bg = tty_color_defaults__bg;
    if (attrs == NULL || !strcmp (attrs, "base"))
        attrs = tty_color_defaults__attrs;

    ifg = tty_color_get_index_by_name (fg);
    ibg = tty_color_get_index_by_name (bg);
    attr = tty_attr_get_bits (attrs);

    color_pair = g_strdup_printf ("%d.%d.%d", ifg, ibg, attr);
    if (color_pair == NULL)
        return 0;

    mc_color_pair =
        (tty_color_pair_t *) g_hash_table_lookup (mc_tty_color__hashtable, (gpointer) color_pair);

    if (mc_color_pair != NULL)
    {
        g_free (color_pair);
        return mc_color_pair->pair_index;
    }

    mc_color_pair = g_try_new0 (tty_color_pair_t, 1);
    if (mc_color_pair == NULL)
    {
        g_free (color_pair);
        return 0;
    }

    mc_color_pair->is_temp = is_temp_color;
    mc_color_pair->ifg = ifg;
    mc_color_pair->ibg = ibg;
    mc_color_pair->attr = attr;
    mc_color_pair->pair_index = tty_color_get_next__color_pair_number ();

    tty_color_try_alloc_pair_lib (mc_color_pair);

    g_hash_table_insert (mc_tty_color__hashtable, (gpointer) color_pair, (gpointer) mc_color_pair);

    return mc_color_pair->pair_index;
}
Exemplo n.º 2
0
int
tty_try_alloc_color_pair2 (const char *fg, const char *bg, gboolean is_temp_color)
{
    gchar *color_pair;
    tty_color_pair_t *mc_color_pair;
    const char *c_fg, *c_bg;

    if (fg == NULL)
        fg = tty_color_defaults__fg;

    if (bg == NULL) {
        bg = tty_color_defaults__bg;
    }
    c_fg = tty_color_get_valid_name (fg);
    c_bg = tty_color_get_valid_name (bg);

    color_pair = g_strdup_printf ("%s.%s", c_fg, c_bg);
    if (color_pair == NULL)
        return 0;

    mc_color_pair =
        (tty_color_pair_t *) g_hash_table_lookup (mc_tty_color__hashtable, (gpointer) color_pair);

    if (mc_color_pair != NULL) {
        g_free (color_pair);
        return mc_color_pair->pair_index;
    }

    mc_color_pair = g_new0 (tty_color_pair_t, 1);
    if (mc_color_pair == NULL) {
        g_free (color_pair);
        return 0;
    }

    mc_color_pair->is_temp = is_temp_color;
    mc_color_pair->cfg = c_fg;
    mc_color_pair->cbg = c_bg;
    mc_color_pair->ifg = tty_color_get_index_by_name (c_fg);
    mc_color_pair->ibg = tty_color_get_index_by_name (c_bg);
    mc_color_pair->pair_index = tty_color_get_next__color_pair_number ();

    tty_color_try_alloc_pair_lib (mc_color_pair);

    g_hash_table_insert (mc_tty_color__hashtable, (gpointer) color_pair, (gpointer) mc_color_pair);

    return mc_color_pair->pair_index;
}