Mercurial > dwindows
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(); |