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) {
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)
{
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)
);
}
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()));
}
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 ();
wxCheckBox* _outline;
wxColourPickerCtrl* _outline_colour;
- boost::shared_ptr<TextSubtitleContent> _content;
+ boost::shared_ptr<SubtitleContent> _content;
};