예제 #1
0
/****************************************************************************
  Return the RGB color, allocating it if necessary.
****************************************************************************/
static struct color *ensure_color(struct rgbcolor *rgb)
{
  if (!rgb->color) {
    rgb->color = color_alloc(rgb->r, rgb->g, rgb->b);
  }
  return rgb->color;
}
예제 #2
0
static void create_colors(GtkWidget *top)
{
    GdkColormap *colormap;
    GdkColor **color_graph_real, **color_graph_stat,
             **color_atom, *color_grid;
    GdkGC **style_graph_real, **style_graph_stat,
          **style_atom, *style_grid;
    gint i;

    color_graph_real = (GdkColor **)
                       g_malloc(ATOM_STATES * sizeof(GdkColor *));
    style_graph_real = (GdkGC **)
                       g_malloc(ATOM_STATES * sizeof(GdkGC *));

    color_graph_stat = (GdkColor **)
                       g_malloc(ATOM_STATES * sizeof(GdkColor *));
    style_graph_stat = (GdkGC **)
                       g_malloc(ATOM_STATES * sizeof(GdkGC *));

    color_atom = (GdkColor **)
                 g_malloc(ATOM_STATES * sizeof(GdkColor *));
    style_atom = (GdkGC **)
                 g_malloc(ATOM_STATES * sizeof(GdkGC *));

    g_signal_connect_swapped(G_OBJECT(top),
                             "destroy",
                             G_CALLBACK(g_free),
                             color_graph_real);
    g_signal_connect_swapped(G_OBJECT(top), 
                             "destroy", 
                             G_CALLBACK(g_free),
                             style_graph_real);
    g_signal_connect_swapped(G_OBJECT(top), 
                             "destroy", 
                             G_CALLBACK(g_free),
                             color_graph_stat);
    g_signal_connect_swapped(G_OBJECT(top), 
                             "destroy", 
                             G_CALLBACK(g_free),
                             style_graph_stat);
    g_signal_connect_swapped(G_OBJECT(top), 
                             "destroy", 
                             G_CALLBACK(g_free),
                             color_atom);
    g_signal_connect_swapped(G_OBJECT(top), 
                             "destroy",
                             G_CALLBACK(g_free),
                             style_atom);


    colormap = gdk_colormap_get_system();

    for (;;) {
        i = 0;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0xff, 0x8d, 0x27);
        color_graph_stat[i] = color_alloc(colormap, 0xff, 0xc8, 0x00);
        color_atom[i] = color_alloc(colormap, 0xff, 0x8d, 0x27);

        i++;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0xc3, 0x00, 0x00);
        color_graph_stat[i] = color_alloc(colormap, 0xff, 0x50, 0x50);
        color_atom[i] = color_alloc(colormap, 0xc3, 0x00, 0x00);

        i++;
        color_graph_real[i] = color_alloc(colormap, 0x00, 0x64, 0x00);
        color_graph_stat[i] = color_alloc(colormap, 0x90, 0xee, 0x90);
        color_atom[i] = color_alloc(colormap, 0x00, 0x64, 0x00);

        i++;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0x00, 0x00, 0x8b);
        color_graph_stat[i] = color_alloc(colormap, 0xad, 0xd8, 0xe6);
        color_atom[i] = color_alloc(colormap, 0x00, 0x00, 0x8b);

        i++;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0x64, 0x00, 0x64);
        color_graph_stat[i] = color_alloc(colormap, 0xb0, 0x17, 0xae);
        color_atom[i] = color_alloc(colormap, 0x64, 0x00, 0x64);

        i++;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0x78, 0x2a, 0x2a);
        color_graph_stat[i] = color_alloc(colormap, 0xa5, 0x4f, 0x4f);
        color_atom[i] = color_alloc(colormap, 0x78, 0x2a, 0x2a);

        i++;
        if (i >= ATOM_STATES)
            break;
        color_graph_real[i] = color_alloc(colormap, 0x00, 0x00, 0x00);
        color_graph_stat[i] = color_alloc(colormap, 0x9a, 0x9a, 0x9a);
        color_atom[i] = color_alloc(colormap, 0x00, 0x00, 0x00);

        break;
    }

    for (i += 1; i < ATOM_STATES; i++) {
        color_graph_real[i] = color_alloc(colormap, rand(), rand(), rand());
        color_graph_stat[i] = color_alloc(colormap, rand(), rand(), rand());
        color_atom[i] = color_alloc(colormap, rand(), rand(), rand());
    }

    color_grid = color_alloc(colormap, 0xb1, 0xb1, 0xb1);

    for (i = 0; i < ATOM_STATES; i++) {
        style_graph_real[i] = gdk_gc_new(top->window);
        style_graph_stat[i] = gdk_gc_new(top->window);
        style_atom[i] = gdk_gc_new(top->window);

        gdk_gc_set_foreground(style_graph_real[i], color_graph_real[i]);
        gdk_gc_set_foreground(style_graph_stat[i], color_graph_stat[i]);
        gdk_gc_set_foreground(style_atom[i], color_atom[i]);
    }
    style_grid = gdk_gc_new(top->window);
    gdk_gc_set_foreground(style_grid, color_grid);

    g_object_set_data(G_OBJECT(top), "color_graph_real", color_graph_real);
    g_object_set_data(G_OBJECT(top), "style_graph_real", style_graph_real);
    g_object_set_data(G_OBJECT(top), "color_graph_stat", color_graph_stat);
    g_object_set_data(G_OBJECT(top), "style_graph_stat", style_graph_stat);
    g_object_set_data(G_OBJECT(top), "color_atom", color_atom);
    g_object_set_data(G_OBJECT(top), "style_atom", style_atom);
    g_object_set_data(G_OBJECT(top), "color_grid", color_grid);
    g_object_set_data(G_OBJECT(top), "style_grid", style_grid);
}