/*
- Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "lib/film.h"
#include "lib/config.h"
#include "lib/player_text.h"
+#include "lib/timer.h"
#include <RtAudio.h>
#include <wx/wx.h>
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 ();
- bool quick_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_panel ();
+ }
+#endif
+
+ StateTimer const & state_timer () const {
+ return _state_timer;
+ }
+
+ int gets () const {
+ return _gets;
+ }
+
boost::signals2::signal<void (boost::weak_ptr<PlayerVideo>)> ImageChanged;
boost::signals2::signal<void ()> PositionChanged;
- boost::signals2::signal<void ()> Started;
- boost::signals2::signal<void ()> Stopped;
- boost::signals2::signal<void ()> FilmChanged;
+ boost::signals2::signal<void (DCPTime)> Started;
+ boost::signals2::signal<void (DCPTime)> Stopped;
+ /** While playing back we reached the end of the film (emitted from GUI thread) */
+ boost::signals2::signal<void ()> Finished;
+
+ boost::signals2::signal<bool ()> PlaybackPermitted;
private:
void paint_panel ();
void panel_sized (wxSizeEvent &);
void timer ();
void calculate_sizes ();
- void check_play_state ();
void player_change (ChangeType type, int, bool);
void get ();
void display_player_video ();
void film_change (ChangeType, Film::Property);
- void timecode_clicked ();
void recreate_butler ();
void config_changed (Config::Property);
+ bool maybe_draw_background_image (wxPaintDC& dc);
+
DCPTime time () const;
DCPTime uncorrected_time () const;
Frame average_latency () const;
+
void refresh_panel ();
+ bool quick_refresh ();
boost::shared_ptr<Film> _film;
boost::shared_ptr<Player> _player;
bool _outline_content;
Eyes _eyes;
+ /** true to pad the viewer panel with black, false to use
+ the normal window background colour.
+ */
+ bool _pad_black;
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ bool _in_watermark;
+ int _watermark_x;
+ int _watermark_y;
+ bool _background_image;
+#endif
+
+ StateTimer _state_timer;
+ int _gets;
boost::signals2::scoped_connection _config_changed_connection;
};