[poppler] 7 commits - glib/demo glib/poppler-movie.cc glib/poppler-movie.h glib/reference
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Aug 21 15:19:06 UTC 2019
glib/demo/utils.c | 8 +-
glib/poppler-movie.cc | 140 ++++++++++++++++++++++++++++++++++++
glib/poppler-movie.h | 12 +++
glib/reference/poppler-sections.txt | 7 +
4 files changed, 166 insertions(+), 1 deletion(-)
New commits:
commit 365a92e5ed21c642a45dfb75295b7dfa7fc4499a
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Wed Aug 21 01:08:31 2019 +0300
Use guint64 for time-related values of movie objects (in ns)
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index a8b0c68d..aad6c88c 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -564,7 +564,6 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
GtkWidget *button;
GEnumValue *enum_value;
gint row = 0;
- PopplerMovieTime start, duration;
table = gtk_bin_get_child (GTK_BIN (movie_view));
if (table) {
@@ -595,10 +594,8 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_is_synchronous (movie) ? "Yes" : "No", &row);
pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%g", poppler_movie_get_volume (movie)), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rate:</b>", g_strdup_printf("%g", poppler_movie_get_rate (movie)), &row);
- poppler_movie_get_start (movie, &start);
- pgd_table_add_property (GTK_GRID (table), "<b>Start:</b>", g_strdup_printf("%lu/%i s", start.units, start.units_per_second), &row);
- poppler_movie_get_duration (movie, &duration);
- pgd_table_add_property (GTK_GRID (table), "<b>Duration:</b>", g_strdup_printf("%lu/%i s", duration.units, duration.units_per_second), &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Start:</b>", g_strdup_printf("%g s", poppler_movie_get_start (movie)/1e9), &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Duration:</b>", g_strdup_printf("%g s", poppler_movie_get_duration (movie)/1e9), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rotation Angle:</b>", g_strdup_printf("%u", poppler_movie_get_rotation_angle (movie)), &row);
button = gtk_button_new_with_mnemonic ("_Play");
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index ce5e7ba3..aa40aa15 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -41,8 +41,8 @@ struct _PopplerMovie
gboolean synchronous_play;
gint volume;
gdouble rate;
- PopplerMovieTime start;
- PopplerMovieTime duration;
+ guint64 start;
+ guint64 duration;
gushort rotation_angle;
};
@@ -117,11 +117,21 @@ _poppler_movie_new (const Movie *poppler_movie)
movie->rate = poppler_movie->getActivationParameters()->rate;
- movie->start.units = poppler_movie->getActivationParameters()->start.units;
- movie->start.units_per_second = poppler_movie->getActivationParameters()->start.units_per_second;
+ if (poppler_movie->getActivationParameters()->start.units_per_second > 0) {
+ movie->start = 1000000000L*
+ poppler_movie->getActivationParameters()->start.units/
+ poppler_movie->getActivationParameters()->start.units_per_second;
+ } else {
+ movie->start = 0L;
+ }
- movie->duration.units = poppler_movie->getActivationParameters()->duration.units;
- movie->duration.units_per_second = poppler_movie->getActivationParameters()->duration.units_per_second;
+ if (poppler_movie->getActivationParameters()->duration.units_per_second > 0) {
+ movie->duration = 1000000000L*
+ poppler_movie->getActivationParameters()->duration.units/
+ poppler_movie->getActivationParameters()->duration.units_per_second;
+ } else {
+ movie->duration = 0L;
+ }
movie->rotation_angle = poppler_movie->getRotationAngle();
@@ -280,35 +290,35 @@ poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
/**
* poppler_movie_get_start:
* @poppler_movie: a #PopplerMovie
- * @start: (out): a return location for a #PopplerMovieTime
*
- * Obtains the start position of the movie playback
+ * Returns the start position of the movie playback
+ *
+ * Return value: the start position of the movie playback (in ns)
*
* Since: 0.80
*/
-void
-poppler_movie_get_start (PopplerMovie *poppler_movie,
- PopplerMovieTime *start)
+guint64
+poppler_movie_get_start (PopplerMovie *poppler_movie)
{
- g_return_if_fail (POPPLER_IS_MOVIE (poppler_movie));
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0L);
- *start = poppler_movie->start;
+ return poppler_movie->start;
}
/**
* poppler_movie_get_duration:
* @poppler_movie: a #PopplerMovie
- * @duration: (out): a return location for a #PopplerMovieTime
*
- * Obtains the duration of the movie playback
+ * Returns the duration of the movie playback
+ *
+ * Return value: the duration of the movie playback (in ns)
*
* Since: 0.80
*/
-void
-poppler_movie_get_duration (PopplerMovie *poppler_movie,
- PopplerMovieTime *duration)
+guint64
+poppler_movie_get_duration (PopplerMovie *poppler_movie)
{
- g_return_if_fail (POPPLER_IS_MOVIE (poppler_movie));
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0L);
- *duration = poppler_movie->duration;
+ return poppler_movie->duration;
}
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 52b3d7b7..9350a073 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -51,20 +51,6 @@ typedef enum
POPPLER_MOVIE_PLAY_MODE_PALINDROME
} PopplerMoviePlayMode;
-/**
- * PopplerMovieTime:
- *
- * Time-related entities (start position, duration); to get the equivalent
- * value in seconds, calculate (double) units/units_per_second. Note that
- * units_per_second may be zero if the respective entity is undefined.
- *
- * Since: 0.80
- */
-typedef struct {
- gulong units;
- gint units_per_second;
-} PopplerMovieTime;
-
POPPLER_PUBLIC
GType poppler_movie_get_type (void) G_GNUC_CONST;
POPPLER_PUBLIC
@@ -84,11 +70,9 @@ gdouble poppler_movie_get_rate (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
gushort poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
-void poppler_movie_get_start (PopplerMovie *poppler_movie,
- PopplerMovieTime *start);
+guint64 poppler_movie_get_start (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
-void poppler_movie_get_duration (PopplerMovie *poppler_movie,
- PopplerMovieTime *duration);
+guint64 poppler_movie_get_duration (PopplerMovie *poppler_movie);
G_END_DECLS
commit 764dd94a7f5cac3426a58d3f7efbcf8d1b8c787f
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Wed Aug 21 00:40:13 2019 +0300
Make poppler_movie_get_volume() return double 0.0-1.0
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index 9c66c7fd..a8b0c68d 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -593,7 +593,7 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_MOVIE_PLAY_MODE), poppler_movie_get_play_mode (movie));
pgd_table_add_property (GTK_GRID (table), "<b>Play Mode:</b>", enum_value->value_name, &row);
pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_is_synchronous (movie) ? "Yes" : "No", &row);
- pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%i", poppler_movie_get_volume (movie)), &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%g", poppler_movie_get_volume (movie)), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rate:</b>", g_strdup_printf("%g", poppler_movie_get_rate (movie)), &row);
poppler_movie_get_start (movie, &start);
pgd_table_add_property (GTK_GRID (table), "<b>Start:</b>", g_strdup_printf("%lu/%i s", start.units, start.units_per_second), &row);
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index f9ee8dce..ce5e7ba3 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -228,16 +228,16 @@ poppler_movie_is_synchronous (PopplerMovie *poppler_movie)
*
* Returns the playback audio volume
*
- * Return value: volume setting for the movie (0 - 100)
+ * Return value: volume setting for the movie (0.0 - 1.0)
*
* Since: 0.80
*/
-gint
+gdouble
poppler_movie_get_volume (PopplerMovie *poppler_movie)
{
g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0);
- return poppler_movie->volume;
+ return poppler_movie->volume/100.0;
}
/**
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 01750888..52b3d7b7 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -78,7 +78,7 @@ PopplerMoviePlayMode poppler_movie_get_play_mode (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
gboolean poppler_movie_is_synchronous (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
-gint poppler_movie_get_volume (PopplerMovie *poppler_movie);
+gdouble poppler_movie_get_volume (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
gdouble poppler_movie_get_rate (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
commit 8c2c5c46aba84d714f6c8f779eda0646b31b956b
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Wed Aug 21 00:33:16 2019 +0300
Rename poppler_movie_synchronous_play -> poppler_movie_is_synchronous
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index eae3e896..9c66c7fd 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -592,7 +592,7 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
pgd_table_add_property (GTK_GRID (table), "<b>Show Controls:</b>", poppler_movie_show_controls (movie) ? "Yes" : "No", &row);
enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_MOVIE_PLAY_MODE), poppler_movie_get_play_mode (movie));
pgd_table_add_property (GTK_GRID (table), "<b>Play Mode:</b>", enum_value->value_name, &row);
- pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_synchronous_play (movie) ? "Yes" : "No", &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_is_synchronous (movie) ? "Yes" : "No", &row);
pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%i", poppler_movie_get_volume (movie)), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rate:</b>", g_strdup_printf("%g", poppler_movie_get_rate (movie)), &row);
poppler_movie_get_start (movie, &start);
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index 538c703c..f9ee8dce 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -204,7 +204,7 @@ poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
}
/**
- * poppler_movie_synchronous_play:
+ * poppler_movie_is_synchronous:
* @poppler_movie: a #PopplerMovie
*
* Returns whether the user must wait for the movie to be finished before
@@ -215,7 +215,7 @@ poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
* Since: 0.80
*/
gboolean
-poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
+poppler_movie_is_synchronous (PopplerMovie *poppler_movie)
{
g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), FALSE);
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 0c7644aa..01750888 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -76,7 +76,7 @@ gboolean poppler_movie_show_controls (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
PopplerMoviePlayMode poppler_movie_get_play_mode (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
-gboolean poppler_movie_synchronous_play (PopplerMovie *poppler_movie);
+gboolean poppler_movie_is_synchronous (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
gint poppler_movie_get_volume (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index e2f1276a..49fe3b72 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -593,7 +593,7 @@ poppler_movie_get_start
poppler_movie_get_volume
poppler_movie_need_poster
poppler_movie_show_controls
-poppler_movie_synchronous_play
+poppler_movie_is_synchronous
<SUBSECTION Standard>
POPPLER_MOVIE
commit b1df2588a8180d3aa027c25764377f28c8d94ce6
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Sat Jul 27 00:34:31 2019 +0300
Update Since: comments for new video APIs
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index 989f3a90..538c703c 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -212,7 +212,7 @@ poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
*
* Return value: %TRUE if yes, %FALSE otherwise
*
- * Since: 0.79
+ * Since: 0.80
*/
gboolean
poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
@@ -230,7 +230,7 @@ poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
*
* Return value: volume setting for the movie (0 - 100)
*
- * Since: 0.79
+ * Since: 0.80
*/
gint
poppler_movie_get_volume (PopplerMovie *poppler_movie)
@@ -248,7 +248,7 @@ poppler_movie_get_volume (PopplerMovie *poppler_movie)
*
* Return value: the relative speed of the movie (1 means no change)
*
- * Since: 0.79
+ * Since: 0.80
*/
gdouble
poppler_movie_get_rate (PopplerMovie *poppler_movie)
@@ -267,7 +267,7 @@ poppler_movie_get_rate (PopplerMovie *poppler_movie)
* Return value: the number of degrees the movie should be rotated (positive,
* multiples of 90: 0, 90, 180, 270)
*
- * Since: 0.79
+ * Since: 0.80
*/
gushort
poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
@@ -284,7 +284,7 @@ poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
*
* Obtains the start position of the movie playback
*
- * Since: 0.79
+ * Since: 0.80
*/
void
poppler_movie_get_start (PopplerMovie *poppler_movie,
@@ -302,7 +302,7 @@ poppler_movie_get_start (PopplerMovie *poppler_movie,
*
* Obtains the duration of the movie playback
*
- * Since: 0.79
+ * Since: 0.80
*/
void
poppler_movie_get_duration (PopplerMovie *poppler_movie,
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index e1960c1c..0c7644aa 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -58,7 +58,7 @@ typedef enum
* value in seconds, calculate (double) units/units_per_second. Note that
* units_per_second may be zero if the respective entity is undefined.
*
- * Since: 0.79
+ * Since: 0.80
*/
typedef struct {
gulong units;
commit fc79087f2d26b355b4477155141578a59ff06620
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Fri Jul 5 02:02:26 2019 +0300
Change time-related Movie glib API's to return time as out
Also, added Since: strings and completed missing API doc comments.
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index 40f541f7..eae3e896 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -595,9 +595,9 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_synchronous_play (movie) ? "Yes" : "No", &row);
pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%i", poppler_movie_get_volume (movie)), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rate:</b>", g_strdup_printf("%g", poppler_movie_get_rate (movie)), &row);
- start = poppler_movie_get_start (movie);
+ poppler_movie_get_start (movie, &start);
pgd_table_add_property (GTK_GRID (table), "<b>Start:</b>", g_strdup_printf("%lu/%i s", start.units, start.units_per_second), &row);
- duration = poppler_movie_get_duration (movie);
+ poppler_movie_get_duration (movie, &duration);
pgd_table_add_property (GTK_GRID (table), "<b>Duration:</b>", g_strdup_printf("%lu/%i s", duration.units, duration.units_per_second), &row);
pgd_table_add_property (GTK_GRID (table), "<b>Rotation Angle:</b>", g_strdup_printf("%u", poppler_movie_get_rotation_angle (movie)), &row);
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index f505ce07..989f3a90 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -211,6 +211,8 @@ poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
* the PDF viewer accepts any interactive action
*
* Return value: %TRUE if yes, %FALSE otherwise
+ *
+ * Since: 0.79
*/
gboolean
poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
@@ -227,6 +229,8 @@ poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
* Returns the playback audio volume
*
* Return value: volume setting for the movie (0 - 100)
+ *
+ * Since: 0.79
*/
gint
poppler_movie_get_volume (PopplerMovie *poppler_movie)
@@ -243,6 +247,8 @@ poppler_movie_get_volume (PopplerMovie *poppler_movie)
* Returns the relative speed of the movie
*
* Return value: the relative speed of the movie (1 means no change)
+ *
+ * Since: 0.79
*/
gdouble
poppler_movie_get_rate (PopplerMovie *poppler_movie)
@@ -260,6 +266,8 @@ poppler_movie_get_rate (PopplerMovie *poppler_movie)
*
* Return value: the number of degrees the movie should be rotated (positive,
* multiples of 90: 0, 90, 180, 270)
+ *
+ * Since: 0.79
*/
gushort
poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
@@ -269,20 +277,38 @@ poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
return poppler_movie->rotation_angle;
}
-const static PopplerMovieTime time0 = {0, 0};
-
-PopplerMovieTime
-poppler_movie_get_start (PopplerMovie *poppler_movie)
+/**
+ * poppler_movie_get_start:
+ * @poppler_movie: a #PopplerMovie
+ * @start: (out): a return location for a #PopplerMovieTime
+ *
+ * Obtains the start position of the movie playback
+ *
+ * Since: 0.79
+ */
+void
+poppler_movie_get_start (PopplerMovie *poppler_movie,
+ PopplerMovieTime *start)
{
- g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), time0);
+ g_return_if_fail (POPPLER_IS_MOVIE (poppler_movie));
- return poppler_movie->start;
+ *start = poppler_movie->start;
}
-PopplerMovieTime
-poppler_movie_get_duration (PopplerMovie *poppler_movie)
+/**
+ * poppler_movie_get_duration:
+ * @poppler_movie: a #PopplerMovie
+ * @duration: (out): a return location for a #PopplerMovieTime
+ *
+ * Obtains the duration of the movie playback
+ *
+ * Since: 0.79
+ */
+void
+poppler_movie_get_duration (PopplerMovie *poppler_movie,
+ PopplerMovieTime *duration)
{
- g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), time0);
+ g_return_if_fail (POPPLER_IS_MOVIE (poppler_movie));
- return poppler_movie->duration;
+ *duration = poppler_movie->duration;
}
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 0cb7bb20..e1960c1c 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -51,6 +51,15 @@ typedef enum
POPPLER_MOVIE_PLAY_MODE_PALINDROME
} PopplerMoviePlayMode;
+/**
+ * PopplerMovieTime:
+ *
+ * Time-related entities (start position, duration); to get the equivalent
+ * value in seconds, calculate (double) units/units_per_second. Note that
+ * units_per_second may be zero if the respective entity is undefined.
+ *
+ * Since: 0.79
+ */
typedef struct {
gulong units;
gint units_per_second;
@@ -75,9 +84,11 @@ gdouble poppler_movie_get_rate (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
gushort poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
-PopplerMovieTime poppler_movie_get_start (PopplerMovie *poppler_movie);
+void poppler_movie_get_start (PopplerMovie *poppler_movie,
+ PopplerMovieTime *start);
POPPLER_PUBLIC
-PopplerMovieTime poppler_movie_get_duration (PopplerMovie *poppler_movie);
+void poppler_movie_get_duration (PopplerMovie *poppler_movie,
+ PopplerMovieTime *duration);
G_END_DECLS
commit 9a65ab0f43bf3fe1c60da0a0657ccdbaddaba1e5
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Fri Jul 5 01:11:25 2019 +0300
Update the Movie section in poppler-sections.txt
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index d94abf22..e2f1276a 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -583,10 +583,17 @@ poppler_media_get_type
<TITLE>Poppler Movie</TITLE>
PopplerMovie
PopplerMoviePlayMode
+PopplerMovieTime
+poppler_movie_get_duration
poppler_movie_get_filename
poppler_movie_get_play_mode
+poppler_movie_get_rate
+poppler_movie_get_rotation_angle
+poppler_movie_get_start
+poppler_movie_get_volume
poppler_movie_need_poster
poppler_movie_show_controls
+poppler_movie_synchronous_play
<SUBSECTION Standard>
POPPLER_MOVIE
commit 2f55f4cc10cc7544b1c564ef28f84d470b2dbe05
Author: Evgeny Stambulchik <fnevgeny at gmail.com>
Date: Thu Jun 20 00:07:07 2019 +0300
Implement missing Movie API's in the Glib bindings
diff --git a/glib/demo/utils.c b/glib/demo/utils.c
index 38bde147..40f541f7 100644
--- a/glib/demo/utils.c
+++ b/glib/demo/utils.c
@@ -564,6 +564,7 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
GtkWidget *button;
GEnumValue *enum_value;
gint row = 0;
+ PopplerMovieTime start, duration;
table = gtk_bin_get_child (GTK_BIN (movie_view));
if (table) {
@@ -590,7 +591,15 @@ pgd_movie_view_set_movie (GtkWidget *movie_view,
pgd_table_add_property (GTK_GRID (table), "<b>Need Poster:</b>", poppler_movie_need_poster (movie) ? "Yes" : "No", &row);
pgd_table_add_property (GTK_GRID (table), "<b>Show Controls:</b>", poppler_movie_show_controls (movie) ? "Yes" : "No", &row);
enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_MOVIE_PLAY_MODE), poppler_movie_get_play_mode (movie));
- pgd_table_add_property (GTK_GRID (table), "<b>Play mode:</b>", enum_value->value_name, &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Play Mode:</b>", enum_value->value_name, &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Synchronous Play:</b>", poppler_movie_synchronous_play (movie) ? "Yes" : "No", &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Volume:</b>", g_strdup_printf("%i", poppler_movie_get_volume (movie)), &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Rate:</b>", g_strdup_printf("%g", poppler_movie_get_rate (movie)), &row);
+ start = poppler_movie_get_start (movie);
+ pgd_table_add_property (GTK_GRID (table), "<b>Start:</b>", g_strdup_printf("%lu/%i s", start.units, start.units_per_second), &row);
+ duration = poppler_movie_get_duration (movie);
+ pgd_table_add_property (GTK_GRID (table), "<b>Duration:</b>", g_strdup_printf("%lu/%i s", duration.units, duration.units_per_second), &row);
+ pgd_table_add_property (GTK_GRID (table), "<b>Rotation Angle:</b>", g_strdup_printf("%u", poppler_movie_get_rotation_angle (movie)), &row);
button = gtk_button_new_with_mnemonic ("_Play");
g_signal_connect (button, "clicked",
diff --git a/glib/poppler-movie.cc b/glib/poppler-movie.cc
index 999d1c40..f505ce07 100644
--- a/glib/poppler-movie.cc
+++ b/glib/poppler-movie.cc
@@ -38,6 +38,12 @@ struct _PopplerMovie
gboolean need_poster;
gboolean show_controls;
PopplerMoviePlayMode mode;
+ gboolean synchronous_play;
+ gint volume;
+ gdouble rate;
+ PopplerMovieTime start;
+ PopplerMovieTime duration;
+ gushort rotation_angle;
};
struct _PopplerMovieClass
@@ -105,6 +111,20 @@ _poppler_movie_new (const Movie *poppler_movie)
break;
}
+ movie->synchronous_play = poppler_movie->getActivationParameters()->synchronousPlay;
+
+ movie->volume = poppler_movie->getActivationParameters()->volume;
+
+ movie->rate = poppler_movie->getActivationParameters()->rate;
+
+ movie->start.units = poppler_movie->getActivationParameters()->start.units;
+ movie->start.units_per_second = poppler_movie->getActivationParameters()->start.units_per_second;
+
+ movie->duration.units = poppler_movie->getActivationParameters()->duration.units;
+ movie->duration.units_per_second = poppler_movie->getActivationParameters()->duration.units_per_second;
+
+ movie->rotation_angle = poppler_movie->getRotationAngle();
+
return movie;
}
@@ -182,3 +202,87 @@ poppler_movie_get_play_mode (PopplerMovie *poppler_movie)
return poppler_movie->mode;
}
+
+/**
+ * poppler_movie_synchronous_play:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns whether the user must wait for the movie to be finished before
+ * the PDF viewer accepts any interactive action
+ *
+ * Return value: %TRUE if yes, %FALSE otherwise
+ */
+gboolean
+poppler_movie_synchronous_play (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), FALSE);
+
+ return poppler_movie->synchronous_play;
+}
+
+/**
+ * poppler_movie_get_volume:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns the playback audio volume
+ *
+ * Return value: volume setting for the movie (0 - 100)
+ */
+gint
+poppler_movie_get_volume (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0);
+
+ return poppler_movie->volume;
+}
+
+/**
+ * poppler_movie_get_rate:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns the relative speed of the movie
+ *
+ * Return value: the relative speed of the movie (1 means no change)
+ */
+gdouble
+poppler_movie_get_rate (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0);
+
+ return poppler_movie->rate;
+}
+
+/**
+ * poppler_movie_get_rotation_angle:
+ * @poppler_movie: a #PopplerMovie
+ *
+ * Returns the rotation angle
+ *
+ * Return value: the number of degrees the movie should be rotated (positive,
+ * multiples of 90: 0, 90, 180, 270)
+ */
+gushort
+poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), 0);
+
+ return poppler_movie->rotation_angle;
+}
+
+const static PopplerMovieTime time0 = {0, 0};
+
+PopplerMovieTime
+poppler_movie_get_start (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), time0);
+
+ return poppler_movie->start;
+}
+
+PopplerMovieTime
+poppler_movie_get_duration (PopplerMovie *poppler_movie)
+{
+ g_return_val_if_fail (POPPLER_IS_MOVIE (poppler_movie), time0);
+
+ return poppler_movie->duration;
+}
diff --git a/glib/poppler-movie.h b/glib/poppler-movie.h
index 02c07650..0cb7bb20 100644
--- a/glib/poppler-movie.h
+++ b/glib/poppler-movie.h
@@ -51,6 +51,11 @@ typedef enum
POPPLER_MOVIE_PLAY_MODE_PALINDROME
} PopplerMoviePlayMode;
+typedef struct {
+ gulong units;
+ gint units_per_second;
+} PopplerMovieTime;
+
POPPLER_PUBLIC
GType poppler_movie_get_type (void) G_GNUC_CONST;
POPPLER_PUBLIC
@@ -61,6 +66,18 @@ POPPLER_PUBLIC
gboolean poppler_movie_show_controls (PopplerMovie *poppler_movie);
POPPLER_PUBLIC
PopplerMoviePlayMode poppler_movie_get_play_mode (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+gboolean poppler_movie_synchronous_play (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+gint poppler_movie_get_volume (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+gdouble poppler_movie_get_rate (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+gushort poppler_movie_get_rotation_angle (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+PopplerMovieTime poppler_movie_get_start (PopplerMovie *poppler_movie);
+POPPLER_PUBLIC
+PopplerMovieTime poppler_movie_get_duration (PopplerMovie *poppler_movie);
G_END_DECLS
More information about the poppler
mailing list