summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-06-07 16:34:48 +0100
committerCarl Hetherington <cth@carlh.net>2013-06-07 16:34:48 +0100
commit0799f9481791f8a70589bf9e6991883f48e27b3d (patch)
tree83e7b079b0dafacdb73aedd23a3a1cdccf35bdd3 /src
parent75de8898265611a4fc7068c40668ca697e6c1864 (diff)
Improve VideoContent ratio handling slightly.
Diffstat (limited to 'src')
-rw-r--r--src/lib/config.cc2
-rw-r--r--src/lib/video_content.cc4
-rw-r--r--src/wx/film_editor.cc47
-rw-r--r--src/wx/film_editor.h1
4 files changed, 50 insertions, 4 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 6fbd34d05..e4cebdc73 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -52,7 +52,7 @@ Config::Config ()
, _tms_path (N_("."))
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
, _default_still_length (10)
- , _default_container (0)
+ , _default_container (Ratio::from_id ("185"))
, _default_dcp_content_type (0)
{
_allowed_dcp_frame_rates.push_back (24);
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index 84dee81d1..99471edc1 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -40,7 +40,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, Time s, ContentVideoFrame
: Content (f, s)
, _video_length (len)
, _video_frame_rate (0)
- , _ratio (0)
+ , _ratio (Ratio::from_id ("185"))
{
}
@@ -49,7 +49,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
: Content (f, p)
, _video_length (0)
, _video_frame_rate (0)
- , _ratio (0)
+ , _ratio (Ratio::from_id ("185"))
{
}
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc
index bddce18be..aab2a6147 100644
--- a/src/wx/film_editor.cc
+++ b/src/wx/film_editor.cc
@@ -190,7 +190,7 @@ FilmEditor::connect_to_widgets ()
_use_dci_name->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::use_dci_name_toggled), 0, this);
_edit_dci_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::edit_dci_button_clicked), 0, this);
_container->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::container_changed), 0, this);
-// _format->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::format_changed), 0, this);
+ _ratio->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::ratio_changed), 0, this);
_content->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler (FilmEditor::content_selection_changed), 0, this);
_content->Connect (wxID_ANY, wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler (FilmEditor::content_selection_changed), 0, this);
_content_add->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::content_add_clicked), 0, this);
@@ -705,6 +705,24 @@ FilmEditor::film_content_changed (weak_ptr<Content> weak_content, int property)
checked_set (_top_crop, video_content ? video_content->crop().top : 0);
checked_set (_bottom_crop, video_content ? video_content->crop().bottom : 0);
setup_scaling_description ();
+ } else if (property == VideoContentProperty::VIDEO_RATIO) {
+ if (video_content) {
+ int n = 0;
+ vector<Ratio const *> ratios = Ratio::all ();
+ vector<Ratio const *>::iterator i = ratios.begin ();
+ while (i != ratios.end() && *i != video_content->ratio()) {
+ ++i;
+ ++n;
+ }
+
+ if (i == ratios.end()) {
+ checked_set (_ratio, -1);
+ } else {
+ checked_set (_ratio, n);
+ }
+ } else {
+ checked_set (_ratio, -1);
+ }
} else if (property == AudioContentProperty::AUDIO_GAIN) {
checked_set (_audio_gain, audio_content ? audio_content->audio_gain() : 0);
} else if (property == AudioContentProperty::AUDIO_DELAY) {
@@ -855,6 +873,7 @@ FilmEditor::set_film (shared_ptr<Film> f)
film_content_changed (boost::shared_ptr<Content> (), ContentProperty::START);
film_content_changed (boost::shared_ptr<Content> (), ContentProperty::LENGTH);
film_content_changed (boost::shared_ptr<Content> (), VideoContentProperty::VIDEO_CROP);
+ film_content_changed (boost::shared_ptr<Content> (), VideoContentProperty::VIDEO_RATIO);
film_content_changed (boost::shared_ptr<Content> (), AudioContentProperty::AUDIO_GAIN);
film_content_changed (boost::shared_ptr<Content> (), AudioContentProperty::AUDIO_DELAY);
film_content_changed (boost::shared_ptr<Content> (), AudioContentProperty::AUDIO_MAPPING);
@@ -1182,6 +1201,7 @@ FilmEditor::content_selection_changed (wxListEvent &)
film_content_changed (s, ContentProperty::START);
film_content_changed (s, ContentProperty::LENGTH);
film_content_changed (s, VideoContentProperty::VIDEO_CROP);
+ film_content_changed (s, VideoContentProperty::VIDEO_RATIO);
film_content_changed (s, AudioContentProperty::AUDIO_GAIN);
film_content_changed (s, AudioContentProperty::AUDIO_DELAY);
film_content_changed (s, AudioContentProperty::AUDIO_MAPPING);
@@ -1456,3 +1476,28 @@ FilmEditor::set_selection (weak_ptr<Content> wc)
}
}
}
+
+void
+FilmEditor::ratio_changed (wxCommandEvent &)
+{
+ if (!_film) {
+ return;
+ }
+
+ shared_ptr<Content> c = selected_content ();
+ if (!c) {
+ return;
+ }
+
+ shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (c);
+ if (!vc) {
+ return;
+ }
+
+ int const n = _ratio->GetSelection ();
+ if (n >= 0) {
+ vector<Ratio const *> ratios = Ratio::all ();
+ assert (n < int (ratios.size()));
+ vc->set_ratio (ratios[n]);
+ }
+}
diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h
index be1bf7c36..4b096a2e1 100644
--- a/src/wx/film_editor.h
+++ b/src/wx/film_editor.h
@@ -96,6 +96,7 @@ private:
void audio_mapping_changed (AudioMapping);
void start_changed ();
void length_changed ();
+ void ratio_changed (wxCommandEvent &);
/* Handle changes to the model */
void film_changed (Film::Property);