+2017-05-12 Carl Hetherington <cth@carlh.net>
+
+ * Add option for default scale-to (#664).
+
2017-05-11 Carl Hetherington <cth@carlh.net>
* Updated cs_CZ translation from Tomáš Begeni.
_language = optional<string> ();
_default_still_length = 10;
_default_container = Ratio::from_id ("185");
+ _default_scale_to = 0;
_default_dcp_content_type = DCPContentType::from_isdcf_name ("FTR");
_default_dcp_audio_channels = 6;
_default_j2k_bandwidth = 100000000;
_default_container = Ratio::from_id (c.get ());
}
+ c = f.optional_string_child ("DefaultScaleTo");
+ if (c) {
+ _default_scale_to = Ratio::from_id (c.get ());
+ }
+
c = f.optional_string_child ("DefaultDCPContentType");
if (c) {
_default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ());
if (_default_container) {
root->add_child("DefaultContainer")->add_child_text (_default_container->id ());
}
+ if (_default_scale_to) {
+ root->add_child("DefaultScaleTo")->add_child_text (_default_scale_to->id ());
+ }
if (_default_dcp_content_type) {
root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ());
}
return _default_container;
}
+ Ratio const * default_scale_to () const {
+ return _default_scale_to;
+ }
+
DCPContentType const * default_dcp_content_type () const {
return _default_dcp_content_type;
}
maybe_set (_default_container, c);
}
+ void set_default_scale_to (Ratio const * c) {
+ maybe_set (_default_scale_to, c);
+ }
+
void set_default_dcp_content_type (DCPContentType const * t) {
maybe_set (_default_dcp_content_type, t);
}
/** Default length of still image content (seconds) */
int _default_still_length;
Ratio const * _default_container;
+ Ratio const * _default_scale_to;
DCPContentType const * _default_dcp_content_type;
int _default_dcp_audio_channels;
std::string _dcp_issuer;
_sample_aspect_ratio = ar;
_yuv = yuv;
- /* Guess correct scale from size and sample aspect ratio */
- _scale = VideoContentScale (
- Ratio::nearest_from_ratio (double (_size.width) * ar.get_value_or (1) / _size.height)
- );
+ if (Config::instance()->default_scale_to ()) {
+ _scale = VideoContentScale (Config::instance()->default_scale_to ());
+ } else {
+ /* Guess correct scale from size and sample aspect ratio */
+ _scale = VideoContentScale (
+ Ratio::nearest_from_ratio (double (_size.width) * ar.get_value_or (1) / _size.height)
+ );
+ }
}
LOG_GENERAL ("Video length obtained from header as %1 frames", _length);
_container = new wxChoice (_panel, wxID_ANY);
table->Add (_container);
+ add_label_to_sizer (table, _panel, _("Default scale-to"), true);
+ _scale_to = new wxChoice (_panel, wxID_ANY);
+ table->Add (_scale_to);
+
add_label_to_sizer (table, _panel, _("Default content type"), true);
_dcp_content_type = new wxChoice (_panel, wxID_ANY);
table->Add (_dcp_content_type);
_container->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::container_changed, this));
+ _scale_to->Append (_("Guess from content"));
+
+ for (size_t i = 0; i < ratios.size(); ++i) {
+ _scale_to->Append (std_to_wx (ratios[i]->nickname ()));
+ }
+
+ _scale_to->Bind (wxEVT_CHOICE, boost::bind (&DefaultsPage::scale_to_changed, this));
+
vector<DCPContentType const *> const ct = DCPContentType::all ();
for (size_t i = 0; i < ct.size(); ++i) {
_dcp_content_type->Append (std_to_wx (ct[i]->pretty_name ()));
if (ratios[i] == config->default_container ()) {
_container->SetSelection (i);
}
+ if (ratios[i] == config->default_scale_to ()) {
+ _scale_to->SetSelection (i + 1);
+ }
+ }
+
+ if (!config->default_scale_to()) {
+ _scale_to->SetSelection (0);
}
vector<DCPContentType const *> const ct = DCPContentType::all ();
Config::instance()->set_default_container (ratio[_container->GetSelection()]);
}
+ void scale_to_changed ()
+ {
+ int const s = _scale_to->GetSelection ();
+ if (s == 0) {
+ Config::instance()->set_default_scale_to (0);
+ } else {
+ vector<Ratio const *> ratio = Ratio::all ();
+ Config::instance()->set_default_scale_to (ratio[s - 1]);
+ }
+ }
+
void dcp_content_type_changed ()
{
vector<DCPContentType const *> ct = DCPContentType::all ();
wxDirPickerCtrl* _kdm_directory;
#endif
wxChoice* _container;
+ wxChoice* _scale_to;
wxChoice* _dcp_content_type;
wxChoice* _dcp_audio_channels;
wxChoice* _standard;