#include "move_to_dialog.h"
#include "lib/content.h"
#include "lib/image_content.h"
-#include "lib/subtitle_content.h"
-#include "lib/dcp_subtitle_content.h"
+#include "lib/text_content.h"
+#include "lib/dcp_text_content.h"
#include "lib/audio_content.h"
-#include "lib/text_subtitle_content.h"
+#include "lib/plain_text_file_content.h"
#include "lib/video_content.h"
#include <dcp/locale_convert.h>
#include <boost/foreach.hpp>
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
FrameRateChange const frc = _parent->film()->active_frame_rate_change (i->position ());
i->set_trim_end (
- ContentTime (i->full_length() - play_length, frc) - i->trim_start ()
+ ContentTime (max(DCPTime(), i->full_length() - play_length), frc) - i->trim_start ()
);
}
}
void
TimingPanel::set_video_frame_rate ()
{
- double const fr = locale_convert<double> (wx_to_std (_video_frame_rate->GetValue ()));
+ optional<double> fr;
+ if (_video_frame_rate->GetValue() != wxT("")) {
+ fr = locale_convert<double> (wx_to_std (_video_frame_rate->GetValue ()));
+ }
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
- i->set_video_frame_rate (fr);
+ if (fr) {
+ i->set_video_frame_rate (*fr);
+ } else {
+ i->unset_video_frame_rate ();
+ }
}
_set_video_frame_rate->Enable (false);
void
TimingPanel::trim_start_to_playhead_clicked ()
{
- DCPTime const ph = _viewer->position ();
+ shared_ptr<const Film> film = _parent->film ();
+ DCPTime const ph = _viewer->position().floor (film->video_frame_rate ());
optional<DCPTime> new_ph;
_viewer->set_coalesce_player_changes (true);
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
if (i->position() < ph && ph < i->end ()) {
- FrameRateChange const frc = _parent->film()->active_frame_rate_change (i->position ());
+ FrameRateChange const frc = film->active_frame_rate_change (i->position ());
i->set_trim_start (i->trim_start() + ContentTime (ph - i->position (), frc));
new_ph = i->position ();
}
void
TimingPanel::trim_end_to_playhead_clicked ()
{
- DCPTime const ph = _viewer->position ();
+ shared_ptr<const Film> film = _parent->film ();
+ DCPTime const ph = _viewer->position().floor (film->video_frame_rate ());
BOOST_FOREACH (shared_ptr<Content> i, _parent->selected ()) {
if (i->position() < ph && ph < i->end ()) {
- FrameRateChange const frc = _parent->film()->active_frame_rate_change (i->position ());
+ FrameRateChange const frc = film->active_frame_rate_change (i->position ());
i->set_trim_end (ContentTime (i->position() + i->full_length() - ph - DCPTime::from_frames (1, frc.dcp), frc) - i->trim_start());
}
}