X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-image.c;h=fa4cccf5a16018a1843bc2ed0f640c67d4b9150a;hb=16cc05ec4f7663103e45a52ac06d292e6b75a8c0;hp=1bf17f270d826287e15675a66d3cece9fd5a0ea8;hpb=1af6600934d1f723e5b492b8322e52a1144fb0af;p=evince.git diff --git a/libdocument/ev-image.c b/libdocument/ev-image.c index 1bf17f27..fa4cccf5 100644 --- a/libdocument/ev-image.c +++ b/libdocument/ev-image.c @@ -19,10 +19,13 @@ #include #include +#include "ev-document-misc.h" #include "ev-file-helpers.h" #include "ev-image.h" struct _EvImagePrivate { + gint page; + gint id; GdkPixbuf *pixbuf; gchar *tmp_uri; }; @@ -43,7 +46,11 @@ ev_image_finalize (GObject *object) } if (image->priv->tmp_uri) { - ev_tmp_filename_unlink (image->priv->tmp_uri); + gchar *filename; + + filename = g_filename_from_uri (image->priv->tmp_uri, NULL, NULL); + ev_tmp_filename_unlink (filename); + g_free (filename); g_free (image->priv->tmp_uri); image->priv->tmp_uri = NULL; } @@ -69,6 +76,19 @@ ev_image_init (EvImage *image) image->priv = EV_IMAGE_GET_PRIVATE (image); } +EvImage * +ev_image_new (gint page, + gint img_id) +{ + EvImage *image; + + image = EV_IMAGE (g_object_new (EV_TYPE_IMAGE, NULL)); + image->priv->page = page; + image->priv->id = img_id; + + return image; +} + EvImage * ev_image_new_from_pixbuf (GdkPixbuf *pixbuf) { @@ -82,6 +102,22 @@ ev_image_new_from_pixbuf (GdkPixbuf *pixbuf) return image; } +gint +ev_image_get_page (EvImage *image) +{ + g_return_val_if_fail (EV_IS_IMAGE (image), -1); + + return image->priv->page; +} + +gint +ev_image_get_id (EvImage *image) +{ + g_return_val_if_fail (EV_IS_IMAGE (image), -1); + + return image->priv->id; +} + GdkPixbuf * ev_image_get_pixbuf (EvImage *image) { @@ -92,28 +128,33 @@ ev_image_get_pixbuf (EvImage *image) } const gchar * -ev_image_save_tmp (EvImage *image) +ev_image_save_tmp (EvImage *image, + GdkPixbuf *pixbuf) { GError *error = NULL; + gchar *filename; g_return_val_if_fail (EV_IS_IMAGE (image), NULL); - g_return_val_if_fail (GDK_IS_PIXBUF (image->priv->pixbuf), NULL); + g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); if (image->priv->tmp_uri) return image->priv->tmp_uri; - image->priv->tmp_uri = ev_tmp_filename ("image"); - gdk_pixbuf_save (image->priv->pixbuf, - image->priv->tmp_uri, "png", &error, + filename = ev_tmp_filename ("image"); + gdk_pixbuf_save (pixbuf, filename, + "png", &error, "compression", "3", NULL); - if (!error) + if (!error) { + image->priv->tmp_uri = g_filename_to_uri (filename, NULL, NULL); + g_free (filename); + return image->priv->tmp_uri; + } /* Erro saving image */ - g_warning (error->message); + g_warning ("%s", error->message); g_error_free (error); - g_free (image->priv->tmp_uri); - image->priv->tmp_uri = NULL; + g_free (filename); return NULL; }