Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf
diff options
context:
space:
mode:
authorCarlos 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)
commitf7c3085a0e3c5c813cf9ae40b55fd7390e9373e2 (patch)
tree0e54d7c36a9dc4393056f67cc14061a58aceeff1 /pdf
parente9b31a6dcb17880596c0fab43d606294ffc5c17b (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')
-rw-r--r--pdf/ev-poppler.cc34
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)
{