Improve VideoContent ratio handling slightly.
authorCarl Hetherington <cth@carlh.net>
Fri, 7 Jun 2013 15:34:48 +0000 (16:34 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 7 Jun 2013 15:34:48 +0000 (16:34 +0100)
src/lib/config.cc
src/lib/video_content.cc
src/wx/film_editor.cc
src/wx/film_editor.h

index 6fbd34d05e5f772f4cb8872b7aa3190bc33c705b..e4cebdc73b36f2d3c10941cd951f475834c6cd42 100644 (file)
@@ -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);
index 84dee81d1f22935abaa6dd6abdf3e7383879a911..99471edc1a84f0fdf222e9151314223664716fed 100644 (file)
@@ -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"))
 {
 
 }
index bddce18beaaf699000f5c412100648e110f88589..aab2a61474a83882145bd6c2b211891baa099b3d 100644 (file)
@@ -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]);
+       }
+}
index be1bf7c361da04ba878de17e5de99eac8c5d687b..4b096a2e15242ac592280e6075da30e8798a6f7d 100644 (file)
@@ -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);