aboutsummaryrefslogtreecommitdiffstats
path: root/src/pgtkterm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pgtkterm.c')
-rw-r--r--src/pgtkterm.c35
1 files changed, 8 insertions, 27 deletions
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 4665a934718..3e8357e7749 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -1024,34 +1024,15 @@ create_background_surface_by_face (struct frame *f, struct face *face, int x, in
1024 } 1024 }
1025 1025
1026 if (face->stipple != 0) { 1026 if (face->stipple != 0) {
1027 GdkPixbuf *pixbuf = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].img; 1027 cairo_pattern_t *mask = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern;
1028 GdkPixbuf *pb = gdk_pixbuf_add_alpha (pixbuf, TRUE, 255, 255, 255);
1029 cairo_surface_t *mask = cairo_surface_create_similar_image (FRAME_CR_SURFACE (f),
1030 CAIRO_FORMAT_A1,
1031 width,
1032 height);
1033 1028
1034 { 1029 cairo_t *cr = cairo_create (surface);
1035 cairo_t *cr = cairo_create (mask); 1030 double r = ((face->foreground >> 16) & 0xff) / 255.0;
1036 gdk_cairo_set_source_pixbuf (cr, pb, 0, 0); 1031 double g = ((face->foreground >> 8) & 0xff) / 255.0;
1037 cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT); 1032 double b = ((face->foreground >> 0) & 0xff) / 255.0;
1038 cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); 1033 cairo_set_source_rgb (cr, r, g, b);
1039 cairo_paint (cr); 1034 cairo_mask (cr, mask);
1040 cairo_destroy (cr); 1035 cairo_destroy (cr);
1041 }
1042
1043 {
1044 cairo_t *cr = cairo_create (surface);
1045 double r = ((face->foreground >> 16) & 0xff) / 255.0;
1046 double g = ((face->foreground >> 8) & 0xff) / 255.0;
1047 double b = ((face->foreground >> 0) & 0xff) / 255.0;
1048 cairo_set_source_rgb (cr, r, g, b);
1049 cairo_mask_surface (cr, mask, 0, 0);
1050 cairo_destroy (cr);
1051 }
1052
1053 cairo_surface_destroy (mask);
1054 g_object_unref (pb);
1055 } 1036 }
1056 1037
1057 return surface; 1038 return surface;