+ FilmViewer (wxWindow *);
+ ~FilmViewer ();
+
+ /** @return the window showing the film's video */
+ wxWindow* panel () const {
+ return _video_view->get();
+ }
+
+ VideoView const * video_view () const {
+ return _video_view;
+ }
+
+ void show_closed_captions ();
+
+ void set_film (boost::shared_ptr<Film>);
+ boost::shared_ptr<Film> film () const {
+ return _film;
+ }
+
+ void seek (dcpomatic::DCPTime t, bool accurate);
+ void seek (boost::shared_ptr<Content> content, dcpomatic::ContentTime p, bool accurate);
+ void seek_by (dcpomatic::DCPTime by, bool accurate);
+ /** @return our `playhead' position; this may not lie exactly on a frame boundary */
+ dcpomatic::DCPTime position () const {
+ return _video_position;
+ }
+ dcpomatic::DCPTime one_video_frame () const;
+
+ void start ();
+ bool stop ();
+ void suspend ();
+ void resume ();
+ bool playing () const {
+ return _playing;
+ }
+
+ void set_coalesce_player_changes (bool c);
+ void set_dcp_decode_reduction (boost::optional<int> reduction);
+ boost::optional<int> dcp_decode_reduction () const;
+ void set_outline_content (bool o);
+ void set_eyes (Eyes e);
+ void set_pad_black (bool p);
+
+ void slow_refresh ();
+
+ int dropped () const {
+ return _dropped;
+ }
+
+ int audio_callback (void* out, unsigned int frames);
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ void set_background_image (bool b) {
+ _background_image = b;
+ refresh_view ();
+ }
+
+ bool background_image () const {
+ return _background_image;
+ }
+#endif
+
+ StateTimer const & state_timer () const {
+ return _state_timer;
+ }
+
+ StateTimer& state_timer () {
+ return _state_timer;
+ }
+
+ int gets () const {
+ return _gets;
+ }
+
+ /* Some accessors and utility methods that VideoView classes need */
+ dcp::Size out_size () const {
+ return _out_size;
+ }
+ dcp::Size inter_size () const {
+ return _inter_size;
+ }
+ Position<int> inter_position () const {
+ return _inter_position;
+ }
+ bool outline_content () const {
+ return _outline_content;
+ }
+ bool pad_black () const {
+ return _pad_black;
+ }
+ boost::shared_ptr<Butler> butler () const {
+ return _butler;
+ }
+ int time_until_next_frame () const;