Add burn subtitles option to Film.
authorCarl Hetherington <cth@carlh.net>
Tue, 1 Jul 2014 15:41:13 +0000 (16:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 1 Jul 2014 15:41:13 +0000 (16:41 +0100)
src/lib/film.cc
src/lib/film.h
src/wx/film_editor.cc
src/wx/film_editor.h

index 1456314bebb58a700181947a3260283ff80e7017..4f4dc3187958c28c17383079a05f396c5a815d9a 100644 (file)
@@ -121,6 +121,7 @@ Film::Film (boost::filesystem::path dir, bool log)
        , _three_d (false)
        , _sequence_video (true)
        , _interop (false)
+       , _burn_subtitles (false)
        , _state_version (current_state_version)
        , _dirty (false)
 {
@@ -184,6 +185,10 @@ Film::video_identifier () const
                s << "_S";
        }
 
+       if (_burn_subtitles) {
+               s << "_B";
+       }
+
        if (_three_d) {
                s << "_3D";
        }
@@ -375,6 +380,7 @@ Film::metadata () const
        root->add_child("ThreeD")->add_child_text (_three_d ? "1" : "0");
        root->add_child("SequenceVideo")->add_child_text (_sequence_video ? "1" : "0");
        root->add_child("Interop")->add_child_text (_interop ? "1" : "0");
+       root->add_child("BurnSubtitles")->add_child_text (_burn_subtitles ? "1" : "0");
        root->add_child("Signed")->add_child_text (_signed ? "1" : "0");
        root->add_child("Encrypted")->add_child_text (_encrypted ? "1" : "0");
        root->add_child("Key")->add_child_text (_key.hex ());
@@ -446,6 +452,9 @@ Film::read_metadata ()
        _sequence_video = f.bool_child ("SequenceVideo");
        _three_d = f.bool_child ("ThreeD");
        _interop = f.bool_child ("Interop");
+       if (_state_version >= 32) {
+               _burn_subtitles = f.bool_child ("BurnSubtitles");
+       }
        _key = dcp::Key (f.string_child ("Key"));
 
        list<string> notes;
@@ -681,7 +690,6 @@ Film::dcp_name (bool if_created_now) const
        return name();
 }
 
-
 void
 Film::set_directory (boost::filesystem::path d)
 {
@@ -773,6 +781,13 @@ Film::set_interop (bool i)
        signal_changed (INTEROP);
 }
 
+void
+Film::set_burn_subtitles (bool b)
+{
+       _burn_subtitles = b;
+       signal_changed (BURN_SUBTITLES);
+}
+
 void
 Film::signal_changed (Property p)
 {
index 178fd9002d18cff8b586790d5d14c473e796374b..83505cc6d9be2cda0b1a4611dd8dc1f8cfc559b5 100644 (file)
@@ -162,10 +162,12 @@ public:
                ISDCF_METADATA,
                VIDEO_FRAME_RATE,
                AUDIO_CHANNELS,
-               /** The setting of _three_d has been changed */
+               /** The setting of _three_d has changed */
                THREE_D,
                SEQUENCE_VIDEO,
                INTEROP,
+               /** The setting of _burn_subtitles has changed */
+               BURN_SUBTITLES,
        };
 
 
@@ -236,6 +238,10 @@ public:
        bool interop () const {
                return _interop;
        }
+
+       bool burn_subtitles () const {
+               return _burn_subtitles;
+       }
        
 
        /* SET */
@@ -262,6 +268,7 @@ public:
        void set_isdcf_date_today ();
        void set_sequence_video (bool);
        void set_interop (bool);
+       void set_burn_subtitles (bool);
 
        /** Emitted when some property has of the Film has changed */
        mutable boost::signals2::signal<void (Property)> Changed;
@@ -322,6 +329,7 @@ private:
        bool _three_d;
        bool _sequence_video;
        bool _interop;
+       bool _burn_subtitles;
        dcp::Key _key;
 
        int _state_version;
