diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c index e8cd8c63f..dbff5a19f 100644 --- a/src/cairo-svg-surface.c +++ b/src/cairo-svg-surface.c @@ -2535,6 +2535,28 @@ _cairo_svg_surface_emit_composite_recording_pattern (cairo_svg_stream_t *output, return status; } + // FIXME error handling order + cairo_svg_paint_t *paint_entry = _cairo_calloc (sizeof (cairo_svg_paint_t)); + if (paint_entry == NULL) { + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } + + cairo_rectangle_int_t extents; + cairo_bool_t is_bounded; + // how to get extents ??? + is_bounded =_cairo_surface_get_extents (pattern->surface, &extents); + //assert (is_bounded); ??? + paint_entry->source_id = surface->source_id; + paint_entry->box.p1.x = extents.x; + paint_entry->box.p1.y = extents.y; + paint_entry->box.p2.x = extents.x + extents.width; + paint_entry->box.p2.y = extents.y + extents.height; + _cairo_svg_paint_box_add_padding (&paint_entry->box); + + _cairo_array_init (&paint_entry->paint_elements, sizeof (cairo_svg_paint_element_t)); + _cairo_svg_paint_init_key (paint_entry); + status = _cairo_hash_table_insert (document->paints, &paint_entry->base); + surface->transitive_paint_used = TRUE; } diff --git a/test/reference/ft-svg-render-doc.svg.ref.png b/test/reference/ft-svg-render-doc.svg.ref.png new file mode 100644 index 000000000..a22368980 Binary files /dev/null and b/test/reference/ft-svg-render-doc.svg.ref.png differ diff --git a/test/reference/ft-svg-render-doc.svg.rgb24.ref.png b/test/reference/ft-svg-render-doc.svg.rgb24.ref.png deleted file mode 100644 index 791feb909..000000000 Binary files a/test/reference/ft-svg-render-doc.svg.rgb24.ref.png and /dev/null differ