Revision: 148982 https://trac.macports.org/changeset/148982 Author: devans@macports.org Date: 2016-05-24 09:00:40 -0700 (Tue, 24 May 2016) Log Message: ----------- librsvg: revert upstream commit that broken scaling (#51473). Modified Paths: -------------- trunk/dports/graphics/librsvg/Portfile Added Paths: ----------- trunk/dports/graphics/librsvg/files/01_Revert-bgo-520654-Support-export-id-in-rsvg-convert-.patch Modified: trunk/dports/graphics/librsvg/Portfile =================================================================== --- trunk/dports/graphics/librsvg/Portfile 2016-05-24 09:57:45 UTC (rev 148981) +++ trunk/dports/graphics/librsvg/Portfile 2016-05-24 16:00:40 UTC (rev 148982) @@ -6,6 +6,7 @@ name librsvg version 2.40.15 +revision 1 license {GPL-2+ LGPL-2+} set branch [join [lrange [split ${version} .] 0 1] .] categories graphics gnome @@ -38,6 +39,8 @@ gobject_introspection yes +patchfiles 01_Revert-bgo-520654-Support-export-id-in-rsvg-convert-.patch + configure.args --enable-vala=yes \ --disable-silent-rules \ --disable-Bsymbolic Added: trunk/dports/graphics/librsvg/files/01_Revert-bgo-520654-Support-export-id-in-rsvg-convert-.patch =================================================================== --- trunk/dports/graphics/librsvg/files/01_Revert-bgo-520654-Support-export-id-in-rsvg-convert-.patch (rev 0) +++ trunk/dports/graphics/librsvg/files/01_Revert-bgo-520654-Support-export-id-in-rsvg-convert-.patch 2016-05-24 16:00:40 UTC (rev 148982) @@ -0,0 +1,153 @@ +From 34f63da0ca65aef62c151dab9497cb3995e2bf9e Mon Sep 17 00:00:00 2001 +From: Michael Biebl <biebl@debian.org> +Date: Tue, 17 Nov 2015 16:47:20 +0100 +Subject: [PATCH] Revert "bgo#520654 - Support --export-id in rsvg-convert(1)" + +This reverts commit fecfcce44a959daff80a4e0f9ced83d7cdcb5903. +--- + rsvg-cairo-render.c | 4 ++-- + rsvg-convert.c | 64 +++++++++++++---------------------------------------- + 2 files changed, 17 insertions(+), 51 deletions(-) + +Index: b/rsvg-cairo-render.c +=================================================================== +--- rsvg-cairo-render.c ++++ rsvg-cairo-render.c +@@ -205,8 +205,8 @@ + drawsub = rsvg_defs_lookup (handle->priv->defs, id); + + if (drawsub == NULL && id != NULL) { +- /* todo: there's no way to signal that @id doesn't exist */ +- return FALSE; ++ /* todo: there's no way to signal that @id doesn't exist */ ++ return FALSE; + } + + draw = rsvg_cairo_new_drawing_ctx (cr, handle); +Index: b/rsvg-convert.c +=================================================================== +--- rsvg-convert.c ++++ rsvg-convert.c +@@ -78,6 +78,14 @@ + } + } + ++static void ++rsvg_cairo_size_callback (int *width, int *height, gpointer data) ++{ ++ RsvgDimensionData *dimensions = data; ++ *width = dimensions->width; ++ *height = dimensions->height; ++} ++ + static cairo_status_t + rsvg_cairo_write_func (void *closure, const unsigned char *data, unsigned int length) + { +@@ -86,26 +94,6 @@ + return CAIRO_STATUS_WRITE_ERROR; + } + +-static char * +-get_lookup_id_from_command_line (const char *lookup_id) +-{ +- char *export_lookup_id; +- +- if (lookup_id == NULL) +- export_lookup_id = NULL; +- else { +- /* rsvg_handle_has_sub() and rsvg_defs_lookup() expect ids to have a +- * '#' prepended to them, so they can lookup ids in externs like +- * "subfile.svg#subid". For the user's convenience, we include this +- * '#' automatically; we only support specifying ids from the +- * toplevel, and don't expect users to lookup things in externs. +- */ +- export_lookup_id = g_strdup_printf ("#%s", lookup_id); +- } +- +- return export_lookup_id; +-} +- + int + main (int argc, char **argv) + { +@@ -120,7 +108,6 @@ + int bVersion = 0; + char *format = NULL; + char *output = NULL; +- char *export_id = NULL; + int keep_aspect_ratio = FALSE; + guint32 background_color = 0; + char *background_color_str = NULL; +@@ -139,7 +126,6 @@ + RsvgHandleFlags flags = RSVG_HANDLE_FLAGS_NONE; + RsvgDimensionData dimensions; + FILE *output_file = stdout; +- char *export_lookup_id; + + #ifdef G_OS_WIN32 + HANDLE handle; +@@ -164,8 +150,6 @@ + N_("save format [optional; defaults to 'png']"), N_("[png, pdf, ps, eps, svg, xml, recording]")}, + {"output", 'o', 0, G_OPTION_ARG_STRING, &output, + N_("output filename [optional; defaults to stdout]"), NULL}, +- {"export-id", 'i', 0, G_OPTION_ARG_STRING, &export_id, +- N_("SVG id of object to export [optional; defaults to exporting all objects]"), N_("<object id>")}, + {"keep-aspect-ratio", 'a', 0, G_OPTION_ARG_NONE, &keep_aspect_ratio, + N_("whether to preserve the aspect ratio [optional; defaults to FALSE]"), NULL}, + {"background-color", 'b', 0, G_OPTION_ARG_STRING, &background_color_str, +@@ -306,18 +290,13 @@ + exit (1); + } + +- export_lookup_id = get_lookup_id_from_command_line (export_id); +- if (export_lookup_id != NULL +- && !rsvg_handle_has_sub (rsvg, export_lookup_id)) { +- g_printerr (_("File %s does not have an object with id \"%s\"\n"), args[i], export_id); +- exit (1); +- } ++ /* in the case of multi-page output, all subsequent SVGs are scaled to the first's size */ ++ rsvg_handle_set_size_callback (rsvg, rsvg_cairo_size_callback, &dimensions, NULL); + + if (i == 0) { + struct RsvgSizeCallbackData size_data; + +- if (!rsvg_handle_get_dimensions_sub (rsvg, &dimensions, export_lookup_id)) +- g_printerr ("Could not get dimensions for file %s\n", args[i]); ++ rsvg_handle_get_dimensions (rsvg, &dimensions); + + /* if both are unspecified, assume user wants to zoom the image in at least 1 dimension */ + if (width == -1 && height == -1) { +@@ -325,7 +304,9 @@ + size_data.x_zoom = x_zoom; + size_data.y_zoom = y_zoom; + size_data.keep_aspect_ratio = keep_aspect_ratio; +- } else if (x_zoom == 1.0 && y_zoom == 1.0) { ++ } ++ /* if both are unspecified, assume user wants to resize image in at least 1 dimension */ ++ else if (x_zoom == 1.0 && y_zoom == 1.0) { + /* if one parameter is unspecified, assume user wants to keep the aspect ratio */ + if (width == -1 || height == -1) { + size_data.type = RSVG_SIZE_WH_MAX; +@@ -404,21 +385,7 @@ + cairo_fill (cr); + } + +- if (export_lookup_id) { +- RsvgPositionData pos; +- +- if (!rsvg_handle_get_position_sub (rsvg, &pos, export_lookup_id)) { +- g_printerr (_("File %s does not have an object with id \"%s\"\n"), args[i], export_id); +- exit (1); +- } +- +- /* Move the whole thing to 0, 0 so the object to export is at the origin */ +- cairo_translate (cr, -pos.x, -pos.y); +- } +- +- rsvg_handle_render_cairo_sub (rsvg, cr, export_lookup_id); +- +- g_free (export_lookup_id); ++ rsvg_handle_render_cairo (rsvg, cr); + + if (!format || !strcmp (format, "png")) + cairo_surface_write_to_png_stream (surface, rsvg_cairo_write_func, output_file);