index ee8ee6d389346598f3e013eeb236c816451eedbd..5b4f6e8fe75c38a86c1dbc2b514629d1136f40f1 100644 (file)
@@ -155,6 +155,10 @@ FilmEditor::make_dcp_panel ()
        }
        ++r;
 
+       _burn_subtitles = new wxCheckBox (_dcp_panel, wxID_ANY, _("Burn subtitles into image"));
+       grid->Add (_burn_subtitles, wxGBPosition (r, 0), wxGBSpan (1, 2));
+       ++r;
+
        _signed = new wxCheckBox (_dcp_panel, wxID_ANY, _("Signed"));
        grid->Add (_signed, wxGBPosition (r, 0), wxGBSpan (1, 2));
        ++r;
@@ -249,6 +253,7 @@ FilmEditor::connect_to_widgets ()
        _frame_rate_choice->Bind(wxEVT_COMMAND_CHOICE_SELECTED,       boost::bind (&FilmEditor::frame_rate_choice_changed, this));
        _frame_rate_spin->Bind  (wxEVT_COMMAND_SPINCTRL_UPDATED,      boost::bind (&FilmEditor::frame_rate_spin_changed, this));
        _best_frame_rate->Bind  (wxEVT_COMMAND_BUTTON_CLICKED,        boost::bind (&FilmEditor::best_frame_rate_clicked, this));
+       _burn_subtitles->Bind   (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::burn_subtitles_toggled, this));
        _signed->Bind           (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::signed_toggled, this));
        _encrypted->Bind        (wxEVT_COMMAND_CHECKBOX_CLICKED,      boost::bind (&FilmEditor::encrypted_toggled, this));
        _audio_channels->Bind   (wxEVT_COMMAND_SPINCTRL_UPDATED,      boost::bind (&FilmEditor::audio_channels_changed, this));
@@ -341,6 +346,16 @@ FilmEditor::signed_toggled ()
        _film->set_signed (_signed->GetValue ());
 }
 
+void
+FilmEditor::burn_subtitles_toggled ()
+{
+       if (!_film) {
+               return;
+       }
+
+       _film->set_burn_subtitles (_burn_subtitles->GetValue ());
+}
+
 void
 FilmEditor::encrypted_toggled ()
 {
@@ -446,6 +461,9 @@ FilmEditor::film_changed (Film::Property p)
        case Film::SCALER:
                checked_set (_scaler, Scaler::as_index (_film->scaler ()));
                break;
+       case Film::BURN_SUBTITLES:
+               checked_set (_burn_subtitles, _film->burn_subtitles ());
+               break;
        case Film::SIGNED:
                checked_set (_signed, _film->is_signed ());
                break;
@@ -615,6 +633,7 @@ FilmEditor::set_film (shared_ptr<Film> f)
        film_changed (Film::RESOLUTION);
        film_changed (Film::SCALER);
        film_changed (Film::SIGNED);
+       film_changed (Film::BURN_SUBTITLES);
        film_changed (Film::ENCRYPTED);
        film_changed (Film::J2K_BANDWIDTH);
        film_changed (Film::ISDCF_METADATA);
@@ -653,6 +672,7 @@ FilmEditor::set_general_sensitivity (bool s)
        if (_film && _film->encrypted ()) {
                si = false;
        }
+       _burn_subtitles->Enable (s);
        _signed->Enable (si);
        
        _encrypted->Enable (s);
index 96cae3900d66d1b9aea29a4043e285f28dc81f2a..6028a700de326764b02ffbdc78eff5f4fc77ab37 100644 (file)
@@ -98,6 +98,7 @@ private:
        void three_d_changed ();
        void standard_changed ();
        void signed_toggled ();
+       void burn_subtitles_toggled ();
        void encrypted_toggled ();
 
        /* Handle changes to the model */
@@ -154,6 +155,7 @@ private:
        wxChoice* _resolution;
        wxChoice* _standard;
        wxCheckBox* _signed;
+       wxCheckBox* _burn_subtitles;
        wxCheckBox* _encrypted;
 
        ContentMenu _menu;