X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=pdf%2Fev-poppler.cc;h=0f9a3562c2dde199d2ff3a763ba2ade5916be8ff;hb=e9ffd7b5401b32979ea83bc56da4592e80f8ce3e;hp=aebe7ce5dbceaeba0274aff9e252e2c25b24a7b4;hpb=3be2b7d94dc4475256b89f8033ef5cca17513530;p=evince.git diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index aebe7ce5..0f9a3562 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -128,6 +128,7 @@ static void pdf_document_init (PdfDocument *pdf_document) { pdf_document->password = NULL; + pdf_document->orientation = POPPLER_ORIENTATION_PORTRAIT; } static void @@ -175,6 +176,24 @@ pdf_document_save (EvDocument *document, return retval; } +static PopplerOrientation +get_document_orientation (PdfDocument *pdf_document) +{ +#ifdef POPPLER_ORIENTATION + PopplerPage *page; + + /* Should prolly be smarter here and check more than first page */ + page = poppler_document_get_page (pdf_document->document, 0); + if (page) { + return poppler_page_get_orientation (page); + } else { + return POPPLER_ORIENTATION_PORTRAIT; + } +#else + return POPPLER_ORIENTATION_PORTRAIT; +#endif +} + static gboolean pdf_document_load (EvDocument *document, const char *uri, @@ -191,6 +210,8 @@ pdf_document_load (EvDocument *document, return FALSE; } + pdf_document->orientation = get_document_orientation (pdf_document); + return TRUE; } @@ -488,6 +509,30 @@ pdf_document_get_text (EvDocument *document, int page, EvRectangle *rect) return poppler_page_get_text (poppler_page, &r); } +static EvOrientation +pdf_document_get_orientation (EvDocument *document) +{ + EvOrientation result; + PdfDocument *pdf_document = PDF_DOCUMENT (document); + + switch (pdf_document->orientation) { + case POPPLER_ORIENTATION_PORTRAIT: + result = EV_ORIENTATION_PORTRAIT; + break; + case POPPLER_ORIENTATION_LANDSCAPE: + result = EV_ORIENTATION_LANDSCAPE; + break; + case POPPLER_ORIENTATION_UPSIDEDOWN: + result = EV_ORIENTATION_UPSIDEDOWN; + break; + case POPPLER_ORIENTATION_SEASCAPE: + result = EV_ORIENTATION_SEASCAPE; + break; + } + + return result; +} + static void pdf_document_set_orientation (EvDocument *document, EvOrientation orientation) { @@ -495,9 +540,6 @@ pdf_document_set_orientation (EvDocument *document, EvOrientation orientation) PopplerOrientation poppler_orientation; switch (orientation) { - case EV_ORIENTATION_DOCUMENT: - poppler_orientation = POPPLER_ORIENTATION_DOCUMENT; - break; case EV_ORIENTATION_PORTRAIT: poppler_orientation = POPPLER_ORIENTATION_PORTRAIT; break; @@ -529,6 +571,7 @@ pdf_document_document_iface_init (EvDocumentIface *iface) iface->can_get_text = pdf_document_can_get_text; iface->get_info = pdf_document_get_info; iface->set_orientation = pdf_document_set_orientation; + iface->get_orientation = pdf_document_get_orientation; }; static void @@ -661,11 +704,7 @@ build_tree (PdfDocument *pdf_document, gboolean expand; action = poppler_index_iter_get_action (iter); -#ifdef POPPLER_LINK_IS_OPEN expand = poppler_index_iter_is_open (iter); -#else - expand = TRUE; -#endif if (action) { gtk_tree_store_append (GTK_TREE_STORE (model), &tree_iter, parent); link = ev_link_from_action (action);