static void selection_render_mask (Selection *selection) { GdkWindow *window; cairo_surface_t *surface; cairo_t *cr; window = gtk_widget_get_window (selection->shell->canvas); surface = gdk_window_create_similar_surface (window, CAIRO_CONTENT_ALPHA, gdk_window_get_width (window), gdk_window_get_height (window)); cr = cairo_create (surface); cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); cairo_set_line_width (cr, 1.0); if (selection->shell->rotate_transform) cairo_transform (cr, selection->shell->rotate_transform); gimp_cairo_add_segments (cr, selection->segs_in, selection->n_segs_in); cairo_stroke (cr); selection->segs_in_mask = cairo_pattern_create_for_surface (surface); cairo_destroy (cr); cairo_surface_destroy (surface); }
static void selection_render_mask (Selection *selection) { cairo_t *cr; cr = gdk_cairo_create (gtk_widget_get_window (selection->shell->canvas)); cairo_push_group_with_content (cr, CAIRO_CONTENT_ALPHA); cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); cairo_set_line_width (cr, 1.0); gimp_cairo_add_segments (cr, selection->segs_in, selection->n_segs_in); cairo_stroke (cr); selection->segs_in_mask = cairo_pop_group (cr); cairo_destroy (cr); }