From 8e126907002877574ec86fcbd184e56dc8f74683 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sat, 19 Jan 2008 17:19:42 +0000 Subject: Do not render images when rendering the page but on demand. It reduces the 2008-01-19 Carlos Garcia Campos * configure.ac: * backend/pdf/ev-poppler.cc: (pdf_document_images_get_image_mapping), (pdf_document_images_get_image), (pdf_document_document_images_iface_init): * libdocument/ev-document-images.[ch]: (ev_document_images_get_image_mapping), (ev_document_images_get_image): * libdocument/ev-image.[ch]: (ev_image_new), (ev_image_get_page), (ev_image_get_id), (ev_image_save_tmp): * shell/ev-jobs.c: (ev_job_render_run): * shell/ev-view.c: (ev_view_drag_data_get): * shell/ev-window.c: (image_save_dialog_response_cb), (ev_view_popup_cmd_copy_image): Do not render images when rendering the page but on demand. It reduces the memory comsumption. svn path=/trunk/; revision=2835 --- (limited to 'libdocument/ev-image.c') diff --git a/libdocument/ev-image.c b/libdocument/ev-image.c index 1bf17f2..4276dd4 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; }; @@ -70,6 +73,19 @@ ev_image_init (EvImage *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) { EvImage *image; @@ -82,6 +98,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,19 +124,20 @@ 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; 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, + gdk_pixbuf_save (pixbuf, image->priv->tmp_uri, + "png", &error, "compression", "3", NULL); if (!error) return image->priv->tmp_uri; -- cgit v0.9.1