diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2006-12-27 17:33:22 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2006-12-27 17:33:22 (GMT) |
commit | f7c3085a0e3c5c813cf9ae40b55fd7390e9373e2 (patch) | |
tree | 0e54d7c36a9dc4393056f67cc14061a58aceeff1 /pdf/ev-poppler.cc | |
parent | e9b31a6dcb17880596c0fab43d606294ffc5c17b (diff) |
Add page transition support in presentation mode. At the moment only page
2006-12-27 Carlos Garcia Campos <carlosgc@gnome.org>
* configure.ac:
* backend/Makefile.am:
* backend/ev-document-transition.[ch]:
* pdf/ev-poppler.cc: (pdf_document_get_page_duration),
(pdf_document_page_transition_iface_init):
* shell/ev-view-private.h:
* shell/ev-view.c: (ev_view_destroy), (page_changed_cb),
(ev_view_set_presentation), (transition_next_page),
(ev_view_presentation_transition_stop),
(ev_view_presentation_transition_start), (ev_view_next_page):
Add page transition support in presentation mode. At the moment only
page duration is supported, but not transition effects. Fixes bug
#309815.
Diffstat (limited to 'pdf/ev-poppler.cc')
-rw-r--r-- | pdf/ev-poppler.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index 2e0e46a..479a741 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -38,6 +38,7 @@ #include "ev-document-fonts.h" #include "ev-document-security.h" #include "ev-document-thumbnails.h" +#include "ev-document-transition.h" #include "ev-selection.h" #include "ev-attachment.h" @@ -86,6 +87,7 @@ static void pdf_document_document_fonts_iface_init (EvDocumentFontsIface static void pdf_document_find_iface_init (EvDocumentFindIface *iface); static void pdf_document_file_exporter_iface_init (EvFileExporterIface *iface); static void pdf_selection_iface_init (EvSelectionIface *iface); +static void pdf_document_page_transition_iface_init (EvDocumentTransitionIface *iface); static void pdf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document_thumbnails, gint page, gint size, @@ -119,6 +121,8 @@ G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT, pdf_document_file_exporter_iface_init); G_IMPLEMENT_INTERFACE (EV_TYPE_SELECTION, pdf_selection_iface_init); + G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_TRANSITION, + pdf_document_page_transition_iface_init); }); @@ -1637,6 +1641,36 @@ pdf_selection_iface_init (EvSelectionIface *iface) iface->get_selection_map = pdf_selection_get_selection_map; } +/* Page Transitions */ +static gdouble +pdf_document_get_page_duration (EvDocumentTransition *trans, + gint page) +{ +#ifdef HAVE_POPPLER_PAGE_GET_DURATION + PdfDocument *pdf_document; + PopplerPage *poppler_page; + gdouble duration = -1; + + pdf_document = PDF_DOCUMENT (trans); + poppler_page = poppler_document_get_page (pdf_document->document, page); + if (!poppler_page) + return -1; + + duration = poppler_page_get_duration (poppler_page); + g_object_unref (poppler_page); + + return duration; +#else + return -1; +#endif /* HAVE_POPPLER_PAGE_GET_DURATION */ +} + +static void +pdf_document_page_transition_iface_init (EvDocumentTransitionIface *iface) +{ + iface->get_page_duration = pdf_document_get_page_duration; +} + PdfDocument * pdf_document_new (void) { |