From 41767c92d58681f9ebbe7ced24fc6c21c37d6f8e Mon Sep 17 00:00:00 2001 From: Holger Berndt Date: Fri, 30 Jul 2010 23:17:03 +0000 Subject: [PATCH] 2010-07-30 [holger] 3.7.6cvs25 * src/stock_pixmap.c More GdkGC to Cairo porting --- ChangeLog | 5 ++++ PATCHSETS | 1 + configure.ac | 2 +- src/stock_pixmap.c | 66 ++++++++++++++++++++++------------------------ 4 files changed, 38 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05d30cbae..d5264b23b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-07-30 [holger] 3.7.6cvs25 + + * src/stock_pixmap.c + More GdkGC to Cairo porting + 2010-07-30 [holger] 3.7.6cvs24 * src/gtk/colorlabel.c diff --git a/PATCHSETS b/PATCHSETS index be640753c..d0e0313b9 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -4020,3 +4020,4 @@ ( cvs diff -u -r 1.36.2.186 -r 1.36.2.187 src/common/utils.c; ) > 3.7.6cvs22.patchset ( cvs diff -u -r 1.1.2.29 -r 1.1.2.30 src/printing.c; ) > 3.7.6cvs23.patchset ( cvs diff -u -r 1.2.2.29 -r 1.2.2.30 src/gtk/colorlabel.c; ) > 3.7.6cvs24.patchset +( cvs diff -u -r 1.25.2.66 -r 1.25.2.67 src/stock_pixmap.c; ) > 3.7.6cvs25.patchset diff --git a/configure.ac b/configure.ac index bc3288a9a..5d81f63d0 100644 --- a/configure.ac +++ b/configure.ac @@ -12,7 +12,7 @@ MINOR_VERSION=7 MICRO_VERSION=6 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=24 +EXTRA_VERSION=25 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/stock_pixmap.c b/src/stock_pixmap.c index 4a60ee073..f542ee607 100644 --- a/src/stock_pixmap.c +++ b/src/stock_pixmap.c @@ -594,7 +594,7 @@ static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, GdkEventE OverlayData *data) { GdkDrawable *drawable = widget->window; - GdkGC *gc_pix; + cairo_t *cr; gint left = 0; gint top = 0; @@ -604,8 +604,8 @@ static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, GdkEventE } else { cm_return_val_if_fail(data->base_pixbuf != NULL, FALSE); } - gc_pix = gdk_gc_new((GdkWindow *)drawable); - + cr = gdk_cairo_create(drawable); + gdk_window_clear_area (drawable, expose->area.x, expose->area.y, expose->area.width, expose->area.height); @@ -614,33 +614,33 @@ static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, GdkEventE mw = mainwindow_get_mainwindow(); if (mw != NULL && mw->menubar != NULL) { - GdkGC *gc_frame = gdk_gc_new((GdkWindow *)drawable); + cairo_t *cr; GdkColor color = gtk_widget_get_style(mw->menubar)->base[GTK_STATE_SELECTED]; - gdk_gc_set_foreground(gc_frame, &color); - gdk_gc_set_line_attributes(gc_frame, 1, GDK_LINE_SOLID, - GDK_CAP_BUTT, GDK_JOIN_BEVEL); - gdk_draw_rectangle(drawable, gc_frame, FALSE, data->border_x-2, data->border_y-2, - data->base_width+3, data->base_height+3); - g_object_unref(gc_frame); + cr = gdk_cairo_create(drawable); + gdk_cairo_set_source_color(cr, &color); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); + cairo_set_line_width(cr, 1.); + cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT); + cairo_set_line_join(cr, CAIRO_LINE_JOIN_BEVEL); + cairo_rectangle(cr, data->border_x-2, data->border_y-2, + data->base_width+3, data->base_height+3); + cairo_stroke(cr); + cairo_destroy(cr); } } if (data->is_pixmap) { - gdk_gc_set_tile(gc_pix, data->base_pixmap); - gdk_gc_set_ts_origin(gc_pix, data->border_x, data->border_y); - gdk_gc_set_clip_mask(gc_pix, data->base_mask); - gdk_gc_set_clip_origin(gc_pix, data->border_x, data->border_y); - gdk_gc_set_fill(gc_pix, GDK_TILED); - gdk_draw_rectangle(drawable, gc_pix, TRUE, data->border_x, data->border_y, - data->base_width, data->base_height); + gdk_cairo_set_source_pixmap(cr, data->base_pixmap, data->border_x, data->border_y); + cairo_pattern_set_extend(cairo_get_source(cr), CAIRO_EXTEND_REPEAT); + cairo_rectangle(cr, data->border_x, data->border_y, + data->base_width, data->base_height); + cairo_fill(cr); } else { - gdk_draw_pixbuf(drawable, gc_pix, data->base_pixbuf, - 0, 0, data->border_x, data->border_y, - -1, -1, GDK_RGB_DITHER_NONE, 0, 0); + gdk_cairo_set_source_pixbuf(cr, data->base_pixbuf, data->border_x, data->border_y); + cairo_paint(cr); } - if (data->position != OVERLAY_NONE) { switch (data->position) { @@ -688,27 +688,23 @@ static gboolean pixmap_with_overlay_expose_event_cb(GtkWidget *widget, GdkEventE break; } } + if (data->position != OVERLAY_NONE) { if (data->is_pixmap) { cm_return_val_if_fail(data->overlay_pixmap != NULL, FALSE); cm_return_val_if_fail(data->overlay_mask != NULL, FALSE); - gdk_gc_set_tile(gc_pix, data->overlay_pixmap); - gdk_gc_set_clip_mask(gc_pix, data->overlay_mask); - - gdk_gc_set_ts_origin(gc_pix, left, top); - gdk_gc_set_clip_origin(gc_pix, left, top); - gdk_gc_set_fill(gc_pix, GDK_TILED); - gdk_draw_rectangle(drawable, gc_pix, TRUE, left, top, - data->overlay_width, data->overlay_height); + gdk_cairo_set_source_pixmap(cr, data->overlay_pixmap, left, top); + cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); + cairo_rectangle (cr, left, top, data->overlay_width, data->overlay_height); + cairo_fill(cr); } else { - cm_return_val_if_fail(data->overlay_pixbuf != NULL, FALSE); - gdk_draw_pixbuf(drawable, gc_pix, data->overlay_pixbuf, - 0, 0, left, top, - -1, -1, GDK_RGB_DITHER_NONE, 0, 0); - + cm_return_val_if_fail(data->overlay_pixbuf != NULL, FALSE); + gdk_cairo_set_source_pixbuf(cr, data->overlay_pixbuf, left, top); + cairo_paint(cr); } } - g_object_unref(gc_pix); + + cairo_destroy(cr); return TRUE; } -- 2.25.1