#include "playhead_to_timecode_dialog.h"
#include "simple_video_view.h"
#include "wx_util.h"
-#include "lib/film.h"
-#include "lib/ratio.h"
-#include "lib/util.h"
-#include "lib/job_manager.h"
-#include "lib/image.h"
-#include "lib/exceptions.h"
+#include "lib/butler.h"
+#include "lib/compose.hpp"
+#include "lib/config.h"
+#include "lib/dcpomatic_log.h"
#include "lib/examine_content_job.h"
+#include "lib/exceptions.h"
+#include "lib/film.h"
#include "lib/filter.h"
+#include "lib/image.h"
+#include "lib/job_manager.h"
+#include "lib/log.h"
#include "lib/player.h"
#include "lib/player_video.h"
+#include "lib/ratio.h"
+#include "lib/text_content.h"
+#include "lib/timer.h"
+#include "lib/util.h"
#include "lib/video_content.h"
#include "lib/video_decoder.h"
-#include "lib/timer.h"
-#include "lib/butler.h"
-#include "lib/log.h"
-#include "lib/config.h"
-#include "lib/compose.hpp"
-#include "lib/dcpomatic_log.h"
-#include "lib/text_content.h"
+#include <dcp/exceptions.h>
+#include <dcp/warnings.h>
extern "C" {
#include <libavutil/pixfmt.h>
}
-#include <dcp/exceptions.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/tglbtn.h>
-#include <iostream>
+LIBDCP_ENABLE_WARNINGS
#include <iomanip>
using std::bad_alloc;
-using std::cout;
using std::dynamic_pointer_cast;
using std::make_shared;
using std::max;
}
-/** Ask for ::get() to be called next time we are idle */
+/** Ask for ::idle_handler() to be called next time we are idle */
void
FilmViewer::request_idle_display_next_frame ()
{
}
+optional<ContentTime>
+FilmViewer::position_in_content (shared_ptr<const Content> content) const
+{
+ return _player->dcp_to_content_time (content, position());
+}
+
+
DCPTime
FilmViewer::one_video_frame () const
{
_video_view->set_optimise_for_j2k (o);
}
+
+void
+FilmViewer::set_crop_guess (dcpomatic::Rect<float> crop)
+{
+ if (crop != _crop_guess) {
+ _crop_guess = crop;
+ _video_view->update ();
+ }
+}
+
+
+void
+FilmViewer::unset_crop_guess ()
+{
+ _crop_guess = {};
+ _video_view->update ();
+}
+