summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Poli (wintermute) <invernomuto@paranoici.org>2017-04-02 15:28:20 +0200
committerCarlos Garcia Campos <carlosgc@gnome.org>2017-04-02 15:45:40 +0200
commitdad9b36e0e91524e8e342cf924026c37fcb1730e (patch)
tree0c187f7300cfab211e4275f8992587a4b798ccb3
parent0dbec24428d96ae78be8ca06b230d68cde445614 (diff)
glib: Expose movie play mode
With this patch the movie play mode can be queried via the glib interface. An enum value is obtained that reports whether the movie should be played once, in loop, and so forth... https://bugs.freedesktop.org/show_bug.cgi?id=99625
-rw-r--r--glib/poppler-movie.cc35
-rw-r--r--glib/poppler-movie.h31
-rw-r--r--glib/reference/poppler-sections.txt4
3 files changed, 65 insertions, 5 deletions
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index cb5a2ad0..be1d5184 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -2,6 +2,7 @@
*
* Copyright (C) 2010 Carlos Garcia Campos <carlosgc@gnome.org>
* Copyright (C) 2008 Hugo Mercier <hmercier31[@]gmail.com>
+ * Copyright (C) 2017 Francesco Poli <invernomuto@paranoici.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -36,6 +37,7 @@ struct _PopplerMovie
gchar *filename;
gboolean need_poster;
gboolean show_controls;
+ PopplerMoviePlayMode mode;
};
struct _PopplerMovieClass
@@ -91,6 +93,21 @@ _poppler_movie_new (Movie *poppler_movie)
movie->show_controls = poppler_movie->getActivationParameters()->showControls;
+ switch (poppler_movie->getActivationParameters()->repeatMode) {
+ case MovieActivationParameters::repeatModeOnce:
+ movie->mode = POPPLER_MOVIE_PLAY_MODE_ONCE;
+ break;
+ case MovieActivationParameters::repeatModeOpen:
+ movie->mode = POPPLER_MOVIE_PLAY_MODE_OPEN;
+ break;
+ case MovieActivationParameters::repeatModeRepeat:
+ movie->mode = POPPLER_MOVIE_PLAY_MODE_REPEAT;
+ break;
+ case MovieActivationParameters::repeatModePalindrome:
+ movie->mode = POPPLER_MOVIE_PLAY_MODE_PALINDROME;
+ break;
+ }
+
return movie;
}
@@ -150,3 +167,21 @@ poppler_movie_show_controls (PopplerMovie *poppler_movie)
return poppler_movie->show_controls;
}
+
+/**
+ * poppler_movie_get_play_mode:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns the play mode of @poppler_movie.
+ *
+ * Return value: a #PopplerMovieRepeatMode.
+ *
+ * Since: 0.54
+ */
+PopplerMoviePlayMode
+poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), POPPLER_MOVIE_PLAY_MODE_ONCE);
+
+ return poppler_movie->mode;
+}
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 9e1bc32b..d76522a3 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -2,6 +2,7 @@
*
* Copyright (C) 2010 Carlos Garcia Campos <carlosgc@gnome.org>
* Copyright (C) 2008 Hugo Mercier <hmercier31[@]gmail.com>
+ * Copyright (C) 2017 Francesco Poli <invernomuto@paranoici.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,11 +31,31 @@ G_BEGIN_DECLS
#define POPPLER_MOVIE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_MOVIE, PopplerMovie))
#define POPPLER_IS_MOVIE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_MOVIE))
-
-GType poppler_movie_get_type (void) G_GNUC_CONST;
-const gchar *poppler_movie_get_filename (PopplerMovie *poppler_movie);
-gboolean poppler_movie_need_poster (PopplerMovie *poppler_movie);
-gboolean poppler_movie_show_controls (PopplerMovie *poppler_movie);
+/**
+ * PopplerMoviePlayMode:
+ * @POPPLER_MOVIE_PLAY_MODE_ONCE: the movie should be played once and controls should be closed at the end.
+ * @POPPLER_MOVIE_PLAY_MODE_OPEN: the movie should be played once, but controls should be left open.
+ * @POPPLER_MOVIE_PLAY_MODE_REPEAT: the movie should be played in loop, until manually stopped.
+ * @POPPLER_MOVIE_PLAY_MODE_PALINDROME: the movie should be played forward and backward, forward and backward,
+ * and so forth, until manually stopped.
+ *
+ * Play mode enum values.
+ *
+ * Since: 0.54
+ */
+typedef enum
+{
+ POPPLER_MOVIE_PLAY_MODE_ONCE,
+ POPPLER_MOVIE_PLAY_MODE_OPEN,
+ POPPLER_MOVIE_PLAY_MODE_REPEAT,
+ POPPLER_MOVIE_PLAY_MODE_PALINDROME
+} PopplerMoviePlayMode;
+
+GType poppler_movie_get_type (void) G_GNUC_CONST;
+const gchar *poppler_movie_get_filename (PopplerMovie *poppler_movie);
+gboolean poppler_movie_need_poster (PopplerMovie *poppler_movie);
+gboolean poppler_movie_show_controls (PopplerMovie *poppler_movie);
+PopplerMoviePlayMode poppler_movie_get_play_mode (PopplerMovie *poppler_movie);
G_END_DECLS
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index d597c2d4..af1bbba9 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -555,16 +555,20 @@ poppler_media_get_type
<FILE>poppler-movie</FILE>
<TITLE>PopplerMovie</TITLE>
PopplerMovie
+PopplerMoviePlayMode
poppler_movie_get_filename
poppler_movie_need_poster
poppler_movie_show_controls
+poppler_movie_get_play_mode
<SUBSECTION Standard>
POPPLER_MOVIE
POPPLER_IS_MOVIE
POPPLER_TYPE_MOVIE
+POPPLER_TYPE_MOVIE_PLAY_MODE
<SUBSECTION Private>
poppler_movie_get_type
+poppler_movie_play_mode_get_type
</SECTION>