X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=pdf%2Fxpdf%2Fpdf-document.cc;h=777e94922c2c82f167ef9bb551c9ed2bf132a9dd;hb=6d7f9e7cf7678b48828be0722ae2e998ce85b7a7;hp=2a4e1aabbecca5a86b8140f8afd7b5ef07ca217d;hpb=f75141348caac3ba34ff3b3d8420215386f0eb02;p=evince.git diff --git a/pdf/xpdf/pdf-document.cc b/pdf/xpdf/pdf-document.cc index 2a4e1aab..777e9492 100644 --- a/pdf/xpdf/pdf-document.cc +++ b/pdf/xpdf/pdf-document.cc @@ -90,7 +90,6 @@ struct _PdfDocument UnicodeMap *umap; gchar *password; - gboolean page_valid; PdfDocumentSearch *search; }; @@ -136,29 +135,21 @@ document_init_links (PdfDocument *pdf_document) obj.free (); } -static gboolean -document_validate_page (PdfDocument *pdf_document) +static void +document_display_page (PdfDocument *pdf_document) { - if (!pdf_document->page_valid) { - pdf_document->doc->displayPage (pdf_document->out, pdf_document->page, - 72 * pdf_document->scale, - 72 * pdf_document->scale, - 0, gTrue, gTrue); - - document_init_links (pdf_document); - - pdf_document->page_valid = TRUE; + pdf_document->doc->displayPage (pdf_document->out, pdf_document->page, + 72 * pdf_document->scale, + 72 * pdf_document->scale, + 0, gTrue, gTrue); - ev_document_changed (EV_DOCUMENT (pdf_document)); + document_init_links (pdf_document); - /* Update the search results available to the app since - * we only provide full results on the current page - */ - if (pdf_document->search) - pdf_document_search_page_changed (pdf_document->search); - } - - return pdf_document->page_valid; + /* Update the search results available to the app since + * we only provide full results on the current page + */ + if (pdf_document->search) + pdf_document_search_page_changed (pdf_document->search); } static gboolean @@ -227,8 +218,6 @@ pdf_document_load (EvDocument *document, if (pdf_document->out) pdf_document->out->startDoc(pdf_document->doc->getXRef()); - pdf_document->page_valid = FALSE; - g_object_notify (G_OBJECT (pdf_document), "title"); return TRUE; @@ -274,7 +263,8 @@ pdf_document_set_page (EvDocument *document, if (page != pdf_document->page) { pdf_document->page = page; - pdf_document->page_valid = FALSE; + document_display_page (pdf_document); + ev_document_page_changed (EV_DOCUMENT (pdf_document)); } } @@ -321,7 +311,7 @@ pdf_document_set_target (EvDocument *document, } - pdf_document->page_valid = FALSE; + document_display_page (pdf_document); } } @@ -333,7 +323,8 @@ pdf_document_set_scale (EvDocument *document, if (pdf_document->scale != scale) { pdf_document->scale = scale; - pdf_document->page_valid = FALSE; + document_display_page (pdf_document); + ev_document_scale_changed (EV_DOCUMENT (pdf_document)); } } @@ -363,19 +354,13 @@ pdf_document_get_page_size (EvDocument *document, if (height) *height = 1; - - if (page == -1 && document_validate_page (pdf_document)) { - if (width) - *width = pdf_document->out->getBitmapWidth(); - if (height) - *height = pdf_document->out->getBitmapHeight(); - return; - } + if (page == -1) + page = pdf_document->page; the_page = pdf_document->doc->getCatalog ()->getPage (page); if (the_page) { - *width = (int) the_page->getWidth (); - *height = (int) the_page->getHeight (); + *width = (int) ((the_page->getWidth () * pdf_document->scale) + 0.5); + *height = (int) ((the_page->getHeight () * pdf_document->scale) + 0.5); } } @@ -390,7 +375,7 @@ pdf_document_render (EvDocument *document, GdkRectangle page; GdkRectangle draw; - if (!document_validate_page (pdf_document) || !pdf_document->target) + if (!pdf_document->target) return; page.x = pdf_document->page_x_offset; @@ -492,12 +477,6 @@ pdf_document_search_page_changed (PdfDocumentSearch *search) current_page = pdf_document->page; - if (!pdf_document->page_valid) { - /* we can't do anything until displayPage() */ - search->current_page = -1; - return; - } - if (search->current_page == current_page) return; @@ -1369,7 +1348,6 @@ pdf_document_init (PdfDocument *pdf_document) pdf_document->page_y_offset = 0; pdf_document->scale = 1.; - pdf_document->page_valid = FALSE; pdf_document->password = NULL; }