/*
- Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
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
_frame.reset ();
- _slider->SetValue (0);
- set_position_text ();
+ update_position_slider ();
+ update_position_label ();
if (!_film) {
return;
_film.reset ();
return;
}
+
+ /* Always burn in subtitles, even if we are set not to, otherwise we won't see them
+ in the preview.
+ */
+ _player->set_burn_subtitles (true);
_film_connection = _film->Changed.connect (boost::bind (&FilmViewer::film_changed, this, _1));
_position = p;
}
- set_position_text ();
refresh_panel ();
_last_get_accurate = accurate;
FilmViewer::timer ()
{
get (_position + DCPTime::from_frames (1, _film->video_frame_rate ()), true);
-
- DCPTime const len = _film->length ();
-
- if (len.get ()) {
- int const new_slider_position = 4096 * _position.get() / len.get();
- if (new_slider_position != _slider->GetValue()) {
- _slider->SetValue (new_slider_position);
- }
- }
+ update_position_label ();
+ update_position_slider ();
}
-
void
FilmViewer::paint_panel ()
{
t = _film->length() - DCPTime::from_frames (1, _film->video_frame_rate ());
}
get (t, false);
+ update_position_label ();
}
void
calculate_sizes ();
get (_position, _last_get_accurate);
+ update_position_label ();
+ update_position_slider ();
}
void
}
void
-FilmViewer::set_position_text ()
+FilmViewer::update_position_slider ()
+{
+ if (!_film) {
+ _slider->SetValue (0);
+ return;
+ }
+
+ DCPTime const len = _film->length ();
+
+ if (len.get ()) {
+ int const new_slider_position = 4096 * _position.get() / len.get();
+ if (new_slider_position != _slider->GetValue()) {
+ _slider->SetValue (new_slider_position);
+ }
+ }
+}
+
+void
+FilmViewer::update_position_label ()
{
if (!_film) {
_frame_number->SetLabel ("0");
_timecode->SetLabel ("0:0:0.0");
return;
}
-
+
double const fps = _film->video_frame_rate ();
/* Count frame number from 1 ... not sure if this is the best idea */
_frame_number->SetLabel (wxString::Format (wxT("%d"), int (rint (_position.seconds() * fps)) + 1));
-
- double w = _position.seconds ();
- int const h = (w / 3600);
- w -= h * 3600;
- int const m = (w / 60);
- w -= m * 60;
- int const s = floor (w);
- w -= s;
- int const f = rint (w * fps);
- _timecode->SetLabel (wxString::Format (wxT("%02d:%02d:%02d.%02d"), h, m, s, f));
+ _timecode->SetLabel (time_to_timecode (_position, fps));
}
void
}
get (p, true);
+ update_position_label ();
+ update_position_slider ();
}
void
FilmViewer::forward_clicked ()
{
get (_position + DCPTime::from_frames (1, _film->video_frame_rate ()), true);
+ update_position_label ();
+ update_position_slider ();
}
void
calculate_sizes ();
get (_position, _last_get_accurate);
+ update_position_label ();
+ update_position_slider ();
}
void