Hello community, here is the log from the commit of package librsvg for openSUSE:Factory checked in at 2016-04-28 16:49:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/librsvg (Old) and /work/SRC/openSUSE:Factory/.librsvg.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "librsvg" Changes: -------- --- /work/SRC/openSUSE:Factory/librsvg/librsvg.changes 2016-04-07 13:36:28.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.librsvg.new/librsvg.changes 2016-04-28 16:49:35.000000000 +0200 @@ -1,0 +2,6 @@ +Mon Apr 18 11:18:56 UTC 2016 - [email protected] + +- Add librsvg-Fix-rsvg-convert.patch: Actually scale the image if + required, regression fix from upstream git (bgo#760262). + +------------------------------------------------------------------- New: ---- librsvg-Fix-rsvg-convert.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ librsvg.spec ++++++ --- /var/tmp/diff_new_pack.LtfFF1/_old 2016-04-28 16:49:36.000000000 +0200 +++ /var/tmp/diff_new_pack.LtfFF1/_new 2016-04-28 16:49:36.000000000 +0200 @@ -25,6 +25,8 @@ Url: http://librsvg.sourceforge.net/ Source: http://download.gnome.org/sources/librsvg/2.40/%{name}-%{version}.tar.xz Source99: baselibs.conf +# PATCH-FIX-UPSTREAM librsvg-Fix-rsvg-convert.patch bgo#760262 [email protected] -- Actually scale the image if required, regression fix. +Patch0: librsvg-Fix-rsvg-convert.patch BuildRequires: gobject-introspection-devel BuildRequires: vala # Avoid cycle: we do not require the adwaita-icon-theme to be present. libgtk-3.0 requires this for end users @@ -120,6 +122,7 @@ %prep %setup -q +%patch0 -p1 %build %configure\ ++++++ librsvg-Fix-rsvg-convert.patch ++++++ >From 7db196eae60cc0dbbe3a262429bfecac3936c5b9 Mon Sep 17 00:00:00 2001 From: Menner <[email protected]> Date: Mon, 4 Apr 2016 13:15:44 -0500 Subject: bgo#760262: rsvg-convert: Actually scale the image if required Commit fecfcce44a959daff80a4e0f9ced83d7cdcb5903 removed a call to the deprecated function rsvg_handle_set_size_callback(), but this is what actually made the program scale the resulting image if required. Here we use a Cairo transformation matrix instead. https://bugzilla.gnome.org/show_bug.cgi?id=760262 Based on a patch by Menner <[email protected]> --- rsvg-convert.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/rsvg-convert.c b/rsvg-convert.c index 2befdff..1e3ed05 100644 --- a/rsvg-convert.c +++ b/rsvg-convert.c @@ -140,6 +140,8 @@ main (int argc, char **argv) RsvgDimensionData dimensions; FILE *output_file = stdout; char *export_lookup_id; + double unscaled_width, unscaled_height; + int scaled_width, scaled_height; #ifdef G_OS_WIN32 HANDLE handle; @@ -319,6 +321,9 @@ main (int argc, char **argv) if (!rsvg_handle_get_dimensions_sub (rsvg, &dimensions, export_lookup_id)) g_printerr ("Could not get dimensions for file %s\n", args[i]); + unscaled_width = dimensions.width; + unscaled_height = dimensions.height; + /* if both are unspecified, assume user wants to zoom the image in at least 1 dimension */ if (width == -1 && height == -1) { size_data.type = RSVG_SIZE_ZOOM; @@ -348,20 +353,22 @@ main (int argc, char **argv) size_data.keep_aspect_ratio = keep_aspect_ratio; } - _rsvg_size_callback (&dimensions.width, &dimensions.height, &size_data); + scaled_width = dimensions.width; + scaled_height = dimensions.height; + _rsvg_size_callback (&scaled_width, &scaled_height, &size_data); if (!format || !strcmp (format, "png")) surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - dimensions.width, dimensions.height); + scaled_width, scaled_height); #ifdef CAIRO_HAS_PDF_SURFACE else if (!strcmp (format, "pdf")) surface = cairo_pdf_surface_create_for_stream (rsvg_cairo_write_func, output_file, - dimensions.width, dimensions.height); + scaled_width, scaled_height); #endif #ifdef CAIRO_HAS_PS_SURFACE else if (!strcmp (format, "ps") || !strcmp (format, "eps")){ surface = cairo_ps_surface_create_for_stream (rsvg_cairo_write_func, output_file, - dimensions.width, dimensions.height); + scaled_width, scaled_height); if(!strcmp (format, "eps")) cairo_ps_surface_set_eps(surface, TRUE); } @@ -369,13 +376,13 @@ main (int argc, char **argv) #ifdef CAIRO_HAS_SVG_SURFACE else if (!strcmp (format, "svg")) surface = cairo_svg_surface_create_for_stream (rsvg_cairo_write_func, output_file, - dimensions.width, dimensions.height); + scaled_width, scaled_height); #endif #ifdef CAIRO_HAS_XML_SURFACE else if (!strcmp (format, "xml")) { cairo_device_t *device = cairo_xml_create_for_stream (rsvg_cairo_write_func, output_file); surface = cairo_xml_surface_create (device, CAIRO_CONTENT_COLOR_ALPHA, - dimensions.width, dimensions.height); + scaled_width, scaled_height); cairo_device_destroy (device); } #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE (1, 10, 0) @@ -400,7 +407,7 @@ main (int argc, char **argv) ((background_color >> 16) & 0xff) / 255.0, ((background_color >> 8) & 0xff) / 255.0, ((background_color >> 0) & 0xff) / 255.0); - cairo_rectangle (cr, 0, 0, dimensions.width, dimensions.height); + cairo_rectangle (cr, 0, 0, scaled_width, scaled_height); cairo_fill (cr); } @@ -416,6 +423,9 @@ main (int argc, char **argv) cairo_translate (cr, -pos.x, -pos.y); } + cairo_scale (cr, + scaled_width / unscaled_width, + scaled_height / unscaled_height); rsvg_handle_render_cairo_sub (rsvg, cr, export_lookup_id); g_free (export_lookup_id); -- cgit v0.12
