X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=pdf%2Fev-poppler.cc;h=1dcc7a5e98ac2f726a7b30da4385de692e220e18;hb=6aff12024a5c291d0eaf0dd3ab601b2a4b30d521;hp=769c78a7a1f684973f1e3eaf0b1a742344e158f5;hpb=9f8ec2d921de1c31da212c8486ab2bda85d51bf9;p=evince.git diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index 769c78a7..1dcc7a5e 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -705,7 +705,7 @@ pdf_document_links_has_document_links (EvDocumentLinks *document_links) static EvLink * ev_link_from_dest (PopplerAction *action) { - EvLink *link; + EvLink *link = NULL; const char *unimplemented_dest = NULL; switch (action->goto_dest.dest->type) { @@ -747,7 +747,9 @@ ev_link_from_dest (PopplerAction *action) unimplemented_dest); } - link = ev_link_new_page (action->any.title, action->goto_dest.dest->page_num - 1); + if (link == NULL) { + link = ev_link_new_page (action->any.title, action->goto_dest.dest->page_num - 1); + } return link; } @@ -871,7 +873,7 @@ make_thumbnail_for_size (PdfDocument *pdf_document, gboolean border) { PopplerPage *poppler_page; - GdkPixbuf *pixbuf, *sub_pixbuf; + GdkPixbuf *pixbuf, *border_pixbuf; int width, height; double scale; gdouble unscaled_width, unscaled_height; @@ -884,38 +886,30 @@ make_thumbnail_for_size (PdfDocument *pdf_document, poppler_page_get_size (poppler_page, &unscaled_width, &unscaled_height); scale = width / unscaled_width; - if (border) { - pixbuf = ev_document_misc_get_thumbnail_frame (width, height, rotation, NULL); - - width = gdk_pixbuf_get_width (pixbuf); - height = gdk_pixbuf_get_height (pixbuf); - sub_pixbuf = gdk_pixbuf_new_subpixbuf (pixbuf, - 1, 1, - width - 1, height - 1); - } else { - /* rotate */ - if (rotation == 90 || rotation == 270) { - int temp; - temp = width; - width = height; - height = temp; - } - - pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, - width, height); - gdk_pixbuf_fill (pixbuf, 0xffffffff); - sub_pixbuf = gdk_pixbuf_new_subpixbuf (pixbuf, - 0, 0, - width, height); + /* rotate */ + if (rotation == 90 || rotation == 270) { + int temp; + temp = width; + width = height; + height = temp; } + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, + width, height); + gdk_pixbuf_fill (pixbuf, 0xffffffff); + poppler_page_render_to_pixbuf (poppler_page, 0, 0, width, height, - scale, rotation, sub_pixbuf); - - g_object_unref (G_OBJECT (sub_pixbuf)); + scale, rotation, pixbuf); + + if (border) { + border_pixbuf = ev_document_misc_get_thumbnail_frame (-1, -1, rotation, pixbuf); + g_object_unref (pixbuf); + pixbuf = border_pixbuf; + } g_object_unref (poppler_page); + return pixbuf; }