summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-09-27 22:05:24 +0100
committerCarl Hetherington <cth@carlh.net>2018-09-27 22:05:24 +0100
commit97201e626d697e7dff203b2ea4f4a2c268d98313 (patch)
tree6c5058676e4ce8977b75e0a513e595b41c1a622c /src
parent595278aced18ca2597787e933b383c04a850e3d8 (diff)
Basic watermark.
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.h2
-rw-r--r--src/wx/film_viewer.cc19
-rw-r--r--src/wx/film_viewer.h6
3 files changed, 26 insertions, 1 deletions
diff --git a/src/lib/config.h b/src/lib/config.h
index 8ddc0367d..629828da9 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -1188,7 +1188,9 @@ private:
boost::optional<boost::filesystem::path> _player_background_image;
std::string _kdm_server_url;
std::string _player_watermark_theatre;
+ /** watermark period in minutes */
int _player_watermark_period;
+ /** watermark duration in milliseconds */
int _player_watermark_duration;
#endif
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 0f18f2e72..54de78f27 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -85,6 +85,9 @@ FilmViewer::FilmViewer (wxWindow* p)
, _closed_captions_dialog (new ClosedCaptionsDialog(p))
, _outline_content (false)
, _eyes (EYES_LEFT)
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ , _in_watermark (false)
+#endif
{
#ifndef __WXOSX__
_panel->SetDoubleBuffered (true);
@@ -328,7 +331,21 @@ FilmViewer::paint_panel ()
dc.DrawBitmap (frame_bitmap, 0, max(0, (_panel_size.height - _out_size.height) / 2));
#ifdef DCPOMATIC_VARIANT_SWAROOP
- /* XXX: watermark */
+ DCPTime const period = DCPTime::from_seconds(Config::instance()->player_watermark_period() * 60);
+ int64_t n = _video_position.get() / period.get();
+ DCPTime from(n * period.get());
+ DCPTime to = from + DCPTime::from_seconds(Config::instance()->player_watermark_duration() / 1000.0);
+ if (from <= _video_position && _video_position <= to) {
+ if (!_in_watermark) {
+ _in_watermark = true;
+ _watermark_x = rand() % _panel_size.width;
+ _watermark_y = rand() % _panel_size.height;
+ }
+ dc.SetTextForeground(*wxWHITE);
+ dc.DrawText(std_to_wx(Config::instance()->player_watermark_theatre()), _watermark_x, _watermark_y);
+ } else {
+ _in_watermark = false;
+ }
#endif
if (_out_size.width < _panel_size.width) {
diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h
index 94690daea..ef124fad3 100644
--- a/src/wx/film_viewer.h
+++ b/src/wx/film_viewer.h
@@ -154,5 +154,11 @@ private:
bool _outline_content;
Eyes _eyes;
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ bool _in_watermark;
+ int _watermark_x;
+ int _watermark_y;
+#endif
+
boost::signals2::scoped_connection _config_changed_connection;
};