#include "lib/config.h"
#include "lib/dcp_content.h"
#include "lib/ffmpeg_content.h"
+#include "lib/film.h"
#include "lib/filter.h"
#include "lib/frame_rate_change.h"
#include "lib/ratio.h"
#include "lib/util.h"
#include "lib/video_content.h"
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
#include <wx/spinctrl.h>
#include <wx/tglbtn.h>
+LIBDCP_ENABLE_WARNINGS
#include <boost/functional/hash.hpp>
#include <boost/unordered_set.hpp>
#include <set>
int const link_height = 32;
#elif defined(DCPOMATIC_OSX)
int const crop_width = 56;
+#if wxCHECK_VERSION(3, 2, 0)
+ int const link_width = 8 + 15 / dpi_scale_factor(this);
+#else
int const link_width = 23;
+#endif
int const link_height = 28;
#else
int const crop_width = 56;
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(crop_width, -1)),
VideoContentProperty::CROP,
&Content::video,
- boost::mem_fn (&VideoContent::left_crop),
+ boost::mem_fn (&VideoContent::requested_left_crop),
boost::mem_fn (&VideoContent::set_left_crop),
boost::bind (&VideoPanel::left_crop_changed, this)
);
+ auto const link_path = bitmap_path(gui_is_dark() ? "link_white.png" : "link_black.png");
+
_left_right_link = new wxToggleButton (this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(link_width, link_height));
- _left_right_link->SetBitmap (wxBitmap(bitmap_path("link"), wxBITMAP_TYPE_PNG));
+ _left_right_link->SetBitmap(wxBitmap(link_path, wxBITMAP_TYPE_PNG));
_right_crop_label = create_label (this, _("Right"), true);
_right_crop = new ContentSpinCtrl<VideoContent> (
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(crop_width, -1)),
VideoContentProperty::CROP,
&Content::video,
- boost::mem_fn (&VideoContent::right_crop),
+ boost::mem_fn (&VideoContent::requested_right_crop),
boost::mem_fn (&VideoContent::set_right_crop),
boost::bind (&VideoPanel::right_crop_changed, this)
);
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(crop_width, -1)),
VideoContentProperty::CROP,
&Content::video,
- boost::mem_fn (&VideoContent::top_crop),
+ boost::mem_fn (&VideoContent::requested_top_crop),
boost::mem_fn (&VideoContent::set_top_crop),
boost::bind (&VideoPanel::top_crop_changed, this)
);
_top_bottom_link = new wxToggleButton (this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(link_width, link_height));
- _top_bottom_link->SetBitmap (wxBitmap(bitmap_path("link"), wxBITMAP_TYPE_PNG));
+ _top_bottom_link->SetBitmap(wxBitmap(link_path, wxBITMAP_TYPE_PNG));
_bottom_crop_label = create_label (this, _("Bottom"), true);
_bottom_crop = new ContentSpinCtrl<VideoContent> (
new wxSpinCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(crop_width, -1)),
VideoContentProperty::CROP,
&Content::video,
- boost::mem_fn (&VideoContent::bottom_crop),
+ boost::mem_fn (&VideoContent::requested_bottom_crop),
boost::mem_fn (&VideoContent::set_bottom_crop),
boost::bind (&VideoPanel::bottom_crop_changed, this)
);
_fade_in->Changed.connect (boost::bind (&VideoPanel::fade_in_changed, this));
_fade_out->Changed.connect (boost::bind (&VideoPanel::fade_out_changed, this));
- _reference->Bind (wxEVT_CHECKBOX, boost::bind (&VideoPanel::reference_clicked, this));
+ _reference->bind(&VideoPanel::reference_clicked, this);
_scale_fit->Bind (wxEVT_RADIOBUTTON, boost::bind (&VideoPanel::scale_fit_clicked, this));
_scale_custom->Bind (wxEVT_RADIOBUTTON, boost::bind (&VideoPanel::scale_custom_clicked, this));
_scale_custom_edit->Bind (wxEVT_BUTTON, boost::bind (&VideoPanel::scale_custom_edit_clicked, this));
void
-VideoPanel::film_changed (Film::Property property)
+VideoPanel::film_changed(FilmProperty property)
{
switch (property) {
- case Film::Property::VIDEO_FRAME_RATE:
- case Film::Property::CONTAINER:
- case Film::Property::RESOLUTION:
+ case FilmProperty::VIDEO_FRAME_RATE:
+ case FilmProperty::CONTAINER:
+ case FilmProperty::RESOLUTION:
setup_description ();
setup_sensitivity ();
break;
- case Film::Property::REEL_TYPE:
- case Film::Property::INTEROP:
+ case FilmProperty::REEL_TYPE:
+ case FilmProperty::INTEROP:
setup_sensitivity ();
break;
default:
{
auto vc = _parent->selected_video ();
- auto d = new ContentColourConversionDialog (this, vc.front()->video->yuv ());
- d->set (vc.front()->video->colour_conversion().get_value_or (PresetColourConversion::all().front().conversion));
- if (d->ShowModal() == wxID_OK) {
+ ContentColourConversionDialog dialog(this, vc.front()->video->yuv());
+ dialog.set(vc.front()->video->colour_conversion().get_value_or(PresetColourConversion::all().front().conversion));
+ if (dialog.ShowModal() == wxID_OK) {
for (auto i: vc) {
- i->video->set_colour_conversion (d->get ());
+ i->video->set_colour_conversion(dialog.get());
}
} else {
/* Reset the colour conversion choice */
film_content_changed (VideoContentProperty::COLOUR_CONVERSION);
}
- d->Destroy ();
}
{
for (auto i: _parent->selected_video()) {
i->video->set_custom_ratio (optional<float>());
+ i->video->set_custom_size (optional<dcp::Size>());
}
+
+ setup_sensitivity ();
}
if (!scale_custom_edit_clicked()) {
_scale_fit->SetValue (true);
}
+
+ setup_sensitivity ();
}
VideoPanel::scale_custom_edit_clicked ()
{
auto vc = _parent->selected_video().front()->video;
- auto d = new CustomScaleDialog (this, vc->size(), _parent->film()->frame_size(), vc->custom_ratio(), vc->custom_size());
- int const r = d->ShowModal ();
- if (r == wxID_OK) {
- for (auto i: _parent->selected_video()) {
- i->video->set_custom_ratio (d->custom_ratio());
- i->video->set_custom_size (d->custom_size());
- }
+ auto size = vc->size();
+ DCPOMATIC_ASSERT(size);
+
+ CustomScaleDialog dialog(this, *size, _parent->film()->frame_size(), vc->custom_ratio(), vc->custom_size());
+ if (dialog.ShowModal() != wxID_OK) {
+ return false;
+ }
+
+ for (auto i: _parent->selected_video()) {
+ i->video->set_custom_ratio(dialog.custom_ratio());
+ i->video->set_custom_size(dialog.custom_size());
}
- d->Destroy ();
- return r == wxID_OK;
+
+ return true;
}
{
_left_changed_last = true;
if (_left_right_link->GetValue()) {
- for (auto i: _parent->selected_video()) {
- i->video->set_right_crop (i->video->left_crop());
+ for (auto const& i: _parent->selected_video()) {
+ i->video->set_right_crop (i->video->requested_left_crop());
}
}
}
{
_left_changed_last = false;
if (_left_right_link->GetValue()) {
- for (auto i: _parent->selected_video()) {
- i->video->set_left_crop (i->video->right_crop());
+ for (auto const& i: _parent->selected_video()) {
+ i->video->set_left_crop (i->video->requested_right_crop());
}
}
}
_top_changed_last = true;
if (_top_bottom_link->GetValue()) {
for (auto i: _parent->selected_video()) {
- i->video->set_bottom_crop (i->video->top_crop());
+ i->video->set_bottom_crop (i->video->requested_top_crop());
}
}
}
_top_changed_last = false;
if (_top_bottom_link->GetValue()) {
for (auto i: _parent->selected_video()) {
- i->video->set_top_crop (i->video->bottom_crop());
+ i->video->set_top_crop (i->video->requested_bottom_crop());
}
}
}
-