/**************************************************************************** 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; }
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); }