summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2018-12-02 19:44:03 +1030
committerAdrian Johnson <ajohnson@redneon.com>2018-12-02 21:30:51 +1030
commit3c4570f8f49655735e13b35295ae3bc3ec81d027 (patch)
tree13fb3f26036bdec6ff735392318a78c7ce6b2390
parent01788f5edbab01ff7148af288faf87df7373ed2a (diff)
ps: fix invalid matrix in eps embedding
-rw-r--r--src/cairo-ps-surface-private.h2
-rw-r--r--src/cairo-ps-surface.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/src/cairo-ps-surface-private.h b/src/cairo-ps-surface-private.h
index e1681c889..f18403190 100644
--- a/src/cairo-ps-surface-private.h
+++ b/src/cairo-ps-surface-private.h
@@ -56,6 +56,8 @@ typedef struct _cairo_ps_form {
cairo_bool_t is_image;
int id;
cairo_surface_t *src_surface;
+ cairo_rectangle_int_t src_surface_extents;
+ cairo_bool_t src_surface_bounded;
cairo_filter_t filter;
/* Union of source extents required for all operations using this form */
diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
index 0a17b81af..c4643f824 100644
--- a/src/cairo-ps-surface.c
+++ b/src/cairo-ps-surface.c
@@ -3548,6 +3548,8 @@ _cairo_ps_surface_use_form (cairo_ps_surface_t *surface,
source_entry->unique_id = unique_id;
source_entry->id = surface->num_forms++;
source_entry->src_surface = cairo_surface_reference (params->src_surface);
+ source_entry->src_surface_extents = *params->src_surface_extents;
+ source_entry->src_surface_bounded = params->src_surface_bounded;
source_entry->required_extents = *params->src_op_extents;
source_entry->filter = params->filter;
source_entry->is_image = params->is_image;
@@ -3726,11 +3728,14 @@ _cairo_ps_form_emit (void *entry, void *closure)
params.src_surface = form->src_surface;
params.op = CAIRO_OPERATOR_OVER;
+ params.src_surface_extents = &form->src_surface_extents;
+ params.src_surface_bounded = form->src_surface_bounded;
params.src_op_extents = &form->required_extents;
params.filter = form->filter;
params.stencil_mask = FALSE;
params.is_image = form->is_image;
params.approx_size = 0;
+ params.eod_count = 0;
_cairo_output_stream_printf (surface->final_stream,
"%%%%BeginResource: form cairoform-%d\n",