diff --git a/src/include/pw3270/v3270.h b/src/include/pw3270/v3270.h index 461b152..5269c1f 100644 --- a/src/include/pw3270/v3270.h +++ b/src/include/pw3270/v3270.h @@ -46,6 +46,18 @@ #define GTK_IS_V3270_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_V3270)) #define GTK_V3270_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_V3270, v3270Class)) +#if ! GTK_CHECK_VERSION(3,0,0) + #define GdkRGBA GdkColor + #define gdk_cairo_set_source_rgba(cr,cl) gdk_cairo_set_source_color(cr,cl) + #define gdk_rgba_to_string(c) gdk_color_to_string(c) + #define gdk_rgba_equal(a,b) gdk_color_equal(a,b) + #define gdk_rgba_to_string(c) gdk_color_to_string(c) + #define gtk_color_selection_set_current_rgba(w,c) gtk_color_selection_set_current_color(w,c) + #define gtk_color_selection_get_current_rgba(w,c) gtk_color_selection_get_current_color(w,c) + #define gtk_color_selection_set_previous_rgba(w,c) gtk_color_selection_set_previous_color(w,c) + #define gtk_color_selection_set_current_rgba(w,c) gtk_color_selection_set_current_color(w,c) +#endif // !GTK(3,0,0) + typedef struct _v3270 v3270; typedef struct _v3270Class v3270Class; @@ -178,12 +190,12 @@ // Colors LIB3270_EXPORT void v3270_set_colors(GtkWidget *widget, const gchar *); - LIB3270_EXPORT void v3270_set_color_table(GdkColor *table, const gchar *colors); - LIB3270_EXPORT const GdkColor * v3270_get_color_table(GtkWidget *widget); - LIB3270_EXPORT void v3270_set_mono_color_table(GdkColor *table, const gchar *fg, const gchar *bg); - LIB3270_EXPORT void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *color); - LIB3270_EXPORT void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkColor *color); - LIB3270_EXPORT GdkColor * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id); + LIB3270_EXPORT void v3270_set_color_table(GdkRGBA *table, const gchar *colors); + LIB3270_EXPORT const GdkRGBA * v3270_get_color_table(GtkWidget *widget); + LIB3270_EXPORT void v3270_set_mono_color_table(GdkRGBA *table, const gchar *fg, const gchar *bg); + LIB3270_EXPORT void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *color); + LIB3270_EXPORT void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkRGBA *color); + LIB3270_EXPORT GdkRGBA * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id); // Misc LIB3270_EXPORT GtkIMContext * v3270_get_im_context(GtkWidget *widget); diff --git a/src/pw3270/colors.c b/src/pw3270/colors.c index 8062ce5..8d938dc 100644 --- a/src/pw3270/colors.c +++ b/src/pw3270/colors.c @@ -32,7 +32,7 @@ /*--[ Implement ]------------------------------------------------------------------------------------*/ -static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) +static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkRGBA *clr) { #define V3270_COLOR_BASE V3270_COLOR_GRAY+1 @@ -54,7 +54,7 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) case V3270_COLOR_BASE: // All colors, update it for(f=0;f= 0 && id < V3270_COLOR_COUNT) - gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(colorsel),clr+id); + gtk_color_selection_set_current_rgba(GTK_COLOR_SELECTION(colorsel),clr+id); } } - static gboolean compare_colors(const GdkColor *colora, const GdkColor *colorb) + static gboolean compare_colors(const GdkRGBA *colora, const GdkRGBA *colorb) { int f; for(f=0;f= V3270_COLOR_COUNT) return; - gtk_color_selection_get_current_color(colorselection,&clr); + gtk_color_selection_get_current_rgba(colorselection,&clr); v3270_set_color(widget,id,&clr); v3270_reload(widget); gtk_widget_queue_draw(widget); @@ -345,11 +345,11 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) static void color_selected(GtkTreeSelection *selection, GtkWidget *color) { GtkWidget * widget = g_object_get_data(G_OBJECT(selection),"v3270"); - GdkColor * saved = g_object_get_data(G_OBJECT(selection),"lastcolors"); + GdkRGBA * saved = g_object_get_data(G_OBJECT(selection),"lastcolors"); GValue value = { 0, }; GtkTreeModel * model; GtkTreeIter iter; - GdkColor * clr; + GdkRGBA * clr; int id; gtk_widget_set_sensitive(color,FALSE); @@ -367,8 +367,8 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) g_object_set_data(G_OBJECT(color),"colorid",GINT_TO_POINTER(id)); clr = v3270_get_color(widget,id); - gtk_color_selection_set_previous_color(GTK_COLOR_SELECTION(color),saved+id); - gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(color),clr); + gtk_color_selection_set_previous_rgba(GTK_COLOR_SELECTION(color),saved+id); + gtk_color_selection_set_current_rgba(GTK_COLOR_SELECTION(color),clr); gtk_widget_set_sensitive(color,TRUE); } @@ -442,7 +442,7 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) GtkWidget * tree; GtkWidget * color; - GdkColor saved[V3270_COLOR_COUNT]; + GdkRGBA saved[V3270_COLOR_COUNT]; // Color dialog setup { @@ -539,7 +539,7 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) { if(f) g_string_append_c(str,','); - g_string_append_printf(str,"%s",gdk_color_to_string(v3270_get_color(widget,f))); + g_string_append_printf(str,"%s",gdk_rgba_to_string(v3270_get_color(widget,f))); } set_string_to_config("terminal","colors","%s",str->str); g_string_free(str,TRUE); diff --git a/src/pw3270/globals.h b/src/pw3270/globals.h index 7f889e9..880d62d 100644 --- a/src/pw3270/globals.h +++ b/src/pw3270/globals.h @@ -60,7 +60,7 @@ G_GNUC_INTERNAL GtkWidget * create_main_window(const gchar *uri); G_GNUC_INTERNAL void setup_font_list(GtkWidget *widget, GtkWidget *obj); G_GNUC_INTERNAL void load_color_schemes(GtkWidget *widget, gchar *active); - G_GNUC_INTERNAL GtkWidget * color_scheme_new(const GdkColor *current); + G_GNUC_INTERNAL GtkWidget * color_scheme_new(const GdkRGBA *current); G_GNUC_INTERNAL LIB3270_OPTION pw3270_options_by_hosttype(const gchar *systype); G_GNUC_INTERNAL void run_security_dialog(GtkWidget *widget); diff --git a/src/pw3270/print.c b/src/pw3270/print.c index f4e56af..9edce27 100644 --- a/src/pw3270/print.c +++ b/src/pw3270/print.c @@ -47,7 +47,7 @@ typedef struct _print_info { - GdkColor color[V3270_COLOR_COUNT]; + GdkRGBA color[V3270_COLOR_COUNT]; int show_selection : 1; PW3270_SRC src; @@ -160,7 +160,7 @@ rect.width = info->extents.max_x_advance; // Clear page - gdk_cairo_set_source_color(cr,info->color+V3270_COLOR_BACKGROUND); + gdk_cairo_set_source_rgba(cr,info->color+V3270_COLOR_BACKGROUND); cairo_rectangle(cr, info->left-2, 0, (rect.width*info->cols)+4, (rect.height*info->rows)+4); cairo_fill(cr); cairo_stroke(cr); @@ -517,7 +517,7 @@ static gchar * enum_to_string(GType type, guint enum_value) static void custom_widget_apply(GtkPrintOperation *prt, GtkWidget *widget, PRINT_INFO *info) { GtkWidget * combo = g_object_get_data(G_OBJECT(widget),"combo"); - GdkColor * clr = g_object_get_data(G_OBJECT(combo),"selected"); + GdkRGBA * clr = g_object_get_data(G_OBJECT(combo),"selected"); trace("%s starts combo=%p clr=%p widget=%p",__FUNCTION__,combo,clr,widget); @@ -533,7 +533,7 @@ static gchar * enum_to_string(GType type, guint enum_value) info->color[f] = clr[f]; if(f) g_string_append_c(str,','); - g_string_append_printf(str,"%s",gdk_color_to_string(clr+f)); + g_string_append_printf(str,"%s",gdk_rgba_to_string(clr+f)); } set_string_to_config("print","colors","%s",str->str); g_string_free(str,TRUE); diff --git a/src/pw3270/v3270/draw.c b/src/pw3270/v3270/draw.c index c1490e4..48fbf3d 100644 --- a/src/pw3270/v3270/draw.c +++ b/src/pw3270/v3270/draw.c @@ -49,7 +49,7 @@ gboolean v3270_draw(GtkWidget * widget, cairo_t * cr) GtkAllocation allocation; gtk_widget_get_allocation(widget, &allocation); - gdk_cairo_set_source_color(cr,terminal->color+V3270_COLOR_CROSS_HAIR); + gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_CROSS_HAIR); cairo_rectangle(cr, 0,terminal->cursor.rect.y+terminal->metrics.height,allocation.width,1); cairo_fill(cr); @@ -94,7 +94,7 @@ gboolean v3270_expose(GtkWidget *widget, GdkEventExpose *event) #endif // GTk3 -static void get_element_colors(unsigned short attr, GdkColor **fg, GdkColor **bg, GdkColor *color) +static void get_element_colors(unsigned short attr, GdkRGBA **fg, GdkRGBA **bg, GdkRGBA *color) { if(attr & LIB3270_ATTR_SELECTED) { @@ -112,10 +112,10 @@ static void get_element_colors(unsigned short attr, GdkColor **fg, GdkColor **bg } } -void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *color) +void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *color) { - GdkColor *fg; - GdkColor *bg; + GdkRGBA *fg; + GdkRGBA *bg; get_element_colors(attr,&fg,&bg,color); v3270_draw_char(cr,chr,attr,session,height,rect,fg,bg); @@ -132,7 +132,7 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32 if(sl < 1) sl = 1; - gdk_cairo_set_source_color(cr,fg); + gdk_cairo_set_source_rgba(cr,fg); cairo_rectangle(cr,rect->x,rect->y+sl+extents.ascent+(extents.descent/2),rect->width,sl); cairo_fill(cr); @@ -143,15 +143,15 @@ void v3270_draw_element(cairo_t *cr, unsigned char chr, unsigned short attr, H32 } -void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *fg, GdkColor *bg) +void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg) { // Clear element area - gdk_cairo_set_source_color(cr,bg); + gdk_cairo_set_source_rgba(cr,bg); cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); // Set foreground color - gdk_cairo_set_source_color(cr,fg); + gdk_cairo_set_source_rgba(cr,fg); // Draw char if( (attr & LIB3270_ATTR_MARKER) && lib3270_get_toggle(session,LIB3270_TOGGLE_VIEW_FIELD) ) @@ -329,7 +329,7 @@ void v3270_reload(GtkWidget *widget) cr = cairo_create(terminal->surface); v3270_update_font_metrics(terminal, cr, width, height); - gdk_cairo_set_source_color(cr,terminal->color+V3270_COLOR_BACKGROUND); + gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_BACKGROUND); cairo_rectangle(cr, 0, 0, width, height); cairo_fill(cr); cairo_stroke(cr); @@ -422,8 +422,8 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned short { GdkRectangle rect = widget->cursor.rect; cairo_t * cr = cairo_create(widget->cursor.surface); - GdkColor * fg; - GdkColor * bg; + GdkRGBA * fg; + GdkRGBA * bg; get_element_colors(attr,&fg,&bg,widget->color); diff --git a/src/pw3270/v3270/oia.c b/src/pw3270/v3270/oia.c index 57dc512..ff350ec 100644 --- a/src/pw3270/v3270/oia.c +++ b/src/pw3270/v3270/oia.c @@ -70,7 +70,7 @@ static void short2string(char *ptr, unsigned short vlr, size_t sz) #ifdef HAVE_LIBM -static gint draw_spinner(cairo_t *cr, GdkRectangle *r, GdkColor *color, gint step) +static gint draw_spinner(cairo_t *cr, GdkRectangle *r, GdkRGBA *color, gint step) { static const guint num_steps = 10; @@ -123,7 +123,7 @@ static gint draw_spinner(cairo_t *cr, GdkRectangle *r, GdkColor *color, gint ste } #endif // HAVE_LIBM -static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { rect->width = metrics->width * 8; rect->x -= rect->width; @@ -135,7 +135,7 @@ static void setup_cursor_position(GdkRectangle *rect, struct v3270_metrics *metr } } -static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { char buffer[7]; cairo_text_extents_t extents; @@ -150,14 +150,14 @@ static void setup_timer_position(GdkRectangle *rect, struct v3270_metrics *metri rect->x -= rect->width; } -static void setup_spinner_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_spinner_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { rect->width = rect->height; rect->x -= rect->width; // draw_spinner(cr,rect,color,0); } -static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { const char *luname = lib3270_get_luname(host); @@ -171,7 +171,7 @@ static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metr #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); @@ -180,7 +180,7 @@ static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metr if(luname) { cairo_move_to(cr,rect->x,rect->y+metrics->height); - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_LUNAME); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_LUNAME); cairo_show_text(cr,luname); cairo_stroke(cr); } @@ -189,7 +189,7 @@ static void setup_luname_position(GdkRectangle *rect, struct v3270_metrics *metr } -static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { rect->x -= rect->width; @@ -201,7 +201,7 @@ static void setup_single_char_right(GdkRectangle *rect, struct v3270_metrics *me } -static void setup_insert_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_insert_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { if(rect->width > rect->height) { @@ -225,7 +225,7 @@ static void setup_insert_position(GdkRectangle *rect, struct v3270_metrics *metr -static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color) +static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color) { rect->width <<= 1; rect->x -= rect->width; @@ -238,12 +238,12 @@ static void setup_double_char_position(GdkRectangle *rect, struct v3270_metrics } -static void draw_undera(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) +static void draw_undera(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) { #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); @@ -255,11 +255,11 @@ static void draw_undera(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, cairo_text_extents_t extents; int x,y; - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); cairo_text_extents(cr,chr,&extents); @@ -286,15 +286,15 @@ static void draw_centered_text(cairo_t *cr, struct v3270_metrics *metrics, int x cairo_show_text(cr,str); } -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, const GdkRectangle *rect) +void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, const GdkRectangle *rect) { const gchar *str; - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_stroke(cr); @@ -337,12 +337,12 @@ static void draw_xbm(cairo_t *cr, GdkRectangle *rect, int width, int height, uns cairo_restore(cr); } -void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) +void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) { #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_translate(cr, rect->x, rect->y); @@ -352,24 +352,24 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri switch(lib3270_get_secure(host)) { case LIB3270_SSL_UNSECURE: /**< No secure connection */ - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); draw_xbm(cr,rect,unlocked_width,unlocked_height,unlocked_bits); break; case LIB3270_SSL_NEGOTIATING: /**< Negotiating SSL */ - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_STATUS_WARNING); draw_xbm(cr,rect,negotiated_width,negotiated_height,negotiated_bits); break; case LIB3270_SSL_NEGOTIATED: /**< Connection secure, no CA or self-signed */ - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_OK); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_STATUS_OK); draw_xbm(cr,rect,locked_width,locked_height,locked_bits); - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_WARNING); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_STATUS_WARNING); draw_xbm(cr,rect,warning_width,warning_height,warning_bits); break; case LIB3270_SSL_SECURE: /**< Connection secure with CA check */ - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_STATUS_OK); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_STATUS_OK); draw_xbm(cr,rect,locked_width,locked_height,locked_bits); break; @@ -381,7 +381,7 @@ void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metri } -static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) +static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) { #ifdef DEBUG #define OIA_MESSAGE(x,c,y) { #x, c, y } @@ -477,14 +477,14 @@ static void draw_status_message(cairo_t *cr, LIB3270_MESSAGE id, struct v3270_me if(msg) { - gdk_cairo_set_source_color(cr,color+message[id].color); + gdk_cairo_set_source_rgba(cr,color+message[id].color); cairo_move_to(cr,rect->x,rect->y+metrics->height); cairo_show_text(cr,gettext(msg)); } } -static void draw_insert(cairo_t *cr, H3270 *host, GdkColor *color, GdkRectangle *rect) +static void draw_insert(cairo_t *cr, H3270 *host, GdkRGBA *color, GdkRectangle *rect) { if(lib3270_get_toggle(host,LIB3270_TOGGLE_INSERT)) { @@ -493,7 +493,7 @@ static void draw_insert(cairo_t *cr, H3270 *host, GdkColor *color, GdkRectangle cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_clip(cr); - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); cairo_move_to(cr,rect->x,y); cairo_rel_line_to(cr,rect->width/2,-(rect->height/1.7)); @@ -503,12 +503,12 @@ static void draw_insert(cairo_t *cr, H3270 *host, GdkColor *color, GdkRectangle } -void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect) +void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect) { static const struct _right_fields { V3270_OIA_FIELD id; - void (*draw)(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkColor *color); + void (*draw)(GdkRectangle *rect, struct v3270_metrics *metrics, cairo_t *cr, H3270 *host, int cols, GdkRGBA *color); } right[] = { { V3270_OIA_CURSOR_POSITION, setup_cursor_position }, @@ -532,13 +532,13 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me int lCol = metrics->left+1; row += OIA_TOP_MARGIN; - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_SEPARATOR); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_SEPARATOR); cairo_rectangle(cr, metrics->left, row, cols*metrics->width, 1); cairo_fill(cr); row += 2; - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_BACKGROUND); cairo_rectangle(cr, metrics->left, row, cols*metrics->width, metrics->spacing); cairo_fill(cr); @@ -551,12 +551,12 @@ void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_me r->y = row; r->width = metrics->width; r->height = metrics->spacing; - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); right[f].draw(r,metrics,cr,host,cols,color); rCol = r->x - (metrics->width/3); } - gdk_cairo_set_source_color(cr,color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,color+V3270_COLOR_OIA_FOREGROUND); draw_centered_text(cr,metrics,lCol,row,"4"); @@ -630,13 +630,13 @@ static cairo_t * set_update_region(v3270 * terminal, GdkRectangle **r, V3270_OIA #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,terminal->color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); - gdk_cairo_set_source_color(cr,terminal->color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_OIA_FOREGROUND); return cr; } @@ -655,7 +655,7 @@ void v3270_update_luname(GtkWidget *widget,const gchar *name) if(name) { cairo_move_to(cr,rect->x,rect->y+terminal->metrics.height); - gdk_cairo_set_source_color(cr,terminal->color+V3270_COLOR_OIA_LUNAME); + gdk_cairo_set_source_rgba(cr,terminal->color+V3270_COLOR_OIA_LUNAME); cairo_show_text(cr,name); cairo_stroke(cr); } @@ -793,7 +793,7 @@ static void release_timer(struct timer_info *info) #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,info->terminal->color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,info->terminal->color+V3270_COLOR_OIA_BACKGROUND); #endif for(f=0;fterminal->color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,info->terminal->color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); - gdk_cairo_set_source_color(cr,info->terminal->color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,info->terminal->color+V3270_COLOR_OIA_FOREGROUND); short2string(buffer,seconds/60,2); buffer[2] = ':'; @@ -956,12 +956,12 @@ static gboolean update_timer(struct timer_info *info) #ifdef DEBUG cairo_set_source_rgb(cr,0.1,0.1,0.1); #else - gdk_cairo_set_source_color(cr,info->terminal->color+V3270_COLOR_OIA_BACKGROUND); + gdk_cairo_set_source_rgba(cr,info->terminal->color+V3270_COLOR_OIA_BACKGROUND); #endif cairo_rectangle(cr, rect->x, rect->y, rect->width, rect->height); cairo_fill(cr); - gdk_cairo_set_source_color(cr,info->terminal->color+V3270_COLOR_OIA_FOREGROUND); + gdk_cairo_set_source_rgba(cr,info->terminal->color+V3270_COLOR_OIA_FOREGROUND); info->step = draw_spinner(cr, rect, info->terminal->color, info->step); gtk_widget_queue_draw_area(GTK_WIDGET(info->terminal),rect->x,rect->y,rect->width,rect->height); diff --git a/src/pw3270/v3270/private.h b/src/pw3270/v3270/private.h index e06dd8b..2301427 100644 --- a/src/pw3270/v3270/private.h +++ b/src/pw3270/v3270/private.h @@ -176,7 +176,7 @@ G_BEGIN_DECLS gint minimum_height; // Colors - GdkColor color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ + GdkRGBA color[V3270_COLOR_COUNT]; /**< Terminal widget colors */ // Regions GdkRectangle oia_rect[V3270_OIA_FIELD_COUNT]; @@ -219,7 +219,7 @@ G_BEGIN_DECLS const GtkWidgetClass * v3270_get_parent_class(void); gboolean v3270_draw(GtkWidget * widget, cairo_t * cr); -void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect); +void v3270_draw_oia(cairo_t *cr, H3270 *host, int row, int cols, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect); void v3270_update_mouse_pointer(GtkWidget *widget); #if ! GTK_CHECK_VERSION(2,18,0) @@ -241,7 +241,9 @@ void v3270_update_mouse_pointer(GtkWidget *widget); #if ! GTK_CHECK_VERSION(3,0,0) - gboolean v3270_expose(GtkWidget * widget, GdkEventExpose *event); + +#define GdkRGBA +gboolean v3270_expose(GtkWidget * widget, GdkEventExpose *event); #endif // GTK 3 void v3270_draw_shift_status(v3270 *terminal); @@ -254,13 +256,13 @@ void v3270_update_cursor_surface(v3270 *widget,unsigned char chr,unsigned sho void v3270_register_io_handlers(v3270Class *cls); -void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkColor *fg, GdkColor *bg); +void v3270_draw_char(cairo_t *cr, unsigned char chr, unsigned short attr, H3270 *session, guint height, GdkRectangle *rect, GdkRGBA *fg, GdkRGBA *bg); void v3270_start_timer(GtkWidget *terminal); void v3270_stop_timer(GtkWidget *terminal); -void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, const GdkRectangle *rect); -void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkColor *color, GdkRectangle *rect); +void v3270_draw_connection(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, const GdkRectangle *rect); +void v3270_draw_ssl_status(cairo_t *cr, H3270 *host, struct v3270_metrics *metrics, GdkRGBA *color, GdkRectangle *rect); void v3270_update_char(H3270 *session, int addr, unsigned char chr, unsigned short attr, unsigned char cursor); diff --git a/src/pw3270/v3270/widget.c b/src/pw3270/v3270/widget.c index 02aa1f6..4c02f73 100644 --- a/src/pw3270/v3270/widget.c +++ b/src/pw3270/v3270/widget.c @@ -1227,7 +1227,7 @@ void v3270_set_colors(GtkWidget *widget, const gchar *colors) } -void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkColor *color) +void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkRGBA *color) { g_return_if_fail(GTK_IS_V3270(widget)); @@ -1238,24 +1238,24 @@ void v3270_set_color(GtkWidget *widget, enum V3270_COLOR id, GdkColor *color) #endif // !GTK(3,0,0) } -GdkColor * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id) +GdkRGBA * v3270_get_color(GtkWidget *widget, enum V3270_COLOR id) { g_return_val_if_fail(GTK_IS_V3270(widget),NULL); return GTK_V3270(widget)->color+id; } -const GdkColor * v3270_get_color_table(GtkWidget *widget) +const GdkRGBA * v3270_get_color_table(GtkWidget *widget) { g_return_val_if_fail(GTK_IS_V3270(widget),NULL); return GTK_V3270(widget)->color; } -void v3270_set_mono_color_table(GdkColor *clr, const gchar *fg, const gchar *bg) +void v3270_set_mono_color_table(GdkRGBA *clr, const gchar *fg, const gchar *bg) { int f; - gdk_color_parse(bg,clr); - gdk_color_parse(fg,clr+1); + gdk_rgba_parse(clr,bg); + gdk_rgba_parse(clr+1,fg); for(f=2;f