/************************************************************************** Alert the user to an important event. **************************************************************************/ void gui_dialog_alert(struct gui_dialog *dlg) { fc_assert_ret(NULL != dlg); switch (dlg->type) { case GUI_DIALOG_WINDOW: break; case GUI_DIALOG_TAB: { GtkNotebook *notebook = GTK_NOTEBOOK(dlg->v.tab.notebook); gint current, n; current = gtk_notebook_get_current_page(notebook); n = gtk_notebook_page_num(notebook, dlg->vbox); if (current != n) { GtkWidget *label = dlg->v.tab.label; GdkColormap *cmap = gtk_widget_get_default_colormap(); GdkColor color = {.red = 0, .green = 0, .blue = 255 << 8}; gdk_rgb_find_color(cmap, &color); gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, &color); } } break; } }
static void _vte_pango_x_draw_text(struct _vte_draw *draw, struct _vte_draw_text_request *requests, gsize n_requests, GdkColor *color, guchar alpha) { Display *display; GC gc; struct _vte_pango_x_data *data; char buf[VTE_UTF8_BPC]; gsize i, length; GdkColor wcolor; data = (struct _vte_pango_x_data*) draw->impl_data; wcolor = *color; gdk_rgb_find_color(gdk_drawable_get_colormap(draw->widget->window), &wcolor); gdk_gc_set_foreground(data->gc, &wcolor); display = gdk_x11_drawable_get_xdisplay(draw->widget->window); gc = gdk_x11_gc_get_xgc(data->gc); for (i = 0; i < n_requests; i++) { length = g_unichar_to_utf8(requests[i].c, buf); pango_layout_set_text(data->layout, buf, length); pango_x_render_layout(display, data->drawable, gc, data->layout, requests[i].x - data->x_offs, requests[i].y - data->y_offs); } }
/**************************************************************************** Allocate a color (adjusting it for our colormap if necessary on paletted systems) and return a pointer to it. ****************************************************************************/ struct color *color_alloc(int r, int g, int b) { struct color *color = fc_malloc(sizeof(*color)); GdkColormap *cmap = gtk_widget_get_default_colormap(); color->color.red = r << 8; color->color.green = g << 8; color->color.blue = b << 8; gdk_rgb_find_color(cmap, &color->color); return color; }
GdkColor cl_gc_set_fg_color_shade (GdkGC *gc, GdkColormap *colormap, GdkColor *from, gfloat s) { GdkColor tmp_color; GdkGCValues values; shade (from, &tmp_color, s); gdk_gc_get_values (gc, &values); gdk_rgb_find_color (colormap, &tmp_color); gdk_gc_set_foreground (gc, &tmp_color); return values.foreground; }
gboolean backend_gtk_init( GtkWidget *widget, unicap_format_t *format, gpointer *_data, GError **err ) { struct backend_data *data; int i; GdkGCValues values; GdkColormap *colormap; data = g_new0( struct backend_data, 1 ); g_memmove( &data->format, format, sizeof( unicap_format_t ) ); for( i = 0; i < NUM_BUFFERS; i++ ) { data->image_data[ i ] = g_malloc0( format->size.width * format->size.height * 3 ); g_assert( data->image_data ); } data->crop_x = 0; data->crop_y = 0; data->crop_w = format->size.width; data->crop_h = format->size.height; data->output_width = format->size.width; data->output_height = format->size.height; data->pixbuf = NULL; data->widget = widget; data->display = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display( widget ) ); *_data = data; sem_init( &data->sema, 0, 1 ); data->overlay_window = widget->window; values.foreground.red = 0; values.foreground.green = 0; values.foreground.blue = 0; colormap = gtk_widget_get_colormap( widget ); gdk_rgb_find_color( colormap, &values.foreground ); data->overlay_gc = gdk_gc_new_with_values( data->overlay_window, &values, GDK_GC_FOREGROUND ); gdk_window_show( data->overlay_window ); return TRUE; }
static void _vte_pango_x_fill_rectangle(struct _vte_draw *draw, gint x, gint y, gint width, gint height, GdkColor *color, guchar alpha) { struct _vte_pango_x_data *data; GdkColor wcolor; data = (struct _vte_pango_x_data*) draw->impl_data; wcolor = *color; gdk_rgb_find_color(gdk_drawable_get_colormap(draw->widget->window), &wcolor); gdk_gc_set_foreground(data->gc, &wcolor); gdk_draw_rectangle(draw->widget->window, data->gc, TRUE, x, y, width, height); }
static void read_color (GConfClient *client, const char *key, GdkColor *color) { gchar *tmp; tmp = gconf_client_get_string (client, key, NULL); if (tmp != NULL) { if (!gdk_color_parse (tmp, color)) gdk_color_parse ("black", color); g_free (tmp); } else { gdk_color_parse ("black", color); } gdk_rgb_find_color (gdk_rgb_get_colormap (), color); }
static void _vte_pango_x_start(struct _vte_draw *draw) { struct _vte_pango_x_data *data; Display *display; GdkDrawable *drawable; int x_offs, y_offs; data = (struct _vte_pango_x_data*) draw->impl_data; display = gdk_x11_drawable_get_xdisplay(draw->widget->window); if (data->ctx != NULL) { g_object_unref(data->ctx); } data->ctx = pango_x_get_context(display); if (data->layout != NULL) { g_object_unref(data->layout); } data->layout = pango_layout_new(data->ctx); if (data->font != NULL) { pango_layout_set_font_description(data->layout, data->font); } if (data->gc != NULL) { g_object_unref(data->gc); } data->gc = gdk_gc_new(draw->widget->window); gdk_rgb_find_color(gdk_drawable_get_colormap(draw->widget->window), &data->color); gdk_window_get_internal_paint_info(draw->widget->window, &drawable, &x_offs, &y_offs); data->drawable = gdk_x11_drawable_get_xid(drawable); data->x_offs = x_offs; data->y_offs = y_offs; }