summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-09-27 11:25:21 +0100
committerCarl Hetherington <cth@carlh.net>2018-09-27 11:25:21 +0100
commitf76453d0b78e5b71abbd9b4fcfda9e8eb0b61ad0 (patch)
tree2e486b2c2724d6a2d3ec10c6f0855e82aa7fbf5b /src
parentf169ad6ed7d4061c40802c7dea2e1abb04cdeb4b (diff)
Untested watermarking.
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.cc5
-rw-r--r--src/lib/config.h18
-rw-r--r--src/wx/film_viewer.cc19
-rw-r--r--src/wx/film_viewer.h4
-rw-r--r--src/wx/player_config_dialog.cc15
5 files changed, 61 insertions, 0 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index abb775be8..d7fd74449 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -172,6 +172,7 @@ Config::set_defaults ()
#ifdef DCPOMATIC_VARIANT_SWAROOP
_player_background_image = boost::none;
_kdm_server_url = "http://localhost:8000/{CPL}";
+ _player_watermark = boost::none;
#endif
_allowed_dcp_frame_rates.clear ();
@@ -508,6 +509,7 @@ try
#ifdef DCPOMATIC_VARIANT_SWAROOP
_player_background_image = f.optional_string_child("PlayerBackgroundImage");
_kdm_server_url = f.optional_string_child("KDMServerURL").get_value_or("http://localhost:8000/{CPL}");
+ _player_watermark = f.optional_string_child("PlayerWatermark");
#endif
/* Replace any cinemas from config.xml with those from the configured file */
@@ -911,6 +913,9 @@ Config::write_config () const
root->add_child("PlayerBackgroundImage")->add_child_text(_player_background_image->string());
}
root->add_child("KDMServerURL")->add_child_text(_kdm_server_url);
+ if (_player_watermark) {
+ root->add_child("PlayerWatermark")->add_child_text(_player_watermark->string());
+ }
#endif
try {
diff --git a/src/lib/config.h b/src/lib/config.h
index 378272ff0..bcc46f8fa 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -79,6 +79,7 @@ public:
PLAYER_DCP_DIRECTORY,
#ifdef DCPOMATIC_VARIANT_SWAROOP
PLAYER_BACKGROUND_IMAGE,
+ PLAYER_WATERMARK,
#endif
OTHER
};
@@ -501,6 +502,10 @@ public:
std::string kdm_server_url () const {
return _kdm_server_url;
}
+
+ boost::optional<boost::filesystem::path> player_watermark () const {
+ return _player_watermark;
+ }
#endif
/* SET (mostly) */
@@ -965,6 +970,18 @@ public:
void set_kdm_server_url (std::string s) {
maybe_set (_kdm_server_url, s);
}
+
+ void set_player_watermark (boost::filesystem::path p) {
+ maybe_set (_player_watermark, p, PLAYER_WATERMARK);
+ }
+
+ void unset_player_watermark () {
+ if (!_player_watermark) {
+ return;
+ }
+ _player_watermark = boost::none;
+ changed (PLAYER_WATERMARK);
+ }
#endif
void changed (Property p = OTHER);
@@ -1162,6 +1179,7 @@ private:
#ifdef DCPOMATIC_VARIANT_SWAROOP
boost::optional<boost::filesystem::path> _player_background_image;
std::string _kdm_server_url;
+ boost::optional<boost::filesystem::path> _player_watermark;
#endif
static int const _current_version;
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 5a3e58724..b116c0245 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -101,6 +101,7 @@ FilmViewer::FilmViewer (wxWindow* p)
_config_changed_connection = Config::instance()->Changed.connect (bind (&FilmViewer::config_changed, this, _1));
config_changed (Config::SOUND_OUTPUT);
+ config_changed (Config::PLAYER_WATERMARK);
}
FilmViewer::~FilmViewer ()
@@ -327,6 +328,14 @@ FilmViewer::paint_panel ()
wxBitmap frame_bitmap (frame);
dc.DrawBitmap (frame_bitmap, 0, max(0, (_panel_size.height - _out_size.height) / 2));
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ if (_watermark && (_video_position.get() % 960000) == 0) {
+ int x = rand() % (_panel_size.width - _watermark->GetWidth());
+ int y = rand() % (_panel_size.height - _watermark->GetHeight());
+ dc.DrawBitmap (*_watermark, x, y);
+ }
+#endif
+
if (_out_size.width < _panel_size.width) {
wxPen p (_panel->GetParent()->GetBackgroundColour());
wxBrush b (_panel->GetParent()->GetBackgroundColour());
@@ -571,6 +580,16 @@ void
FilmViewer::config_changed (Config::Property p)
{
#ifdef DCPOMATIC_VARIANT_SWAROOP
+ if (p == Config::PLAYER_WATERMARK) {
+ optional<boost::filesystem::path> f = Config::instance()->player_watermark();
+ if (f) {
+ _watermark = wxBitmap(wxImage(std_to_wx(f->string())));
+ } else {
+ _watermark = boost::none;
+ }
+ return;
+ }
+
if (p == Config::PLAYER_BACKGROUND_IMAGE) {
refresh_panel ();
return;
diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h
index 94690daea..db23182a6 100644
--- a/src/wx/film_viewer.h
+++ b/src/wx/film_viewer.h
@@ -154,5 +154,9 @@ private:
bool _outline_content;
Eyes _eyes;
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ boost::optional<wxBitmap> _watermark;
+#endif
+
boost::signals2::scoped_connection _config_changed_connection;
};
diff --git a/src/wx/player_config_dialog.cc b/src/wx/player_config_dialog.cc
index 0a6985bd1..3697c3ce3 100644
--- a/src/wx/player_config_dialog.cc
+++ b/src/wx/player_config_dialog.cc
@@ -126,6 +126,11 @@ private:
table->Add (_background_image, wxGBPosition (r, 1));
++r;
+ add_label_to_sizer (table, _panel, _("Watermark image"), true, wxGBPosition (r, 0));
+ _watermark = new FilePickerCtrl (_panel, _("Select image file"), "*.png;*.jpg;*.jpeg;*.tif;*.tiff", true);
+ table->Add (_watermark, wxGBPosition (r, 1));
+ ++r;
+
add_label_to_sizer (table, _panel, _("KDM server URL"), true, wxGBPosition(r, 0));
_kdm_server_url = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(400, -1));
table->Add (_kdm_server_url, wxGBPosition (r, 1));
@@ -141,6 +146,7 @@ private:
#ifdef DCPOMATIC_VARIANT_SWAROOP
_background_image->Bind (wxEVT_FILEPICKER_CHANGED, bind(&PlayerGeneralPage::background_image_changed, this));
_kdm_server_url->Bind (wxEVT_TEXT, bind(&PlayerGeneralPage::kdm_server_url_changed, this));
+ _watermark->Bind (wxEVT_TEXT, bind(&PlayerGeneralPage::watermark_changed, this));
#endif
}
@@ -178,6 +184,9 @@ private:
checked_set (_background_image, *config->player_background_image());
}
checked_set (_kdm_server_url, config->kdm_server_url());
+ if (config->player_watermark()) {
+ checked_set (_watermark, *config->player_watermark());
+ }
#endif
}
@@ -232,6 +241,11 @@ private:
{
Config::instance()->set_kdm_server_url(wx_to_std(_kdm_server_url->GetValue()));
}
+
+ void watermark_changed ()
+ {
+ Config::instance()->set_player_watermark(wx_to_std(_watermark->GetPath()));
+ }
#endif
wxChoice* _player_mode;
@@ -243,6 +257,7 @@ private:
#ifdef DCPOMATIC_VARIANT_SWAROOP
FilePickerCtrl* _background_image;
wxTextCtrl* _kdm_server_url;
+ FilePickerCtrl* _watermark;
#endif
};