Date: Thu, 28 Jul 2016 06:40:41 +0000 (UTC) From: Alexey Dokuchaev <danfe@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r419206 - in head/graphics/librsvg2: . files Message-ID: <201607280640.u6S6efEk011965@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: danfe Date: Thu Jul 28 06:40:41 2016 New Revision: 419206 URL: https://svnweb.freebsd.org/changeset/ports/419206 Log: Fix an annoying bug of non-working scaling (-w/-h and -x/-y options) in rsvg-convert(1) utility: https://bugzilla.gnome.org/show_bug.cgi?id=520654 https://bugzilla.gnome.org/show_bug.cgi?id=762115 Approved by: gnome (timeout) Patch by: Michael Biebl Obtained from: Debian Added: head/graphics/librsvg2/files/ head/graphics/librsvg2/files/patch-revert-bgo-520654-support-export-id-in-rsvg-convert (contents, props changed) Modified: head/graphics/librsvg2/Makefile Modified: head/graphics/librsvg2/Makefile ============================================================================== --- head/graphics/librsvg2/Makefile Thu Jul 28 02:50:28 2016 (r419205) +++ head/graphics/librsvg2/Makefile Thu Jul 28 06:40:41 2016 (r419206) @@ -3,6 +3,7 @@ PORTNAME= librsvg PORTVERSION= 2.40.13 +PORTREVISION= 1 CATEGORIES= graphics gnome MASTER_SITES= GNOME PKGNAMESUFFIX= 2 Added: head/graphics/librsvg2/files/patch-revert-bgo-520654-support-export-id-in-rsvg-convert ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/graphics/librsvg2/files/patch-revert-bgo-520654-support-export-id-in-rsvg-convert Thu Jul 28 06:40:41 2016 (r419206) @@ -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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607280640.u6S6efEk011965>