summaryrefslogtreecommitdiff
path: root/src/wx/film_viewer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx/film_viewer.cc')
-rw-r--r--src/wx/film_viewer.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 18d16a461..9c714b562 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -26,6 +26,7 @@
#include "playhead_to_timecode_dialog.h"
#include "playhead_to_frame_dialog.h"
#include "wx_util.h"
+#include "closed_captions_view.h"
#include "lib/film.h"
#include "lib/ratio.h"
#include "lib/util.h"
@@ -94,6 +95,7 @@ FilmViewer::FilmViewer (wxWindow* p, bool outline_content, bool jump_to_selected
, _playing (false)
, _latency_history_count (0)
, _dropped (0)
+ , _closed_captions_dialog (new ClosedCaptionsDialog(GetParent()))
{
#ifndef __WXOSX__
_panel->SetDoubleBuffered (true);
@@ -194,6 +196,7 @@ FilmViewer::set_film (shared_ptr<Film> film)
_film = film;
_frame.reset ();
+ _closed_captions_dialog->clear ();
update_position_slider ();
update_position_label ();
@@ -223,6 +226,7 @@ FilmViewer::set_film (shared_ptr<Film> film)
_film->Changed.connect (boost::bind (&FilmViewer::film_changed, this, _1));
_player->Changed.connect (boost::bind (&FilmViewer::player_changed, this, _1, _2));
+ _player->Caption.connect (boost::bind (&FilmViewer::caption, this, _1, _2, _3));
/* Keep about 1 second's worth of history samples */
_latency_history_count = _film->audio_frame_rate() / _audio_block_size;
@@ -349,6 +353,8 @@ FilmViewer::display_player_video ()
_inter_size = _player_video.first->inter_size ();
refresh_panel ();
+
+ _closed_captions_dialog->refresh (time());
}
void
@@ -811,6 +817,7 @@ FilmViewer::seek (DCPTime t, bool accurate)
bool const was_running = stop ();
+ _closed_captions_dialog->clear ();
_butler->seek (t, accurate);
get ();
@@ -935,3 +942,17 @@ FilmViewer::one_video_frame () const
{
return DCPTime::from_frames (1, _film->video_frame_rate());
}
+
+void
+FilmViewer::show_closed_captions ()
+{
+ _closed_captions_dialog->Show();
+}
+
+void
+FilmViewer::caption (PlayerCaption c, CaptionType t, DCPTimePeriod p)
+{
+ if (t == CAPTION_CLOSED) {
+ _closed_captions_dialog->caption (c, p);
+ }
+}