#ifdef DCPOMATIC_VARIANT_SWAROOP
_player_background_image = boost::none;
_kdm_server_url = "http://localhost:8000/{CPL}";
- _player_watermark = boost::none;
+ _player_watermark_theatre = "";
+ _player_watermark_period = 1;
+ _player_watermark_duration = 50;
#endif
_allowed_dcp_frame_rates.clear ();
#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");
+ _player_watermark_theatre = f.optional_string_child("PlayerWatermarkTheatre").get_value_or("");
+ _player_watermark_period = f.optional_number_child<int>("PlayerWatermarkPeriod").get_value_or(1);
+ _player_watermark_duration = f.optional_number_child<int>("PlayerWatermarkDuration").get_value_or(150);
#endif
/* Replace any cinemas from config.xml with those from the configured file */
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());
- }
+ root->add_child("PlayerWatermarkTheatre")->add_child_text(_player_watermark_theatre);
+ root->add_child("PlayerWatermarkPeriod")->add_child_text(raw_convert<string>(_player_watermark_period));
+ root->add_child("PlayerWatermarkDuration")->add_child_text(raw_convert<string>(_player_watermark_duration));
#endif
try {
PLAYER_DCP_DIRECTORY,
#ifdef DCPOMATIC_VARIANT_SWAROOP
PLAYER_BACKGROUND_IMAGE,
- PLAYER_WATERMARK,
#endif
OTHER
};
return _kdm_server_url;
}
- boost::optional<boost::filesystem::path> player_watermark () const {
- return _player_watermark;
+ std::string player_watermark_theatre () const {
+ return _player_watermark_theatre;
+ }
+
+ int player_watermark_period () const {
+ return _player_watermark_period;
+ }
+
+ int player_watermark_duration () const {
+ return _player_watermark_duration;
}
#endif
maybe_set (_kdm_server_url, s);
}
- void set_player_watermark (boost::filesystem::path p) {
- maybe_set (_player_watermark, p, PLAYER_WATERMARK);
+ void set_player_watermark_theatre (std::string p) {
+ maybe_set (_player_watermark_theatre, p);
}
- void unset_player_watermark () {
- if (!_player_watermark) {
- return;
- }
- _player_watermark = boost::none;
- changed (PLAYER_WATERMARK);
+ void set_player_watermark_period (int minutes) {
+ maybe_set (_player_watermark_period, minutes);
+ }
+
+ void set_player_watermark_duration (int milliseconds) {
+ maybe_set (_player_watermark_duration, milliseconds);
}
#endif
#ifdef DCPOMATIC_VARIANT_SWAROOP
boost::optional<boost::filesystem::path> _player_background_image;
std::string _kdm_server_url;
- boost::optional<boost::filesystem::path> _player_watermark;
+ std::string _player_watermark_theatre;
+ int _player_watermark_period;
+ int _player_watermark_duration;
#endif
static int const _current_version;
_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 ()
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);
- }
+ /* XXX: watermark */
#endif
if (_out_size.width < _panel_size.width) {
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;
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));
#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
}
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
}
{
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;
#ifdef DCPOMATIC_VARIANT_SWAROOP
FilePickerCtrl* _background_image;
wxTextCtrl* _kdm_server_url;
- FilePickerCtrl* _watermark;
#endif
};
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+class WatermarkPage : public StandardPage
+{
+public:
+ WatermarkPage (wxSize panel_size, int border)
+ : StandardPage (panel_size, border)
+ {}
+
+ wxString GetName () const
+ {
+ return _("Watermark");
+ }
+
+private:
+ void setup ()
+ {
+ wxGridBagSizer* table = new wxGridBagSizer (DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+ _panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
+
+ int r = 0;
+
+ add_label_to_sizer (table, _panel, _("Theatre name"), true, wxGBPosition(r, 0));
+ _theatre = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(300, -1));
+ table->Add (_theatre, wxGBPosition(r, 1), wxGBSpan(1, 2));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Period"), true, wxGBPosition(r, 0));
+ _period = new wxSpinCtrl (_panel, wxID_ANY);
+ _period->SetRange (1, 60);
+ table->Add (_period, wxGBPosition(r, 1));
+ add_label_to_sizer (table, _panel, _("minutes"), false, wxGBPosition(r, 2));
+ ++r;
+
+ add_label_to_sizer (table, _panel, _("Duration"), true, wxGBPosition(r, 0));
+ _duration = new wxSpinCtrl (_panel, wxID_ANY);
+ _duration->SetRange (1, 200);
+ table->Add (_duration, wxGBPosition(r, 1));
+ add_label_to_sizer (table, _panel, _("milliseconds"), false, wxGBPosition(r, 2));
+ ++r;
+
+ _theatre->Bind (wxEVT_TEXT, bind(&WatermarkPage::theatre_changed, this));
+ _duration->Bind (wxEVT_SPINCTRL, bind(&WatermarkPage::duration_changed, this));
+ _period->Bind (wxEVT_SPINCTRL, bind(&WatermarkPage::period_changed, this));
+ }
+
+ void config_changed ()
+ {
+ Config* config = Config::instance ();
+ checked_set (_theatre, config->player_watermark_theatre());
+ checked_set (_duration, config->player_watermark_duration());
+ checked_set (_period, config->player_watermark_period());
+ }
+
+ void theatre_changed ()
+ {
+ Config::instance()->set_player_watermark_theatre(wx_to_std(_theatre->GetValue()));
+ }
+
+ void period_changed ()
+ {
+ Config::instance()->set_player_watermark_period(_period->GetValue());
+ }
+
+ void duration_changed ()
+ {
+ Config::instance()->set_player_watermark_duration(_duration->GetValue());
+ }
+
+ wxTextCtrl* _theatre;
+ wxSpinCtrl* _period;
+ wxSpinCtrl* _duration;
+};
+#endif
+
wxPreferencesEditor*
create_player_config_dialog ()
{
e->AddPage (new PlayerGeneralPage (ps, border));
e->AddPage (new KeysPage (ps, border));
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ e->AddPage (new WatermarkPage (ps, border));
+#endif
return e;
}