1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
--- a/rsvg-convert.c
+++ a/rsvg-convert.c
@@ -137,7 +137,7 @@ main (int argc, char **argv)
cairo_surface_t *surface = NULL;
cairo_t *cr = NULL;
RsvgHandleFlags flags = RSVG_HANDLE_FLAGS_NONE;
- RsvgDimensionData dimensions;
+ RsvgDimensionData dimensions, dimensions_orig;
FILE *output_file = stdout;
char *export_lookup_id;
@@ -318,6 +318,7 @@ 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]);
+ rsvg_handle_get_dimensions_sub (rsvg, &dimensions_orig, export_lookup_id);
/* if both are unspecified, assume user wants to zoom the image in at least 1 dimension */
if (width == -1 && height == -1) {
@@ -416,6 +417,9 @@ main (int argc, char **argv)
cairo_translate (cr, -pos.x, -pos.y);
}
+ cairo_scale(cr, (double) dimensions.width / dimensions_orig.width,
+ (double) dimensions.height /dimensions_orig.height);
+
rsvg_handle_render_cairo_sub (rsvg, cr, export_lookup_id);
g_free (export_lookup_id);
|