b2ba33
--- libgxps-0.3.0/libgxps/gxps-brush.c
b2ba33
+++ libgxps-0.3.0/libgxps/gxps-brush.c
5cd71d
@@ -965,7 +965,7 @@ brush_end_element (GMarkupParseContext
5cd71d
                 g_markup_parse_context_pop (context);
5cd71d
         } else if (strcmp (element_name, "ImageBrush") == 0) {
5cd71d
                 GXPSBrushImage  *brush_image;
5cd71d
-                GXPSImage       *image;
5cd71d
+                cairo_surface_t *image;
5cd71d
                 GError          *err = NULL;
5cd71d
 
5cd71d
                 brush_image = g_markup_parse_context_pop (context);
5cd71d
@@ -976,14 +976,20 @@ brush_end_element (GMarkupParseContext
5cd71d
                         cairo_matrix_t   matrix;
5cd71d
                         gdouble          x_scale, y_scale;
5cd71d
                         cairo_surface_t *clip_surface;
5cd71d
+                        double          *res_x, *res_y;
5cd71d
 
5cd71d
-                        /* viewbox units is 1/96 inch, convert to pixels */
5cd71d
-                        brush_image->viewbox.x *= image->res_x / 96;
5cd71d
-                        brush_image->viewbox.y *= image->res_y / 96;
5cd71d
-                        brush_image->viewbox.width *= image->res_x / 96;
5cd71d
-                        brush_image->viewbox.height *= image->res_y / 96;
5cd71d
+                        res_x = cairo_surface_get_user_data (image, (const cairo_user_data_key_t *) 0x1);
5cd71d
+                        res_y = cairo_surface_get_user_data (image, (const cairo_user_data_key_t *) 0x2);
5cd71d
 
5cd71d
-                        clip_surface = cairo_surface_create_for_rectangle (image->surface,
5cd71d
+                        if (res_x != NULL && res_y != NULL) {
5cd71d
+                                /* viewbox units is 1/96 inch, convert to pixels */
5cd71d
+                                brush_image->viewbox.x *= *res_x / 96;
5cd71d
+                                brush_image->viewbox.y *= *res_y / 96;
5cd71d
+                                brush_image->viewbox.width *= *res_x / 96;
5cd71d
+                                brush_image->viewbox.height *= *res_y / 96;
5cd71d
+                        }
5cd71d
+
5cd71d
+                        clip_surface = cairo_surface_create_for_rectangle (image,
5cd71d
                                                                            brush_image->viewbox.x,
5cd71d
                                                                            brush_image->viewbox.y,
5cd71d
                                                                            brush_image->viewbox.width,
b2ba33
--- libgxps-0.3.0/libgxps/gxps-images.c
b2ba33
+++ libgxps-0.3.0/libgxps/gxps-images.c
5cd71d
@@ -88,6 +88,45 @@ multiply_alpha (int alpha, int color)
5cd71d
 	return ((temp + (temp >> 8)) >> 8);
5cd71d
 }
5cd71d
 
5cd71d
+static void
5cd71d
+image_set_res_x (cairo_surface_t *image,
5cd71d
+                 double           res_x)
5cd71d
+{
5cd71d
+	double *x;
5cd71d
+
5cd71d
+	x = g_new (double, 1);
5cd71d
+	*x = res_x;
5cd71d
+
5cd71d
+	cairo_surface_set_user_data (image,
5cd71d
+				     (const cairo_user_data_key_t *) 0x1,
5cd71d
+				     x,
5cd71d
+				     (cairo_destroy_func_t) g_free);
5cd71d
+}
5cd71d
+
5cd71d
+static void
5cd71d
+image_set_res_y (cairo_surface_t *image,
5cd71d
+                 double           res_y)
5cd71d
+{
5cd71d
+	double *y;
5cd71d
+
5cd71d
+	y = g_new (double, 1);
5cd71d
+	*y = res_y;
5cd71d
+
5cd71d
+	cairo_surface_set_user_data (image,
5cd71d
+				     (const cairo_user_data_key_t *) 0x2,
5cd71d
+				     y,
5cd71d
+				     (cairo_destroy_func_t) g_free);
5cd71d
+}
5cd71d
+
5cd71d
+static void
5cd71d
+image_set_res (cairo_surface_t *image,
5cd71d
+               double           res_x,
5cd71d
+               double           res_y)
5cd71d
+{
5cd71d
+	image_set_res_x (image, res_x);
5cd71d
+	image_set_res_y (image, res_y);
5cd71d
+}
5cd71d
+
5cd71d
 /* Premultiplies data and converts RGBA bytes => native endian
5cd71d
  * From cairo's cairo-png.c <http://cairographics.org> */
5cd71d
 static void
5cd71d
@@ -163,14 +202,14 @@ fill_png_error (GError      **error,
5cd71d
 
5cd71d
 /* Adapted from cairo's read_png in cairo-png.c
5cd71d
  * http://cairographics.org/ */
5cd71d
-static GXPSImage *
5cd71d
+static cairo_surface_t *
5cd71d
 gxps_images_create_from_png (GXPSArchive *zip,
5cd71d
 			     const gchar *image_uri,
5cd71d
 			     GError     **error)
5cd71d
 {
5cd71d
 #ifdef HAVE_LIBPNG
5cd71d
 	GInputStream  *stream;
5cd71d
-	GXPSImage     *image = NULL;
5cd71d
+	cairo_surface_t *image = NULL;
5cd71d
 	char          *png_err_msg = NULL;
5cd71d
 	png_struct    *png;
5cd71d
 	png_info      *info;
5cd71d
@@ -181,6 +220,7 @@ gxps_images_create_from_png (GXPSArchive
5cd71d
 	unsigned int   i;
5cd71d
 	cairo_format_t format;
5cd71d
 	cairo_status_t status;
5cd71d
+	double         res_x, res_y;
5cd71d
 
5cd71d
 	stream = gxps_archive_open (zip, image_uri);
5cd71d
 	if (!stream) {
5cd71d
@@ -217,7 +257,7 @@ gxps_images_create_from_png (GXPSArchive
5cd71d
 		g_free (png_err_msg);
5cd71d
 		g_object_unref (stream);
5cd71d
 		png_destroy_read_struct (&png, &info, NULL);
5cd71d
-		gxps_image_free (image);
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		g_free (row_pointers);
5cd71d
 		g_free (data);
5cd71d
 		return NULL;
b2ba33
@@ -295,13 +335,12 @@ gxps_images_create_from_png (GXPSArchive
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
 
5cd71d
-	image = g_slice_new0 (GXPSImage);
5cd71d
-	image->res_x = png_get_x_pixels_per_meter (png, info) * METERS_PER_INCH;
5cd71d
-	if (image->res_x == 0)
5cd71d
-		image->res_x = 96;
5cd71d
-	image->res_y = png_get_y_pixels_per_meter (png, info) * METERS_PER_INCH;
5cd71d
-	if (image->res_y == 0)
5cd71d
-		image->res_y = 96;
5cd71d
+	res_x = png_get_x_pixels_per_meter (png, info) * METERS_PER_INCH;
5cd71d
+	if (res_x == 0)
5cd71d
+		res_x = 96;
5cd71d
+	res_y = png_get_y_pixels_per_meter (png, info) * METERS_PER_INCH;
5cd71d
+	if (res_y == 0)
5cd71d
+		res_y = 96;
5cd71d
 
5cd71d
 	data = g_malloc (png_height * stride);
5cd71d
 	row_pointers = g_new (png_byte *, png_height);
b2ba33
@@ -315,23 +354,25 @@ gxps_images_create_from_png (GXPSArchive
5cd71d
 	g_object_unref (stream);
5cd71d
 	g_free (row_pointers);
5cd71d
 
5cd71d
-	image->surface = cairo_image_surface_create_for_data (data, format,
5cd71d
-							      png_width, png_height,
5cd71d
-							      stride);
5cd71d
-	if (cairo_surface_status (image->surface)) {
5cd71d
+	image = cairo_image_surface_create_for_data (data, format,
5cd71d
+						     png_width, png_height,
5cd71d
+						     stride);
5cd71d
+	if (cairo_surface_status (image)) {
5cd71d
 		fill_png_error (error, image_uri, NULL);
5cd71d
-		gxps_image_free (image);
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		g_free (data);
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
 
5cd71d
-	status = cairo_surface_set_user_data (image->surface,
b2ba33
+        image_set_res (image, res_x, res_y);
b2ba33
+
5cd71d
+	status = cairo_surface_set_user_data (image,
5cd71d
 					      &image_data_cairo_key,
5cd71d
 					      data,
5cd71d
 					      (cairo_destroy_func_t) g_free);
5cd71d
 	if (status) {
5cd71d
 		fill_png_error (error, image_uri, NULL);
5cd71d
-		gxps_image_free (image);
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		g_free (data);
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
@@ -423,7 +463,7 @@ _jpeg_error_exit (j_common_ptr error)
5cd71d
 }
5cd71d
 #endif /* HAVE_LIBJPEG */
5cd71d
 
5cd71d
-static GXPSImage *
5cd71d
+static cairo_surface_t *
5cd71d
 gxps_images_create_from_jpeg (GXPSArchive *zip,
5cd71d
 			      const gchar *image_uri,
5cd71d
 			      GError     **error)
5cd71d
@@ -433,7 +473,7 @@ gxps_images_create_from_jpeg (GXPSArchiv
5cd71d
 	struct jpeg_error_mgr         error_mgr;
5cd71d
 	struct jpeg_decompress_struct cinfo;
5cd71d
 	struct _jpeg_src_mgr          src;
5cd71d
-	GXPSImage                    *image;
5cd71d
+	cairo_surface_t              *image;
5cd71d
 	guchar                       *data;
5cd71d
 	gint                          stride;
5cd71d
 	JSAMPARRAY                    lines;
5cd71d
@@ -484,28 +524,26 @@ gxps_images_create_from_jpeg (GXPSArchiv
5cd71d
 	cinfo.do_fancy_upsampling = FALSE;
5cd71d
 	jpeg_start_decompress (&cinfo);
5cd71d
 
5cd71d
-	image = g_slice_new (GXPSImage);
5cd71d
-	image->surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
5cd71d
-						     cinfo.output_width,
5cd71d
-						     cinfo.output_height);
5cd71d
-	image->res_x = 96;
5cd71d
-	image->res_y = 96;
5cd71d
-	if (cairo_surface_status (image->surface)) {
5cd71d
+	image = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
5cd71d
+					    cinfo.output_width,
5cd71d
+					    cinfo.output_height);
5cd71d
+        image_set_res (image, 96, 96);
5cd71d
+	if (cairo_surface_status (image)) {
5cd71d
 		g_set_error (error,
5cd71d
 			     GXPS_ERROR,
5cd71d
 			     GXPS_ERROR_IMAGE,
5cd71d
 			     "Error loading JPEG image %s: %s",
5cd71d
 			     image_uri,
5cd71d
-			     cairo_status_to_string (cairo_surface_status (image->surface)));
5cd71d
+			     cairo_status_to_string (cairo_surface_status (image)));
5cd71d
 		jpeg_destroy_decompress (&cinfo);
5cd71d
-		gxps_image_free (image);
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		g_object_unref (stream);
5cd71d
 
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
 
5cd71d
-	data = cairo_image_surface_get_data (image->surface);
5cd71d
-	stride = cairo_image_surface_get_stride (image->surface);
5cd71d
+	data = cairo_image_surface_get_data (image);
5cd71d
+	stride = cairo_image_surface_get_stride (image);
5cd71d
 	jpeg_stride = cinfo.output_width * cinfo.out_color_components;
5cd71d
 	lines = cinfo.mem->alloc_sarray((j_common_ptr) &cinfo, JPOOL_IMAGE, jpeg_stride, 4);
5cd71d
 
5cd71d
@@ -535,7 +573,7 @@ gxps_images_create_from_jpeg (GXPSArchiv
5cd71d
 					GXPS_DEBUG (g_message ("Unsupported jpeg color space %s",
5cd71d
                                                                _jpeg_color_space_name (cinfo.out_color_space)));
5cd71d
 
5cd71d
-					gxps_image_free (image);
5cd71d
+					cairo_surface_destroy (image);
5cd71d
 					jpeg_destroy_decompress (&cinfo);
5cd71d
 					g_object_unref (stream);
5cd71d
 					return NULL;
5cd71d
@@ -549,27 +587,25 @@ gxps_images_create_from_jpeg (GXPSArchiv
5cd71d
 	}
5cd71d
 
5cd71d
 	if (cinfo.density_unit == 1) { /* dots/inch */
5cd71d
-		image->res_x = cinfo.X_density;
5cd71d
-		image->res_y = cinfo.Y_density;
5cd71d
+		image_set_res (image, cinfo.X_density, cinfo.Y_density);
5cd71d
 	} else if (cinfo.density_unit == 2) { /* dots/cm */
5cd71d
-		image->res_x = cinfo.X_density * CENTIMETERS_PER_INCH;
5cd71d
-		image->res_y = cinfo.Y_density * CENTIMETERS_PER_INCH;
5cd71d
+		image_set_res (image, cinfo.X_density * CENTIMETERS_PER_INCH, cinfo.Y_density * CENTIMETERS_PER_INCH);
5cd71d
 	}
5cd71d
 
5cd71d
 	jpeg_finish_decompress (&cinfo);
5cd71d
 	jpeg_destroy_decompress (&cinfo);
5cd71d
 	g_object_unref (stream);
5cd71d
 
5cd71d
-	cairo_surface_mark_dirty (image->surface);
5cd71d
+	cairo_surface_mark_dirty (image);
5cd71d
 
5cd71d
-	if (cairo_surface_status (image->surface)) {
5cd71d
+	if (cairo_surface_status (image)) {
5cd71d
 		g_set_error (error,
5cd71d
 			     GXPS_ERROR,
5cd71d
 			     GXPS_ERROR_IMAGE,
5cd71d
 			     "Error loading JPEG image %s: %s",
5cd71d
 			     image_uri,
5cd71d
-			     cairo_status_to_string (cairo_surface_status (image->surface)));
5cd71d
-		gxps_image_free (image);
5cd71d
+			     cairo_status_to_string (cairo_surface_status (image)));
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
@@ -728,7 +764,7 @@ _tiff_unmap_file (thandle_t handle,
5cd71d
 }
5cd71d
 #endif /* #ifdef HAVE_LIBTIFF */
5cd71d
 
5cd71d
-static GXPSImage *
5cd71d
+static cairo_surface_t *
5cd71d
 gxps_images_create_from_tiff (GXPSArchive *zip,
5cd71d
 			      const gchar *image_uri,
5cd71d
 			      GError     **error)
5cd71d
@@ -736,7 +772,7 @@ gxps_images_create_from_tiff (GXPSArchiv
5cd71d
 #ifdef HAVE_LIBTIFF
5cd71d
 	TIFF       *tiff;
5cd71d
 	TiffBuffer  buffer;
5cd71d
-	GXPSImage  *image;
5cd71d
+	cairo_surface_t *image;
5cd71d
 	gint        width, height;
5cd71d
 	guint16     res_unit;
5cd71d
 	float       res_x, res_y;
5cd71d
@@ -802,49 +838,47 @@ gxps_images_create_from_tiff (GXPSArchiv
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
 
5cd71d
-	image = g_slice_new (GXPSImage);
5cd71d
-	image->surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
5cd71d
-						     width, height);
5cd71d
-	image->res_x = 96;
5cd71d
-	image->res_y = 96;
5cd71d
+	image = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
5cd71d
+					    width, height);
5cd71d
+	image_set_res (image, 96, 96);
5cd71d
 
5cd71d
 	if (!TIFFGetField (tiff, TIFFTAG_RESOLUTIONUNIT, &res_unit))
5cd71d
 		res_unit = 0;
5cd71d
 	if (TIFFGetField (tiff, TIFFTAG_XRESOLUTION, &res_x)) {
5cd71d
 		if (res_unit == 2) { /* inches */
5cd71d
-			image->res_x = res_x;
5cd71d
+			image_set_res_x (image, res_x);
5cd71d
 		} else if (res_unit == 3) { /* centimeters */
5cd71d
-			image->res_x = res_x * CENTIMETERS_PER_INCH;
5cd71d
+			image_set_res_x (image, res_x * CENTIMETERS_PER_INCH);
5cd71d
 		}
5cd71d
 	}
5cd71d
 	if (TIFFGetField (tiff, TIFFTAG_YRESOLUTION, &res_y)) {
5cd71d
 		if (res_unit == 2) { /* inches */
5cd71d
-			image->res_y = res_y;
5cd71d
+			image_set_res_y (image, res_y);
5cd71d
 		} else if (res_unit == 3) { /* centimeters */
5cd71d
-			image->res_y = res_y * CENTIMETERS_PER_INCH;
5cd71d
+			image_set_res_y (image, res_y * CENTIMETERS_PER_INCH);
5cd71d
 		}
5cd71d
 	}
5cd71d
 
5cd71d
-	if (cairo_surface_status (image->surface)) {
5cd71d
+	if (cairo_surface_status (image)) {
5cd71d
 		g_set_error (error,
5cd71d
 			     GXPS_ERROR,
5cd71d
 			     GXPS_ERROR_IMAGE,
5cd71d
 			     "Error loading TIFF image %s: %s",
5cd71d
 			     image_uri,
5cd71d
-			     cairo_status_to_string (cairo_surface_status (image->surface)));
5cd71d
-		gxps_image_free (image);
5cd71d
+			     cairo_status_to_string (cairo_surface_status (image)));
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		TIFFClose (tiff);
5cd71d
 		_tiff_pop_handlers ();
5cd71d
 		g_free (buffer.buffer);
5cd71d
 		return NULL;
5cd71d
 	}
5cd71d
 
5cd71d
-	data = cairo_image_surface_get_data (image->surface);
5cd71d
+	data = cairo_image_surface_get_data (image);
5cd71d
 	if (!TIFFReadRGBAImageOriented (tiff, width, height,
5cd71d
 					(uint32 *)data,
5cd71d
 					ORIENTATION_TOPLEFT, 1) || _tiff_error) {
5cd71d
 		fill_tiff_error (error, image_uri);
5cd71d
-		gxps_image_free (image);
5cd71d
+		cairo_surface_destroy (image);
5cd71d
 		TIFFClose (tiff);
5cd71d
 		_tiff_pop_handlers ();
5cd71d
 		g_free (buffer.buffer);
5cd71d
@@ -855,7 +889,7 @@ gxps_images_create_from_tiff (GXPSArchiv
5cd71d
 	_tiff_pop_handlers ();
5cd71d
 	g_free (buffer.buffer);
5cd71d
 
5cd71d
-	stride = cairo_image_surface_get_stride (image->surface);
5cd71d
+	stride = cairo_image_surface_get_stride (image);
5cd71d
 	p = data;
5cd71d
 	while (p < data + (height * stride)) {
5cd71d
 		guint32 *pixel = (guint32 *)p;
5cd71d
@@ -869,7 +903,7 @@ gxps_images_create_from_tiff (GXPSArchiv
5cd71d
 		p += 4;
5cd71d
 	}
5cd71d
 
5cd71d
-	cairo_surface_mark_dirty (image->surface);
5cd71d
+	cairo_surface_mark_dirty (image);
5cd71d
 
5cd71d
 	return image;
5cd71d
 #else
5cd71d
@@ -897,12 +931,12 @@ gxps_images_guess_content_type (GXPSArch
5cd71d
 	return mime_type;
5cd71d
 }
5cd71d
 
5cd71d
-GXPSImage *
5cd71d
+cairo_surface_t *
5cd71d
 gxps_images_get_image (GXPSArchive *zip,
5cd71d
 		       const gchar *image_uri,
5cd71d
 		       GError     **error)
5cd71d
 {
5cd71d
-	GXPSImage *image = NULL;
5cd71d
+	cairo_surface_t *image = NULL;
5cd71d
 	gchar *image_uri_lower;
5cd71d
 
5cd71d
 	/* First try with extensions,
5cd71d
@@ -942,15 +976,3 @@ gxps_images_get_image (GXPSArchive *zip,
5cd71d
 
5cd71d
 	return image;
5cd71d
 }
5cd71d
-
5cd71d
-void
5cd71d
-gxps_image_free (GXPSImage *image)
5cd71d
-{
5cd71d
-	if (G_UNLIKELY (!image))
5cd71d
-		return;
5cd71d
-
5cd71d
-	if (G_LIKELY (image->surface))
5cd71d
-		cairo_surface_destroy (image->surface);
5cd71d
-
5cd71d
-	g_slice_free (GXPSImage, image);
5cd71d
-}
b2ba33
--- libgxps-0.3.0/libgxps/gxps-images.h
b2ba33
+++ libgxps-0.3.0/libgxps/gxps-images.h
5cd71d
@@ -25,18 +25,9 @@
5cd71d
 
5cd71d
 G_BEGIN_DECLS
5cd71d
 
5cd71d
-typedef struct _GXPSImage GXPSImage;
5cd71d
-
5cd71d
-struct _GXPSImage {
5cd71d
-	cairo_surface_t *surface;
5cd71d
-	double           res_x;
5cd71d
-	double           res_y;
5cd71d
-};
5cd71d
-
5cd71d
-GXPSImage *gxps_images_get_image (GXPSArchive  *zip,
5cd71d
-                                  const gchar  *image_uri,
5cd71d
-                                  GError      **error);
5cd71d
-void       gxps_image_free       (GXPSImage    *image);
5cd71d
+cairo_surface_t *gxps_images_get_image (GXPSArchive  *zip,
5cd71d
+                                        const gchar  *image_uri,
5cd71d
+                                        GError      **error);
5cd71d
 
5cd71d
 G_END_DECLS
5cd71d
 
b2ba33
--- libgxps-0.3.0/libgxps/gxps-page.c
b2ba33
+++ libgxps-0.3.0/libgxps/gxps-page.c
5cd71d
@@ -77,12 +77,12 @@ gxps_page_error_quark (void)
5cd71d
 }
5cd71d
 
5cd71d
 /* Images */
5cd71d
-GXPSImage *
5cd71d
+cairo_surface_t *
5cd71d
 gxps_page_get_image (GXPSPage    *page,
5cd71d
 		     const gchar *image_uri,
5cd71d
 		     GError     **error)
5cd71d
 {
5cd71d
-	GXPSImage *image;
5cd71d
+	cairo_surface_t *image;
5cd71d
 
5cd71d
 	if (page->priv->image_cache) {
5cd71d
 		image = g_hash_table_lookup (page->priv->image_cache,
5cd71d
@@ -99,12 +99,12 @@ gxps_page_get_image (GXPSPage    *page,
5cd71d
 		page->priv->image_cache = g_hash_table_new_full (g_str_hash,
5cd71d
 								 g_str_equal,
5cd71d
 								 (GDestroyNotify)g_free,
5cd71d
-								 (GDestroyNotify)gxps_image_free);
5cd71d
+								 (GDestroyNotify)cairo_surface_destroy);
5cd71d
 	}
5cd71d
 
5cd71d
 	g_hash_table_insert (page->priv->image_cache,
5cd71d
 			     g_strdup (image_uri),
5cd71d
-			     image);
5cd71d
+			     cairo_surface_reference (image));
5cd71d
 	return image;
5cd71d
 }
5cd71d
 
b2ba33
--- libgxps-0.3.0/libgxps/gxps-page-private.h
b2ba33
+++ libgxps-0.3.0/libgxps/gxps-page-private.h
5cd71d
@@ -58,9 +58,9 @@ struct _GXPSRenderContext {
5cd71d
         GXPSBrushVisual *visual;
5cd71d
 };
5cd71d
 
5cd71d
-GXPSImage *gxps_page_get_image          (GXPSPage            *page,
5cd71d
-                                         const gchar         *image_uri,
5cd71d
-                                         GError             **error);
5cd71d
+cairo_surface_t *gxps_page_get_image          (GXPSPage            *page,
5cd71d
+                                               const gchar         *image_uri,
5cd71d
+                                               GError             **error);
5cd71d
 void       gxps_page_render_parser_push (GMarkupParseContext *context,
5cd71d
                                          GXPSRenderContext   *ctx);
5cd71d