[goffice] Fixed SVG images size
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Fixed SVG images size
- Date: Thu, 27 Oct 2011 18:10:59 +0000 (UTC)
commit 6644b71c51c33d91561086447d225a0fe3bae32d
Author: Jean Brefort <jean brefort normalesup org>
Date: Thu Oct 27 20:09:45 2011 +0200
Fixed SVG images size
ChangeLog | 10 ++++++++++
goffice/utils/go-emf.c | 2 ++
goffice/utils/go-image.c | 17 +++++++++++++++++
goffice/utils/go-image.h | 3 +++
goffice/utils/go-svg.c | 10 ++++++++++
5 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 45f1028..fa811dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,16 @@
2011-10-27 Jean Brefort <jean brefort normalesup org>
+ * goffice/utils/go-emf.c: fixed a compilation warning.
+ * goffice/utils/go-image.c (go_image_get_height),
+ (go_image_set_default_dpi), (go_image_get_default_dpi): fixed svg image
+ size. [#628472]
+ * goffice/utils/go-image.h: ditto.
+ * goffice/utils/go-svg.c (go_svg_load_data),
+ (go_svg_new_from_file), (go_svg_new_from_data): ditto.
+
+2011-10-27 Jean Brefort <jean brefort normalesup org>
+
* goffice/canvas/goc-canvas.c: new helper functions.
* goffice/canvas/goc-canvas.h: ditto.
* goffice/canvas/goc-image.c: add crop.
diff --git a/goffice/utils/go-emf.c b/goffice/utils/go-emf.c
index a157713..e41d08e 100644
--- a/goffice/utils/go-emf.c
+++ b/goffice/utils/go-emf.c
@@ -229,8 +229,10 @@ go_emf_new_from_data (char const *data, size_t length, GError **error)
* Parsing code *
* ****************************************************************************/
+#ifdef GOFFICE_EMF_SUPPORT
static gboolean go_emf_parse (GOEmf *emf, GsfInput *input, GError **error)
{
/* FIXME: implement */
return FALSE;
}
+#endif
diff --git a/goffice/utils/go-image.c b/goffice/utils/go-image.c
index 2c61d89..49833e5 100644
--- a/goffice/utils/go-image.c
+++ b/goffice/utils/go-image.c
@@ -25,6 +25,7 @@
#include <gsf/gsf-utils.h>
#include <gsf/gsf-impl-utils.h>
#include <glib/gi18n-lib.h>
+#include <librsvg/rsvg.h>
static GOImageFormatInfo *pixbuf_image_format_infos = NULL;
static GHashTable *pixbuf_mimes = NULL;
@@ -557,3 +558,19 @@ go_image_get_height (GOImage const *image)
{
return image->height;
}
+
+static double _go_image_dpi_x = 96., _go_image_dpi_y = 96.;
+
+void
+go_image_set_default_dpi (double dpi_x, double dpi_y)
+{
+ _go_image_dpi_x = dpi_x;
+ _go_image_dpi_y = dpi_y;
+}
+
+void
+go_image_get_default_dpi (double *dpi_x, double *dpi_y)
+{
+ *dpi_x = _go_image_dpi_x;
+ *dpi_y = _go_image_dpi_y;
+}
diff --git a/goffice/utils/go-image.h b/goffice/utils/go-image.h
index 59a0a8f..2d1b836 100644
--- a/goffice/utils/go-image.h
+++ b/goffice/utils/go-image.h
@@ -112,6 +112,9 @@ void go_image_load_data (GOImage *image, GsfXMLIn *xin);
double go_image_get_width (GOImage const *image);
double go_image_get_height (GOImage const *image);
+void go_image_set_default_dpi (double dpi_x, double dpi_y);
+void go_image_get_default_dpi (double *dpi_x, double *dpi_y);
+
/* Protected */
void _go_image_changed (GOImage *image, double width, double height);
diff --git a/goffice/utils/go-svg.c b/goffice/utils/go-svg.c
index 712a0aa..905d9cd 100644
--- a/goffice/utils/go-svg.c
+++ b/goffice/utils/go-svg.c
@@ -58,10 +58,13 @@ static void
go_svg_load_data (GOImage *image, GsfXMLIn *xin)
{
GOSvg *svg = GO_SVG (image);
+ double dpi_x, dpi_y;
svg->data_length = gsf_base64_decode_simple (xin->content->str, strlen(xin->content->str));
image->data = g_malloc (svg->data_length);
memcpy (image->data, xin->content->str, svg->data_length);
svg->handle = rsvg_handle_new_from_data (image->data, svg->data_length, NULL);
+ go_image_get_default_dpi (&dpi_x, &dpi_y);
+ rsvg_handle_set_dpi_x_y (svg->handle, dpi_x, dpi_y);
}
static void
@@ -160,6 +163,8 @@ go_svg_new_from_file (char const *filename, GError **error)
GsfInput *input = gsf_input_stdio_new (filename, error);
RsvgDimensionData dim;
GOImage *image;
+ double dpi_x, dpi_y;
+
if (!input)
return NULL;
svg->data_length = gsf_input_size (input);
@@ -176,6 +181,8 @@ go_svg_new_from_file (char const *filename, GError **error)
g_object_unref (svg);
return NULL;
}
+ go_image_get_default_dpi (&dpi_x, &dpi_y);
+ rsvg_handle_set_dpi_x_y (svg->handle, dpi_x, dpi_y);
rsvg_handle_get_dimensions (svg->handle, &dim);
image->width = dim.width;
image->height = dim.height;
@@ -188,6 +195,7 @@ go_svg_new_from_data (char const *data, size_t length, GError **error)
GOSvg *svg;
GOImage *image;
RsvgDimensionData dim;
+ double dpi_x, dpi_y;
g_return_val_if_fail (data != NULL && length != 0, NULL);
svg = g_object_new (GO_TYPE_SVG, NULL);
@@ -204,6 +212,8 @@ go_svg_new_from_data (char const *data, size_t length, GError **error)
g_object_unref (svg);
return NULL;
}
+ go_image_get_default_dpi (&dpi_x, &dpi_y);
+ rsvg_handle_set_dpi_x_y (svg->handle, dpi_x, dpi_y);
rsvg_handle_get_dimensions (svg->handle, &dim);
image->width = dim.width;
image->height = dim.height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]