]> www.fi.muni.cz Git - evince.git/blobdiff - libdocument/ev-image.c
Split API documentation into libdocument, libview and shell. Required
[evince.git] / libdocument / ev-image.c
index 1bf17f270d826287e15675a66d3cece9fd5a0ea8..fa4cccf5a16018a1843bc2ed0f640c67d4b9150a 100644 (file)
 
 #include <config.h>
 #include <glib/gstdio.h>
+#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;
 }