X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-image.c;h=e02831e3ea6498837f553e20080ac1b51c5aa25e;hb=2dd348d6fe62d96589c81379bbd01314d6442dc0;hp=4276dd482a0fd63969c74ee6e9e1c894d43256c7;hpb=8e126907002877574ec86fcbd184e56dc8f74683;p=evince.git diff --git a/libdocument/ev-image.c b/libdocument/ev-image.c index 4276dd48..e02831e3 100644 --- a/libdocument/ev-image.c +++ b/libdocument/ev-image.c @@ -14,11 +14,14 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include + #include +#include + #include "ev-document-misc.h" #include "ev-file-helpers.h" #include "ev-image.h" @@ -46,7 +49,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; } @@ -128,6 +135,8 @@ ev_image_save_tmp (EvImage *image, GdkPixbuf *pixbuf) { GError *error = NULL; + gchar *filename = NULL; + int fd; g_return_val_if_fail (EV_IS_IMAGE (image), NULL); g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL); @@ -135,18 +144,30 @@ ev_image_save_tmp (EvImage *image, if (image->priv->tmp_uri) return image->priv->tmp_uri; - image->priv->tmp_uri = ev_tmp_filename ("image"); - gdk_pixbuf_save (pixbuf, image->priv->tmp_uri, + if ((fd = ev_mkstemp ("image.XXXXXX", &filename, &error)) == -1) + goto had_error; + + gdk_pixbuf_save (pixbuf, filename, "png", &error, "compression", "3", NULL); - if (!error) + close (fd); + + if (!error) { + image->priv->tmp_uri = g_filename_to_uri (filename, NULL, &error); + if (image->priv->tmp_uri == NULL) + goto had_error; + + g_free (filename); + return image->priv->tmp_uri; + } + + had_error: /* Erro saving image */ - g_warning (error->message); + g_warning ("Error saving image: %s", error->message); g_error_free (error); - g_free (image->priv->tmp_uri); - image->priv->tmp_uri = NULL; + g_free (filename); return NULL; } @@ -158,44 +179,3 @@ ev_image_get_tmp_uri (EvImage *image) return image->priv->tmp_uri; } - -/* EvImageMapping */ -static void -ev_image_mapping_free_foreach (EvImageMapping *mapping) -{ - g_object_unref (mapping->image); - g_free (mapping); -} - -void -ev_image_mapping_free (GList *image_mapping) -{ - if (!image_mapping) - return; - - g_list_foreach (image_mapping, (GFunc) ev_image_mapping_free_foreach, NULL); - g_list_free (image_mapping); -} - -EvImage * -ev_image_mapping_find (GList *image_mapping, - gdouble x, - gdouble y) -{ - GList *list; - - for (list = image_mapping; list; list = list->next) { - EvImageMapping *mapping = list->data; - - if ((x >= mapping->x1) && - (y >= mapping->y1) && - (x <= mapping->x2) && - (y <= mapping->y2)) { - return mapping->image; - } - } - - return NULL; -} - -