comparison gtk3/dw.c @ 1554:e39e9e67110d

Switched to using GdkRGBA from GdkColor int GTK3 since the GdkColor APIs are now deprecated. Also some related font changes due to deprecation.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 15 Jan 2012 20:46:13 +0000
parents 6edf3fce77f2
children 5b5da6d21f08
comparison
equal deleted inserted replaced
1553:46a2123ff570 1554:e39e9e67110d
53 /* These are used for resource management */ 53 /* These are used for resource management */
54 #if defined(DW_RESOURCES) && !defined(BUILD_DLL) 54 #if defined(DW_RESOURCES) && !defined(BUILD_DLL)
55 extern DWResources _resources; 55 extern DWResources _resources;
56 #endif 56 #endif
57 57
58 GdkColor _colors[] = 58 /* ff = 255 = 1.0000
59 { 59 * ee = 238 = 0.9333
60 { 0, 0x0000, 0x0000, 0x0000 }, /* 0 black */ 60 * cc = 204 = 0.8000
61 { 0, 0xbbbb, 0x0000, 0x0000 }, /* 1 red */ 61 * bb = 187 = 0.7333
62 { 0, 0x0000, 0xbbbb, 0x0000 }, /* 2 green */ 62 * aa = 170 = 0.6667
63 { 0, 0xaaaa, 0xaaaa, 0x0000 }, /* 3 yellow */ 63 * 77 = 119 = 0.4667
64 { 0, 0x0000, 0x0000, 0xcccc }, /* 4 blue */ 64 * 00 = 0 = 0.0000
65 { 0, 0xbbbb, 0x0000, 0xbbbb }, /* 5 magenta */ 65 */
66 { 0, 0x0000, 0xbbbb, 0xbbbb }, /* 6 cyan */ 66 GdkRGBA _colors[] =
67 { 0, 0xbbbb, 0xbbbb, 0xbbbb }, /* 7 white */ 67 {
68 { 0, 0x7777, 0x7777, 0x7777 }, /* 8 grey */ 68 { 0.0000, 0.0000, 0.0000, 1.0 }, /* 0 black */
69 { 0, 0xffff, 0x0000, 0x0000 }, /* 9 bright red */ 69 { 0.7333, 0.0000, 0.0000, 1.0 }, /* 1 red */
70 { 0, 0x0000, 0xffff, 0x0000 }, /* 10 bright green */ 70 { 0.0000, 0.7333, 0.0000, 1.0 }, /* 2 green */
71 { 0, 0xeeee, 0xeeee, 0x0000 }, /* 11 bright yellow */ 71 { 0.6667, 0.6667, 0.0000, 1.0 }, /* 3 yellow */
72 { 0, 0x0000, 0x0000, 0xffff }, /* 12 bright blue */ 72 { 0.0000, 0.0000, 0.8000, 1.0 }, /* 4 blue */
73 { 0, 0xffff, 0x0000, 0xffff }, /* 13 bright magenta */ 73 { 0.7333, 0.0000, 0.7333, 1.0 }, /* 5 magenta */
74 { 0, 0x0000, 0xeeee, 0xeeee }, /* 14 bright cyan */ 74 { 0.0000, 0.7333, 0.7333, 1.0 }, /* 6 cyan */
75 { 0, 0xffff, 0xffff, 0xffff }, /* 15 bright white */ 75 { 0.7333, 0.7333, 0.7333, 1.0 }, /* 7 white */
76 { 0.4667, 0.4667, 0.4667, 1.0 }, /* 8 grey */
77 { 1.0000, 0.0000, 0.0000, 1.0 }, /* 9 bright red */
78 { 0.0000, 1.0000, 0.0000, 1.0 }, /* 10 bright green */
79 { 0.9333, 0.9333, 0.0000, 1.0 }, /* 11 bright yellow */
80 { 0.0000, 0.0000, 1.0000, 1.0 }, /* 12 bright blue */
81 { 1.0000, 0.0000, 1.0000, 1.0 }, /* 13 bright magenta */
82 { 0.0000, 0.9333, 0.9333, 1.0 }, /* 14 bright cyan */
83 { 1.0000, 1.0000, 1.0000, 1.0 }, /* 15 bright white */
76 }; 84 };
77 85
78 /* 86 /*
79 * List those icons that have transparency first 87 * List those icons that have transparency first
80 */ 88 */
353 } 361 }
354 362
355 static GtkWidget *gtk_mdi_new(void) 363 static GtkWidget *gtk_mdi_new(void)
356 { 364 {
357 GtkWidget *mdi; 365 GtkWidget *mdi;
358 GdkColor background; 366 GdkRGBA background;
359 367
360 mdi = GTK_WIDGET (g_object_new (gtk_mdi_get_type (), NULL)); 368 mdi = GTK_WIDGET (g_object_new (gtk_mdi_get_type (), NULL));
361 gdk_color_parse (GTK_MDI_BACKGROUND, &background); 369 gdk_rgba_parse (&background, GTK_MDI_BACKGROUND);
362 gtk_widget_modify_bg (mdi, GTK_STATE_NORMAL, &background); 370 gtk_widget_override_background_color (mdi, GTK_STATE_NORMAL, &background);
363 371
364 return mdi; 372 return mdi;
365 } 373 }
366 374
367 static void gtk_mdi_put(GtkMdi *mdi, GtkWidget *child_widget, gint x, gint y, GtkWidget *label) 375 static void gtk_mdi_put(GtkMdi *mdi, GtkWidget *child_widget, gint x, gint y, GtkWidget *label)
375 GtkWidget *top_event_box; 383 GtkWidget *top_event_box;
376 GtkWidget *bottom_event_box; 384 GtkWidget *bottom_event_box;
377 GtkWidget *child_widget_box; 385 GtkWidget *child_widget_box;
378 GtkWidget *image; 386 GtkWidget *image;
379 387
380 GdkColor color; 388 GdkRGBA color;
381 gint i, j; 389 gint i, j;
382 GdkCursor *cursor; 390 GdkCursor *cursor;
383 GdkPixbuf *pixbuf; 391 GdkPixbuf *pixbuf;
384 392
385 child_box = gtk_event_box_new (); 393 child_box = gtk_event_box_new ();
398 { 406 {
399 button[i] = gtk_event_box_new (); 407 button[i] = gtk_event_box_new ();
400 gtk_widget_set_events (button[0], GDK_BUTTON_PRESS_MASK); 408 gtk_widget_set_events (button[0], GDK_BUTTON_PRESS_MASK);
401 } 409 }
402 410
403 gdk_color_parse (GTK_MDI_LABEL_BACKGROUND, &color); 411 gdk_rgba_parse (&color, GTK_MDI_LABEL_BACKGROUND);
404 412
405 gtk_widget_modify_bg (top_event_box, GTK_STATE_NORMAL, &color); 413 gtk_widget_override_background_color (top_event_box, GTK_STATE_NORMAL, &color);
406 gtk_widget_modify_bg (bottom_event_box, GTK_STATE_NORMAL, &color); 414 gtk_widget_override_background_color (bottom_event_box, GTK_STATE_NORMAL, &color);
407 gtk_widget_modify_bg (child_box, GTK_STATE_NORMAL, &color); 415 gtk_widget_override_background_color (child_box, GTK_STATE_NORMAL, &color);
408 for (i = GTK_STATE_NORMAL; i < GTK_STATE_ACTIVE; i++) 416 for (i = GTK_STATE_NORMAL; i < GTK_STATE_ACTIVE; i++)
409 { 417 {
410 for (j = 0; j < 3; j++) 418 for (j = 0; j < 3; j++)
411 { 419 {
412 gtk_widget_modify_bg (button[j], i, &color); 420 gtk_widget_override_background_color (button[j], i, &color);
413 } 421 }
414 } 422 }
415 gdk_color_parse (GTK_MDI_LABEL_FOREGROUND, &color); 423 gdk_rgba_parse (&color, GTK_MDI_LABEL_FOREGROUND);
416 gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &color); 424 gtk_widget_override_color (label, GTK_STATE_NORMAL, &color);
417 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); 425 gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
418 426
419 gtk_container_add (GTK_CONTAINER (top_event_box), label); 427 gtk_container_add (GTK_CONTAINER (top_event_box), label);
420 gtk_container_add (GTK_CONTAINER (child_widget_box), child_widget); 428 gtk_container_add (GTK_CONTAINER (child_widget_box), child_widget);
421 gtk_widget_set_size_request (bottom_event_box, 2, 2); 429 gtk_widget_set_size_request (bottom_event_box, 2, 2);
1744 return NULL; 1752 return NULL;
1745 } 1753 }
1746 1754
1747 void _init_thread(void) 1755 void _init_thread(void)
1748 { 1756 {
1749 GdkColor *foreground = malloc(sizeof(GdkColor)); 1757 GdkRGBA *foreground = malloc(sizeof(GdkRGBA));
1750 1758
1751 foreground->pixel = foreground->red = foreground->green = foreground->blue = 0; 1759 foreground->alpha = foreground->red = foreground->green = foreground->blue = 0.0;
1752 pthread_setspecific(_dw_fg_color_key, foreground); 1760 pthread_setspecific(_dw_fg_color_key, foreground);
1753 pthread_setspecific(_dw_bg_color_key, NULL); 1761 pthread_setspecific(_dw_bg_color_key, NULL);
1754 } 1762 }
1755 1763
1756 /* Try to load the WebKitGtk shared libary */ 1764 /* Try to load the WebKitGtk shared libary */
2529 2537
2530 pfont = pango_font_description_from_string(fontname); 2538 pfont = pango_font_description_from_string(fontname);
2531 2539
2532 if(pfont) 2540 if(pfont)
2533 { 2541 {
2534 gtk_widget_modify_font(handle2, pfont); 2542 gtk_widget_override_font(handle2, pfont);
2535 pango_font_description_free(pfont); 2543 pango_font_description_free(pfont);
2536 } 2544 }
2537 DW_MUTEX_UNLOCK; 2545 DW_MUTEX_UNLOCK;
2538 return TRUE; 2546 return TRUE;
2539 } 2547 }
2727 return retfont; 2735 return retfont;
2728 } 2736 }
2729 2737
2730 void _free_gdk_colors(HWND handle) 2738 void _free_gdk_colors(HWND handle)
2731 { 2739 {
2732 GdkColor *old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk"); 2740 GdkRGBA *old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_foregdk");
2733 2741
2734 if(old) 2742 if(old)
2735 free(old); 2743 free(old);
2736 2744
2737 old = (GdkColor *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk"); 2745 old = (GdkRGBA *)g_object_get_data(G_OBJECT(handle), "_dw_backgdk");
2738 2746
2739 if(old) 2747 if(old)
2740 free(old); 2748 free(old);
2741 } 2749 }
2742 2750
2743 /* Free old color pointers and allocate new ones */ 2751 /* Free old color pointers and allocate new ones */
2744 static void _save_gdk_colors(HWND handle, GdkColor fore, GdkColor back) 2752 static void _save_gdk_colors(HWND handle, GdkRGBA fore, GdkRGBA back)
2745 { 2753 {
2746 GdkColor *foregdk = malloc(sizeof(GdkColor)); 2754 GdkRGBA *foregdk = malloc(sizeof(GdkRGBA));
2747 GdkColor *backgdk = malloc(sizeof(GdkColor)); 2755 GdkRGBA *backgdk = malloc(sizeof(GdkRGBA));
2748 2756
2749 _free_gdk_colors(handle); 2757 _free_gdk_colors(handle);
2750 2758
2751 *foregdk = fore; 2759 *foregdk = fore;
2752 *backgdk = back; 2760 *backgdk = back;
2758 static int _set_color(HWND handle, unsigned long fore, unsigned long back) 2766 static int _set_color(HWND handle, unsigned long fore, unsigned long back)
2759 { 2767 {
2760 /* Remember that each color component in X11 use 16 bit no matter 2768 /* Remember that each color component in X11 use 16 bit no matter
2761 * what the destination display supports. (and thus GDK) 2769 * what the destination display supports. (and thus GDK)
2762 */ 2770 */
2763 GdkColor forecolor, backcolor; 2771 GdkRGBA forecolor, backcolor;
2764 2772
2765 if(fore & DW_RGB_COLOR) 2773 if(fore & DW_RGB_COLOR)
2766 { 2774 {
2767 forecolor.pixel = 0; 2775 forecolor.alpha = 1.0;
2768 forecolor.red = DW_RED_VALUE(fore) << 8; 2776 forecolor.red = (gdouble)DW_RED_VALUE(fore) / 255.0;
2769 forecolor.green = DW_GREEN_VALUE(fore) << 8; 2777 forecolor.green = (gdouble)DW_GREEN_VALUE(fore) / 255.0;
2770 forecolor.blue = DW_BLUE_VALUE(fore) << 8; 2778 forecolor.blue = (gdouble)DW_BLUE_VALUE(fore) / 255.0;
2771 2779
2772 gtk_widget_modify_text(handle, 0, &forecolor); 2780 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor);
2773 gtk_widget_modify_text(handle, 1, &forecolor); 2781 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor);
2774 gtk_widget_modify_fg(handle, 0, &forecolor);
2775 gtk_widget_modify_fg(handle, 1, &forecolor);
2776 } 2782 }
2777 else if(fore != DW_CLR_DEFAULT) 2783 else if(fore != DW_CLR_DEFAULT)
2778 { 2784 {
2779 forecolor = _colors[fore]; 2785 forecolor = _colors[fore];
2780 2786
2781 gtk_widget_modify_text(handle, 0, &_colors[fore]); 2787 gtk_widget_override_color(handle, GTK_STATE_NORMAL, &forecolor);
2782 gtk_widget_modify_text(handle, 1, &_colors[fore]); 2788 gtk_widget_override_color(handle, GTK_STATE_ACTIVE, &forecolor);
2783 gtk_widget_modify_fg(handle, 0, &_colors[fore]);
2784 gtk_widget_modify_fg(handle, 1, &_colors[fore]);
2785 } 2789 }
2786 if(back & DW_RGB_COLOR) 2790 if(back & DW_RGB_COLOR)
2787 { 2791 {
2788 backcolor.pixel = 0; 2792 backcolor.alpha = 1.0;
2789 backcolor.red = DW_RED_VALUE(back) << 8; 2793 backcolor.red = (gdouble)DW_RED_VALUE(back) / 255.0;
2790 backcolor.green = DW_GREEN_VALUE(back) << 8; 2794 backcolor.green = (gdouble)DW_GREEN_VALUE(back) / 255.0;
2791 backcolor.blue = DW_BLUE_VALUE(back) << 8; 2795 backcolor.blue = (gdouble)DW_BLUE_VALUE(back) / 255.0;
2792 2796
2793 gtk_widget_modify_base(handle, 0, &backcolor); 2797 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor);
2794 gtk_widget_modify_base(handle, 1, &backcolor); 2798 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor);
2795 gtk_widget_modify_bg(handle, 0, &backcolor);
2796 gtk_widget_modify_bg(handle, 1, &backcolor);
2797 } 2799 }
2798 else if(back != DW_CLR_DEFAULT) 2800 else if(back != DW_CLR_DEFAULT)
2799 { 2801 {
2800 backcolor = _colors[back]; 2802 backcolor = _colors[back];
2801 2803
2802 gtk_widget_modify_base(handle, 0, &_colors[back]); 2804 gtk_widget_override_background_color(handle, GTK_STATE_NORMAL, &backcolor);
2803 gtk_widget_modify_base(handle, 1, &_colors[back]); 2805 gtk_widget_override_background_color(handle, GTK_STATE_ACTIVE, &backcolor);
2804 gtk_widget_modify_bg(handle, 0, &_colors[back]);
2805 gtk_widget_modify_bg(handle, 1, &_colors[back]);
2806 } 2806 }
2807 2807
2808 _save_gdk_colors(handle, forecolor, backcolor); 2808 _save_gdk_colors(handle, forecolor, backcolor);
2809 2809
2810 return TRUE; 2810 return TRUE;
6673 dw_window_set_font(tmp, _DWDefaultFont); 6673 dw_window_set_font(tmp, _DWDefaultFont);
6674 DW_MUTEX_UNLOCK; 6674 DW_MUTEX_UNLOCK;
6675 return tmp; 6675 return tmp;
6676 } 6676 }
6677 6677
6678 /* Returns a GdkColor from a DW color */ 6678 /* Returns a GdkRGBA from a DW color */
6679 static GdkColor _internal_color(unsigned long value) 6679 static GdkRGBA _internal_color(unsigned long value)
6680 { 6680 {
6681 if(DW_RGB_COLOR & value) 6681 if(DW_RGB_COLOR & value)
6682 { 6682 {
6683 GdkColor color = { 0, DW_RED_VALUE(value) << 8, DW_GREEN_VALUE(value) << 8, DW_BLUE_VALUE(value) << 8 }; 6683 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 };
6684 return color; 6684 return color;
6685 } 6685 }
6686 if (value < 16) 6686 if (value < 16)
6687 return _colors[value]; 6687 return _colors[value];
6688 return _colors[0]; 6688 return _colors[0];
6694 * green: green value. 6694 * green: green value.
6695 * blue: blue value. 6695 * blue: blue value.
6696 */ 6696 */
6697 void dw_color_foreground_set(unsigned long value) 6697 void dw_color_foreground_set(unsigned long value)
6698 { 6698 {
6699 GdkColor color = _internal_color(value); 6699 GdkRGBA color = _internal_color(value);
6700 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 6700 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
6701 6701
6702 *foreground = color; 6702 *foreground = color;
6703 } 6703 }
6704 6704
6705 /* Sets the current background drawing color. 6705 /* Sets the current background drawing color.
6708 * green: green value. 6708 * green: green value.
6709 * blue: blue value. 6709 * blue: blue value.
6710 */ 6710 */
6711 void dw_color_background_set(unsigned long value) 6711 void dw_color_background_set(unsigned long value)
6712 { 6712 {
6713 GdkColor *background = pthread_getspecific(_dw_bg_color_key); 6713 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
6714 6714
6715 if(value == DW_CLR_DEFAULT) 6715 if(value == DW_CLR_DEFAULT)
6716 { 6716 {
6717 if(background) 6717 if(background)
6718 { 6718 {
6720 free(background); 6720 free(background);
6721 } 6721 }
6722 } 6722 }
6723 else 6723 else
6724 { 6724 {
6725 GdkColor color = _internal_color(value); 6725 GdkRGBA color = _internal_color(value);
6726 6726
6727 if(!background) 6727 if(!background)
6728 { 6728 {
6729 background = malloc(sizeof(GdkColor)); 6729 background = malloc(sizeof(GdkRGBA));
6730 pthread_setspecific(_dw_bg_color_key, background); 6730 pthread_setspecific(_dw_bg_color_key, background);
6731 } 6731 }
6732 *background = color; 6732 *background = color;
6733 } 6733 }
6734 } 6734 }
6735 6735
6736 /* Internal function to handle the color OK press */ 6736 /* Internal function to handle the color OK press */
6737 static gint _gtk_color_ok(GtkWidget *widget, DWDialog *dwwait) 6737 static gint _gtk_color_ok(GtkWidget *widget, DWDialog *dwwait)
6738 { 6738 {
6739 GdkColor color; 6739 GdkRGBA color;
6740 unsigned long dw_color; 6740 unsigned long dw_color;
6741 GtkColorSelection *colorsel; 6741 GtkColorSelection *colorsel;
6742 6742
6743 if(!dwwait) 6743 if(!dwwait)
6744 return FALSE; 6744 return FALSE;
6745 6745
6746 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dwwait->data)); 6746 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(dwwait->data));
6747 gtk_color_selection_get_current_color(colorsel, &color); 6747 gtk_color_selection_get_current_rgba(colorsel, &color);
6748 gtk_widget_destroy(GTK_WIDGET(dwwait->data)); 6748 gtk_widget_destroy(GTK_WIDGET(dwwait->data));
6749 _dw_color_active = 0; 6749 _dw_color_active = 0;
6750 dw_color = DW_RGB( (color.red & 0xFF), (color.green & 0xFF), (color.blue & 0xFF)); 6750 dw_color = DW_RGB((int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255));
6751 dw_dialog_dismiss(dwwait, (void *)dw_color); 6751 dw_dialog_dismiss(dwwait, (void *)dw_color);
6752 return FALSE; 6752 return FALSE;
6753 } 6753 }
6754 6754
6755 /* Internal function to handle the color Cancel press */ 6755 /* Internal function to handle the color Cancel press */
6774 { 6774 {
6775 GtkWidget *colorw, *ok_button, *cancel_button; 6775 GtkWidget *colorw, *ok_button, *cancel_button;
6776 int _locked_by_me = FALSE; 6776 int _locked_by_me = FALSE;
6777 DWDialog *dwwait; 6777 DWDialog *dwwait;
6778 GtkColorSelection *colorsel; 6778 GtkColorSelection *colorsel;
6779 GdkColor color = _internal_color(value); 6779 GdkRGBA color = _internal_color(value);
6780 unsigned long dw_color; 6780 unsigned long dw_color;
6781 6781
6782 DW_MUTEX_LOCK; 6782 DW_MUTEX_LOCK;
6783 6783
6784 /* The DW mutex should be sufficient for 6784 /* The DW mutex should be sufficient for
6799 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(colorw)); 6799 colorsel = (GtkColorSelection *)gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(colorw));
6800 g_object_get(G_OBJECT(colorw), "ok-button", &ok_button, "cancel-button", &cancel_button, NULL); 6800 g_object_get(G_OBJECT(colorw), "ok-button", &ok_button, "cancel-button", &cancel_button, NULL);
6801 g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(_gtk_color_ok), dwwait); 6801 g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(_gtk_color_ok), dwwait);
6802 g_signal_connect(G_OBJECT(cancel_button), "clicked", G_CALLBACK(_gtk_color_cancel), dwwait); 6802 g_signal_connect(G_OBJECT(cancel_button), "clicked", G_CALLBACK(_gtk_color_cancel), dwwait);
6803 6803
6804 gtk_color_selection_set_previous_color(colorsel,&color); 6804 gtk_color_selection_set_previous_rgba(colorsel,&color);
6805 gtk_color_selection_set_current_color(colorsel,&color); 6805 gtk_color_selection_set_current_rgba(colorsel,&color);
6806 gtk_color_selection_set_has_palette(colorsel,TRUE); 6806 gtk_color_selection_set_has_palette(colorsel,TRUE);
6807 6807
6808 gtk_widget_show(colorw); 6808 gtk_widget_show(colorw);
6809 6809
6810 dw_color = (unsigned long)dw_dialog_wait(dwwait); 6810 dw_color = (unsigned long)dw_dialog_wait(dwwait);
6844 } 6844 }
6845 else if(pixmap) 6845 else if(pixmap)
6846 cr = cairo_create(pixmap->image); 6846 cr = cairo_create(pixmap->image);
6847 if(cr) 6847 if(cr)
6848 { 6848 {
6849 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 6849 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
6850 6850
6851 gdk_cairo_set_source_color (cr, foreground); 6851 gdk_cairo_set_source_rgba(cr, foreground);
6852 cairo_set_line_width(cr, 1); 6852 cairo_set_line_width(cr, 1);
6853 cairo_move_to(cr, x, y); 6853 cairo_move_to(cr, x, y);
6854 cairo_stroke(cr); 6854 cairo_stroke(cr);
6855 cairo_destroy(cr); 6855 cairo_destroy(cr);
6856 } 6856 }
6885 } 6885 }
6886 else if(pixmap) 6886 else if(pixmap)
6887 cr = cairo_create(pixmap->image); 6887 cr = cairo_create(pixmap->image);
6888 if(cr) 6888 if(cr)
6889 { 6889 {
6890 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 6890 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
6891 6891
6892 gdk_cairo_set_source_color (cr, foreground); 6892 gdk_cairo_set_source_rgba(cr, foreground);
6893 cairo_set_line_width(cr, 1); 6893 cairo_set_line_width(cr, 1);
6894 cairo_move_to(cr, x1, y1); 6894 cairo_move_to(cr, x1, y1);
6895 cairo_line_to(cr, x2, y2); 6895 cairo_line_to(cr, x2, y2);
6896 cairo_stroke(cr); 6896 cairo_stroke(cr);
6897 cairo_destroy(cr); 6897 cairo_destroy(cr);
6928 } 6928 }
6929 else if(pixmap) 6929 else if(pixmap)
6930 cr = cairo_create(pixmap->image); 6930 cr = cairo_create(pixmap->image);
6931 if(cr) 6931 if(cr)
6932 { 6932 {
6933 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 6933 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
6934 6934
6935 if(flags & DW_DRAW_NOAA) 6935 if(flags & DW_DRAW_NOAA)
6936 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); 6936 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
6937 6937
6938 gdk_cairo_set_source_color (cr, foreground); 6938 gdk_cairo_set_source_rgba(cr, foreground);
6939 cairo_set_line_width(cr, 1); 6939 cairo_set_line_width(cr, 1);
6940 cairo_move_to(cr, x[0], y[0]); 6940 cairo_move_to(cr, x[0], y[0]);
6941 for(z=1;z<npoints;z++) 6941 for(z=1;z<npoints;z++)
6942 { 6942 {
6943 cairo_line_to(cr, x[z], y[z]); 6943 cairo_line_to(cr, x[z], y[z]);
6979 } 6979 }
6980 else if(pixmap) 6980 else if(pixmap)
6981 cr = cairo_create(pixmap->image); 6981 cr = cairo_create(pixmap->image);
6982 if(cr) 6982 if(cr)
6983 { 6983 {
6984 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 6984 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
6985 6985
6986 if(flags & DW_DRAW_NOAA) 6986 if(flags & DW_DRAW_NOAA)
6987 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); 6987 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
6988 6988
6989 gdk_cairo_set_source_color (cr, foreground); 6989 gdk_cairo_set_source_rgba(cr, foreground);
6990 cairo_set_line_width(cr, 1); 6990 cairo_set_line_width(cr, 1);
6991 cairo_move_to(cr, x, y); 6991 cairo_move_to(cr, x, y);
6992 cairo_line_to(cr, x, y + height); 6992 cairo_line_to(cr, x, y + height);
6993 cairo_line_to(cr, x + width, y + height); 6993 cairo_line_to(cr, x + width, y + height);
6994 cairo_line_to(cr, x + width, y); 6994 cairo_line_to(cr, x + width, y);
7032 } 7032 }
7033 else if(pixmap) 7033 else if(pixmap)
7034 cr = cairo_create(pixmap->image); 7034 cr = cairo_create(pixmap->image);
7035 if(cr) 7035 if(cr)
7036 { 7036 {
7037 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 7037 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
7038 double dx = xorigin - x1; 7038 double dx = xorigin - x1;
7039 double dy = yorigin - y1; 7039 double dy = yorigin - y1;
7040 double r = sqrt(dx*dx + dy*dy); 7040 double r = sqrt(dx*dx + dy*dy);
7041 double a1 = atan2((y1-yorigin), (x1-xorigin)); 7041 double a1 = atan2((y1-yorigin), (x1-xorigin));
7042 double a2 = atan2((y2-yorigin), (x2-xorigin)); 7042 double a2 = atan2((y2-yorigin), (x2-xorigin));
7044 float scale = (float)(y2-y1)/(float)width; 7044 float scale = (float)(y2-y1)/(float)width;
7045 7045
7046 if(flags & DW_DRAW_NOAA) 7046 if(flags & DW_DRAW_NOAA)
7047 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); 7047 cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
7048 7048
7049 gdk_cairo_set_source_color (cr, foreground); 7049 gdk_cairo_set_source_rgba(cr, foreground);
7050 cairo_set_line_width(cr, 1); 7050 cairo_set_line_width(cr, 1);
7051 if(scale != 1.0) 7051 if(scale != 1.0)
7052 cairo_scale(cr, 1.0, scale); 7052 cairo_scale(cr, 1.0, scale);
7053 if(flags & DW_DRAW_FULL) 7053 if(flags & DW_DRAW_FULL)
7054 cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2); 7054 cairo_arc(cr, xorigin, yorigin / scale, (x2-x1)/2, 0, M_PI*2);
7113 { 7113 {
7114 PangoLayout *layout = pango_layout_new(context); 7114 PangoLayout *layout = pango_layout_new(context);
7115 7115
7116 if(layout) 7116 if(layout)
7117 { 7117 {
7118 GdkColor *foreground = pthread_getspecific(_dw_fg_color_key); 7118 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
7119 GdkColor *background = pthread_getspecific(_dw_bg_color_key); 7119 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
7120 7120
7121 pango_layout_set_font_description(layout, font); 7121 pango_layout_set_font_description(layout, font);
7122 pango_layout_set_text(layout, text, strlen(text)); 7122 pango_layout_set_text(layout, text, strlen(text));
7123 7123
7124 gdk_cairo_set_source_color (cr, foreground); 7124 gdk_cairo_set_source_rgba(cr, foreground);
7125 /* Create a background color attribute if required */ 7125 /* Create a background color attribute if required */
7126 if(background) 7126 if(background)
7127 { 7127 {
7128 PangoAttrList *list = pango_layout_get_attributes(layout); 7128 PangoAttrList *list = pango_layout_get_attributes(layout);
7129 PangoAttribute *attr = pango_attr_background_new(background->red, 7129 PangoAttribute *attr = pango_attr_background_new((guint16)(background->red * 65535),
7130 background->green, 7130 (guint16)(background->green * 65535),
7131 background->blue); 7131 (guint16)(background->blue* 65535));
7132 if(!list) 7132 if(!list)
7133 { 7133 {
7134 list = pango_attr_list_new(); 7134 list = pango_attr_list_new();
7135 } 7135 }
7136 pango_attr_list_change(list, attr); 7136 pango_attr_list_change(list, attr);
8162 */ 8162 */
8163 void _dwthreadstart(void *data) 8163 void _dwthreadstart(void *data)
8164 { 8164 {
8165 void (*threadfunc)(void *) = NULL; 8165 void (*threadfunc)(void *) = NULL;
8166 void **tmp = (void **)data; 8166 void **tmp = (void **)data;
8167 GdkColor *foreground, *background; 8167 GdkRGBA *foreground, *background;
8168 8168
8169 threadfunc = (void (*)(void *))tmp[0]; 8169 threadfunc = (void (*)(void *))tmp[0];
8170 8170
8171 /* Initialize colors */ 8171 /* Initialize colors */
8172 _init_thread(); 8172 _init_thread();