Fix subtitle appearance configuration with FFmpeg-text subs.
authorCarl Hetherington <cth@carlh.net>
Thu, 26 May 2016 15:38:06 +0000 (16:38 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 26 May 2016 15:38:06 +0000 (16:38 +0100)
src/wx/subtitle_panel.cc
src/wx/text_subtitle_appearance_dialog.cc
src/wx/text_subtitle_appearance_dialog.h

index 31ee2c4777686f9a172c6d676516824510595716..852d754d538cadef1a6dad0784e68c4dca775fd9 100644 (file)
@@ -431,15 +431,33 @@ SubtitlePanel::appearance_dialog_clicked ()
        ContentList c = _parent->selected_subtitle ();
        DCPOMATIC_ASSERT (c.size() == 1);
 
-       shared_ptr<TextSubtitleContent> sr = dynamic_pointer_cast<TextSubtitleContent> (c.front ());
-       if (sr) {
-               TextSubtitleAppearanceDialog* d = new TextSubtitleAppearanceDialog (this, sr);
+       bool text = false;
+       bool image = false;
+
+       if (
+               dynamic_pointer_cast<TextSubtitleContent> (c.front()) ||
+               dynamic_pointer_cast<DCPContent> (c.front()) ||
+               dynamic_pointer_cast<DCPSubtitleContent> (c.front())) {
+
+               text = true;
+       }
+
+       shared_ptr<FFmpegContent> fc = dynamic_pointer_cast<FFmpegContent> (c.front());
+       if (fc) {
+               if (fc->subtitle_stream()->has_text()) {
+                       text = true;
+               } else if (fc->subtitle_stream()->has_image()) {
+                       image = true;
+               }
+       }
+
+       if (text) {
+               TextSubtitleAppearanceDialog* d = new TextSubtitleAppearanceDialog (this, c.front()->subtitle);
                if (d->ShowModal () == wxID_OK) {
                        d->apply ();
                }
                d->Destroy ();
-       } else {
-               shared_ptr<FFmpegContent> fc = dynamic_pointer_cast<FFmpegContent> (c.front ());
+       } else if (image) {
                DCPOMATIC_ASSERT (fc);
                ImageSubtitleColourDialog* d = new ImageSubtitleColourDialog (this, fc, fc->subtitle_stream ());
                if (d->ShowModal() == wxID_OK) {
index c2dd70c75ebfe34ad8cdc86e71c82802f7897bb8..30402a63f3502e26c1735198fa8663171126a99f 100644 (file)
@@ -26,7 +26,7 @@
 
 using boost::shared_ptr;
 
-TextSubtitleAppearanceDialog::TextSubtitleAppearanceDialog (wxWindow* parent, shared_ptr<TextSubtitleContent> content)
+TextSubtitleAppearanceDialog::TextSubtitleAppearanceDialog (wxWindow* parent, shared_ptr<SubtitleContent> content)
        : TableDialog (parent, _("Subtitle appearance"), 2, 1, true)
        , _content (content)
 {
@@ -44,10 +44,10 @@ TextSubtitleAppearanceDialog::TextSubtitleAppearanceDialog (wxWindow* parent, sh
 
        layout ();
 
-       _colour->SetColour (wxColour (_content->subtitle->colour().r, _content->subtitle->colour().g, _content->subtitle->colour().b));
-       _outline->SetValue (_content->subtitle->outline ());
+       _colour->SetColour (wxColour (_content->colour().r, _content->colour().g, _content->colour().b));
+       _outline->SetValue (_content->outline ());
        _outline_colour->SetColour (
-               wxColour (_content->subtitle->outline_colour().r, _content->subtitle->outline_colour().g, _content->subtitle->outline_colour().b)
+               wxColour (_content->outline_colour().r, _content->outline_colour().g, _content->outline_colour().b)
                );
 }
 
@@ -55,8 +55,8 @@ void
 TextSubtitleAppearanceDialog::apply ()
 {
        wxColour const c = _colour->GetColour ();
-       _content->subtitle->set_colour (dcp::Colour (c.Red(), c.Green(), c.Blue()));
-       _content->subtitle->set_outline (_outline->GetValue ());
+       _content->set_colour (dcp::Colour (c.Red(), c.Green(), c.Blue()));
+       _content->set_outline (_outline->GetValue ());
        wxColour const oc = _outline_colour->GetColour ();
-       _content->subtitle->set_outline_colour (dcp::Colour (oc.Red(), oc.Green(), oc.Blue()));
+       _content->set_outline_colour (dcp::Colour (oc.Red(), oc.Green(), oc.Blue()));
 }
index a6e4b8dc0a6d80a7ac167ad60096e957dfb3c1a2..feecae543128b90b9f56f2f1e675c0adf2d36201 100644 (file)
 
 class wxCheckBox;
 class wxColourPickerCtrl;
-class TextSubtitleContent;
+class SubtitleContent;
 
 class TextSubtitleAppearanceDialog : public TableDialog
 {
 public:
-       TextSubtitleAppearanceDialog (wxWindow* parent, boost::shared_ptr<TextSubtitleContent> content);
+       TextSubtitleAppearanceDialog (wxWindow* parent, boost::shared_ptr<SubtitleContent> content);
 
        void apply ();
 
@@ -37,5 +37,5 @@ private:
        wxCheckBox* _outline;
        wxColourPickerCtrl* _outline_colour;
 
-       boost::shared_ptr<TextSubtitleContent> _content;
+       boost::shared_ptr<SubtitleContent> _content;
 };