# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1326660373 0 # Node ID e39e9e67110de201ce81e683d5a48d7fe774e3b1 # Parent 46a2123ff57060dc61eabf1492bac4a14f0e2c99 Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs are now deprecated. Also some related font changes due to deprecation. diff -r 46a2123ff570 -r e39e9e67110d gtk3/dw.c --- a/gtk3/dw.c Sat Jan 14 19:05:56 2012 +0000 +++ b/gtk3/dw.c Sun Jan 15 20:46:13 2012 +0000 @@ -55,24 +55,32 @@ extern DWResources _resources; #endif -GdkColor _colors[] = -{ - { 0, 0x0000, 0x0000, 0x0000 }, /* 0 black */ - { 0, 0xbbbb, 0x0000, 0x0000 }, /* 1 red */ - { 0, 0x0000, 0xbbbb, 0x0000 }, /* 2 green */ - { 0, 0xaaaa, 0xaaaa, 0x0000 }, /* 3 yellow */ - { 0, 0x0000, 0x0000, 0xcccc }, /* 4 blue */ - { 0, 0xbbbb, 0x0000, 0xbbbb }, /* 5 magenta */ - { 0, 0x0000, 0xbbbb, 0xbbbb }, /* 6 cyan */ - { 0, 0xbbbb, 0xbbbb, 0xbbbb }, /* 7 white */ - { 0, 0x7777, 0x7777, 0x7777 }, /* 8 grey */ - { 0, 0xffff, 0x0000, 0x0000 }, /* 9 bright red */ - { 0, 0x0000, 0xffff, 0x0000 }, /* 10 bright green */ - { 0, 0xeeee, 0xeeee, 0x0000 }, /* 11 bright yellow */ - { 0, 0x0000, 0x0000, 0xffff }, /* 12 bright blue */ - { 0, 0xffff, 0x0000, 0xffff }, /* 13 bright magenta */ - { 0, 0x0000, 0xeeee, 0xeeee }, /* 14 bright cyan */ - { 0, 0xffff, 0xffff, 0xffff }, /* 15 bright white */ +/* ff = 255 = 1.0000 + * ee = 238 = 0.9333 + * cc = 204 = 0.8000 + * bb = 187 = 0.7333 + * aa = 170 = 0.6667 + * 77 = 119 = 0.4667 + * 00 = 0 = 0.0000 + */ +GdkRGBA _colors[] = +{ + { 0.0000, 0.0000, 0.0000, 1.0 }, /* 0 black */ + { 0.7333, 0.0000, 0.0000, 1.0 }, /* 1 red */ + { 0.0000, 0.7333, 0.0000, 1.0 }, /* 2 green */ + { 0.6667, 0.6667, 0.0000, 1.0 }, /* 3 yellow */ + { 0.0000, 0.0000, 0.8000, 1.0 }, /* 4 blue */ + { 0.7333, 0.0000, 0.7333, 1.0 }, /* 5 magenta */ + { 0.0000, 0.7333, 0.7333, 1.0 }, /* 6 cyan */ + { 0.7333, 0.7333, 0.7333, 1.0 }, /* 7 white */ + { 0.4667, 0.4667, 0.4667, 1.0 }, /* 8 grey */ + { 1.0000, 0.0000, 0.0000, 1.0 }, /* 9 bright red */ + { 0.0000, 1.0000, 0.0000, 1.0 }, /* 10 bright green */ + { 0.9333, 0.9333, 0.0000, 1.0 }, /* 11 bright yellow */ + { 0.0000, 0.0000, 1.0000, 1.0 }, /* 12 bright blue */ + { 1.0000, 0.0000, 1.0000, 1.0 }, /* 13 bright magenta */ + { 0.0000, 0.9333, 0.9333, 1.0 }, /* 14 bright cyan */ + { 1.0000, 1.0000, 1.0000, 1.0 }, /* 15 bright white */ }; /* @@ -355,11 +363,11 @@ static GtkWidget *gtk_mdi_new(void) { GtkWidget *mdi; - GdkColor background; + GdkRGBA background; mdi = GTK_WIDGET (g_object_new (gtk_mdi_get_type (), NULL)); - gdk_color_parse (GTK_MDI_BACKGROUND, &background); - gtk_widget_modify_bg (mdi, GTK_STATE_NORMAL, &background); + gdk_rgba_parse (&background, GTK_MDI_BACKGROUND); + gtk_widget_override_background_color (mdi, GTK_STATE_NORMAL, &background); return mdi; } @@ -377,7 +385,7 @@ GtkWidget *child_widget_box; GtkWidget *image; - GdkColor color; + GdkRGBA color; gint i, j; GdkCursor *cursor; GdkPixbuf *pixbuf; @@ -400,20 +408,20 @@ gtk_widget_set_events (button[0], GDK_BUTTON_PRESS_MASK); } - gdk_color_parse (GTK_MDI_LABEL_BACKGROUND, &color); - - gtk_widget_modify_bg (top_event_box, GTK_STATE_NORMAL, &color); - gtk_widget_modify_bg (bottom_event_box, GTK_STATE_NORMAL, &color); - gtk_widget_modify_bg (child_box, GTK_STATE_NORMAL, &color); + gdk_rgba_parse (&color, GTK_MDI_LABEL_BACKGROUND); + + gtk_widget_override_background_color (top_event_box, GTK_STATE_NORMAL, &color); + gtk_widget_override_background_color (bottom_event_box, GTK_STATE_NORMAL, &color); + gtk_widget_override_background_color (child_box, GTK_STATE_NORMAL, &color); for (i = GTK_STATE_NORMAL; i < GTK_STATE_ACTIVE; i++) { for (j = 0; j < 3; j++) { - gtk_widget_modify_bg (button[j], i, &color); - } - } - gdk_color_parse (GTK_MDI_LABEL_FOREGROUND, &color); - gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color); + gtk_widget_override_background_color (button[j], i, &color); + } + } + gdk_rgba_parse (&color, GTK_MDI_LABEL_FOREGROUND); + gtk_widget_override_color (label, GTK_STATE_NORMAL, &color); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (top_event_box), label); @@ -1746,9 +1754,9 @@ void _init_thread(void) { - GdkColor *foreground = malloc(sizeof(GdkColor)); - - foreground->pixel = foreground->red = foreground->green = foreground->blue = 0; + GdkRGBA *foreground = malloc(sizeof(GdkRGBA)); + + foreground->alpha = foreground->red = foreground->green = foreground->blue = 0.0; pthread_setspecific(_dw_fg_color_key, foreground); pthread_setspecific(_dw_bg_color_key, NULL); } @@ -2531,7 +2539,7 @@ if(pfont) { - gtk_widget_modify_font(handle2, pfont); + gtk_widget_override_font(handle2, pfont); pango_font_description_free(pfont); } DW_MUTEX_UNLOCK; @@ -2729,22 +2737,22 @@ void _free_gdk_colors(HWND handle) { - GdkColor *old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk"); + GdkRGBA *old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk"); if(old) free(old); - old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk"); + old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk"); if(old) free(old); } /* Free old color pointers and allocate new ones */ -static void _save_gdk_colors(HWND handle, GdkColor fore, GdkColor back) -{ - GdkColor *foregdk = malloc(sizeof(GdkColor)); - GdkColor *backgdk = malloc(sizeof(GdkColor)); +static void _save_gdk_colors(HWND handle, GdkRGBA fore, GdkRGBA back) +{ + GdkRGBA *foregdk = malloc(sizeof(GdkRGBA)); + GdkRGBA *backgdk = malloc(sizeof(GdkRGBA)); _free_gdk_colors(handle); @@ -2760,49 +2768,41 @@ /* Remember that each color component in X11 use 16 bit no matter * what the destination display supports. (and thus GDK) */ - GdkColor forecolor, backcolor; + GdkRGBA forecolor, backcolor; if(fore & DW_RGB_COLOR) { - forecolor.pixel = 0; - forecolor.red = DW_RED_VALUE(fore) << 8; - forecolor.green = DW_GREEN_VALUE(fore) << 8; - forecolor.blue = DW_BLUE_VALUE(fore) << 8; - - gtk_widget_modify_text(handle, 0, &forecolor); - gtk_widget_modify_text(handle, 1, &forecolor); - gtk_widget_modify_fg(handle, 0, &forecolor); - gtk_widget_modify_fg(handle, 1, &forecolor); + forecolor.alpha = 1.0; + forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0; + forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0; + forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0; + + gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor); + gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor); } else if(fore != DW_CLR_DEFAULT) { forecolor = _colors[fore]; - gtk_widget_modify_text(handle, 0, &_colors[fore]); - gtk_widget_modify_text(handle, 1, &_colors[fore]); - gtk_widget_modify_fg(handle, 0, &_colors[fore]); - gtk_widget_modify_fg(handle, 1, &_colors[fore]); + gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor); + gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor); } if(back & DW_RGB_COLOR) { - backcolor.pixel = 0; - backcolor.red = DW_RED_VALUE(back) << 8; - backcolor.green = DW_GREEN_VALUE(back) << 8; - backcolor.blue = DW_BLUE_VALUE(back) << 8; - - gtk_widget_modify_base(handle, 0, &backcolor); - gtk_widget_modify_base(handle, 1, &backcolor); - gtk_widget_modify_bg(handle, 0, &backcolor); - gtk_widget_modify_bg(handle, 1, &backcolor); + backcolor.alpha = 1.0; + backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0; + backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0; + backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0; + + gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor); + gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor); } else if(back != DW_CLR_DEFAULT) { backcolor = _colors[back]; - gtk_widget_modify_base(handle, 0, &_colors[back]); - gtk_widget_modify_base(handle, 1, &_colors[back]); - gtk_widget_modify_bg(handle, 0, &_colors[back]); - gtk_widget_modify_bg(handle, 1, &_colors[back]); + gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor); + gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor); } _save_gdk_colors(handle, forecolor, backcolor); @@ -6675,12 +6675,12 @@ return tmp; } -/* Returns a GdkColor from a DW color */ -static GdkColor _internal_color(unsigned long value) +/* Returns a GdkRGBA from a DW color */ +static GdkRGBA _internal_color(unsigned long value) { if(DW_RGB_COLOR & value) { - GdkColor color = { 0, DW_RED_VALUE(value) << 8, DW_GREEN_VALUE(value) << 8, DW_BLUE_VALUE(value) << 8 }; + GdkRGBA color = { (gfloat)DW_RED_VALUE(value) / 255.0, (gfloat)DW_GREEN_VALUE(value) / 255.0, (gfloat)DW_BLUE_VALUE(value) / 255.0, 1.0 }; return color; } if (value < 16) @@ -6696,8 +6696,8 @@ */ void dw_color_foreground_set(unsigned long value) { - GdkColor color = _internal_color(value); - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); + GdkRGBA color = _internal_color(value); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); *foreground = color; } @@ -6710,7 +6710,7 @@ */ void dw_color_background_set(unsigned long value) { - GdkColor *background = pthread_getspecific(_dw_bg_color_key); + GdkRGBA *background = pthread_getspecific(_dw_bg_color_key); if(value == DW_CLR_DEFAULT) { @@ -6722,11 +6722,11 @@ } else { - GdkColor color = _internal_color(value); + GdkRGBA color = _internal_color(value); if(!background) { - background = malloc(sizeof(GdkColor)); + background = malloc(sizeof(GdkRGBA)); pthread_setspecific(_dw_bg_color_key, background); } *background = color; @@ -6736,7 +6736,7 @@ /* Internal function to handle the color OK press */ static gint _gtk_color_ok(GtkWidget *widget, DWDialog *dwwait) { - GdkColor color; + GdkRGBA color; unsigned long dw_color; GtkColorSelection *colorsel; @@ -6744,10 +6744,10 @@ return FALSE; colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dwwait->data)); - gtk_color_selection_get_current_color(colorsel, &color); + gtk_color_selection_get_current_rgba(colorsel, &color); gtk_widget_destroy(GTK_WIDGET(dwwait->data)); _dw_color_active = 0; - dw_color = DW_RGB( (color.red & 0xFF), (color.green & 0xFF), (color.blue & 0xFF)); + dw_color = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255)); dw_dialog_dismiss(dwwait, (void *)dw_color); return FALSE; } @@ -6776,7 +6776,7 @@ int _locked_by_me = FALSE; DWDialog *dwwait; GtkColorSelection *colorsel; - GdkColor color = _internal_color(value); + GdkRGBA color = _internal_color(value); unsigned long dw_color; DW_MUTEX_LOCK; @@ -6801,8 +6801,8 @@ g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(_gtk_color_ok), dwwait); g_signal_connect(G_OBJECT(cancel_button), "clicked", G_CALLBACK(_gtk_color_cancel), dwwait); - gtk_color_selection_set_previous_color(colorsel,&color); - gtk_color_selection_set_current_color(colorsel,&color); + gtk_color_selection_set_previous_rgba(colorsel,&color); + gtk_color_selection_set_current_rgba(colorsel,&color); gtk_color_selection_set_has_palette(colorsel,TRUE); gtk_widget_show(colorw); @@ -6846,9 +6846,9 @@ cr = cairo_create(pixmap->image); if(cr) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); - - gdk_cairo_set_source_color (cr, foreground); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); + + gdk_cairo_set_source_rgba(cr, foreground); cairo_set_line_width(cr, 1); cairo_move_to(cr, x, y); cairo_stroke(cr); @@ -6887,9 +6887,9 @@ cr = cairo_create(pixmap->image); if(cr) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); - - gdk_cairo_set_source_color (cr, foreground); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); + + gdk_cairo_set_source_rgba(cr, foreground); cairo_set_line_width(cr, 1); cairo_move_to(cr, x1, y1); cairo_line_to(cr, x2, y2); @@ -6930,12 +6930,12 @@ cr = cairo_create(pixmap->image); if(cr) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); if(flags & DW_DRAW_NOAA) cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - gdk_cairo_set_source_color (cr, foreground); + gdk_cairo_set_source_rgba(cr, foreground); cairo_set_line_width(cr, 1); cairo_move_to(cr, x[0], y[0]); for(z=1;zimage); if(cr) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); if(flags & DW_DRAW_NOAA) cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - gdk_cairo_set_source_color (cr, foreground); + gdk_cairo_set_source_rgba(cr, foreground); cairo_set_line_width(cr, 1); cairo_move_to(cr, x, y); cairo_line_to(cr, x, y + height); @@ -7034,7 +7034,7 @@ cr = cairo_create(pixmap->image); if(cr) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); double dx = xorigin - x1; double dy = yorigin - y1; double r = sqrt(dx*dx + dy*dy); @@ -7046,7 +7046,7 @@ if(flags & DW_DRAW_NOAA) cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); - gdk_cairo_set_source_color (cr, foreground); + gdk_cairo_set_source_rgba(cr, foreground); cairo_set_line_width(cr, 1); if(scale != 1.0) cairo_scale(cr, 1.0, scale); @@ -7115,20 +7115,20 @@ if(layout) { - GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); - GdkColor *background = pthread_getspecific(_dw_bg_color_key); + GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key); + GdkRGBA *background = pthread_getspecific(_dw_bg_color_key); pango_layout_set_font_description(layout, font); pango_layout_set_text(layout, text, strlen(text)); - gdk_cairo_set_source_color (cr, foreground); + gdk_cairo_set_source_rgba(cr, foreground); /* Create a background color attribute if required */ if(background) { PangoAttrList *list = pango_layout_get_attributes(layout); - PangoAttribute *attr = pango_attr_background_new(background->red, - background->green, - background->blue); + PangoAttribute *attr = pango_attr_background_new((guint16)(background->red * 65535), + (guint16)(background->green * 65535), + (guint16)(background->blue* 65535)); if(!list) { list = pango_attr_list_new(); @@ -8164,7 +8164,7 @@ { void (*threadfunc)(void *) = NULL; void **tmp = (void **)data; - GdkColor *foreground, *background; + GdkRGBA *foreground, *background; threadfunc = (void (*)(void *))tmp[0];