export: show main color spaces rather than DVL chain

This commit is contained in:
itsmattkc
2020-04-22 23:34:23 +10:00
parent 361a986b79
commit 197e60b6c3
6 changed files with 99 additions and 74 deletions
+75 -44
View File
@@ -25,7 +25,7 @@
OLIVE_NAMESPACE_ENTER
ColorSpaceChooser::ColorSpaceChooser(ColorManager* color_manager, bool enable_input_field, QWidget *parent):
ColorSpaceChooser::ColorSpaceChooser(ColorManager* color_manager, bool enable_input_field, bool enable_display_fields, QWidget *parent):
QGroupBox(parent),
color_manager_(color_manager)
{
@@ -36,7 +36,18 @@ ColorSpaceChooser::ColorSpaceChooser(ColorManager* color_manager, bool enable_in
int row = 0;
if (enable_input_field) {
layout->addWidget(new QLabel(tr("Input:")), row, 0);
QString field_text;
if (enable_display_fields) {
// If the display fields are visible, identify this as the input
field_text = tr("Input:");
} else {
// Otherwise, this widget will essentially just serve as a list of standard color spaces
field_text = tr("Color Space:");
}
layout->addWidget(new QLabel(field_text), row, 0);
input_combobox_ = new QComboBox();
layout->addWidget(input_combobox_, row, 1);
@@ -58,54 +69,56 @@ ColorSpaceChooser::ColorSpaceChooser(ColorManager* color_manager, bool enable_in
input_combobox_ = nullptr;
}
{
layout->addWidget(new QLabel(tr("Display:")), row, 0);
if (enable_display_fields) {
{
layout->addWidget(new QLabel(tr("Display:")), row, 0);
display_combobox_ = new QComboBox();
layout->addWidget(display_combobox_, row, 1);
display_combobox_ = new QComboBox();
layout->addWidget(display_combobox_, row, 1);
QStringList display_spaces = color_manager->ListAvailableDisplays();
QStringList display_spaces = color_manager->ListAvailableDisplays();
foreach (const QString& s, display_spaces) {
display_combobox_->addItem(s);
foreach (const QString& s, display_spaces) {
display_combobox_->addItem(s);
}
display_combobox_->setCurrentText(color_manager_->GetDefaultDisplay());
connect(display_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
connect(display_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::UpdateViews);
}
display_combobox_->setCurrentText(color_manager_->GetDefaultDisplay());
row++;
connect(display_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
connect(display_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::UpdateViews);
}
{
layout->addWidget(new QLabel(tr("View:")), row, 0);
row++;
view_combobox_ = new QComboBox();
layout->addWidget(view_combobox_, row, 1);
{
layout->addWidget(new QLabel(tr("View:")), row, 0);
UpdateViews(display_combobox_->currentText());
view_combobox_ = new QComboBox();
layout->addWidget(view_combobox_, row, 1);
UpdateViews(display_combobox_->currentText());
connect(view_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
}
row++;
{
layout->addWidget(new QLabel(tr("Look:")), row, 0);
look_combobox_ = new QComboBox();
layout->addWidget(look_combobox_, row, 1);
QStringList looks = color_manager->ListAvailableLooks();
look_combobox_->addItem(tr("(None)"), QString());
foreach (const QString& s, looks) {
look_combobox_->addItem(s, s);
connect(view_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
}
connect(look_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
row++;
{
layout->addWidget(new QLabel(tr("Look:")), row, 0);
look_combobox_ = new QComboBox();
layout->addWidget(look_combobox_, row, 1);
QStringList looks = color_manager->ListAvailableLooks();
look_combobox_->addItem(tr("(None)"), QString());
foreach (const QString& s, looks) {
look_combobox_->addItem(s, s);
}
connect(look_combobox_, &QComboBox::currentTextChanged, this, &ColorSpaceChooser::ComboBoxChanged);
}
}
}
@@ -120,17 +133,29 @@ QString ColorSpaceChooser::input() const
QString ColorSpaceChooser::display() const
{
return display_combobox_->currentText();
if (display_combobox_) {
return display_combobox_->currentText();
} else {
return QString();
}
}
QString ColorSpaceChooser::view() const
{
return view_combobox_->currentText();
if (view_combobox_) {
return view_combobox_->currentText();
} else {
return QString();
}
}
QString ColorSpaceChooser::look() const
{
return look_combobox_->currentData().toString();
if (look_combobox_) {
return look_combobox_->currentData().toString();
} else {
return QString();
}
}
void ColorSpaceChooser::set_input(const QString &s)
@@ -195,10 +220,16 @@ void ColorSpaceChooser::UpdateViews(const QString& display)
void ColorSpaceChooser::ComboBoxChanged()
{
if (input_combobox_) {
emit ColorSpaceChanged(input(), display(), view(), look());
emit InputColorSpaceChanged(input());
}
emit DisplayColorSpaceChanged(display(), view(), look());
if (display_combobox_) {
emit DisplayColorSpaceChanged(display(), view(), look());
}
if (input_combobox_ && display_combobox_) {
emit ColorSpaceChanged(input(), display(), view(), look());
}
}
OLIVE_NAMESPACE_EXIT
+3 -1
View File
@@ -32,7 +32,7 @@ class ColorSpaceChooser : public QGroupBox
{
Q_OBJECT
public:
ColorSpaceChooser(ColorManager* color_manager, bool enable_input_field = true, QWidget* parent = nullptr);
ColorSpaceChooser(ColorManager* color_manager, bool enable_input_field = true, bool enable_display_fields = true, QWidget* parent = nullptr);
QString input() const;
QString display() const;
@@ -45,6 +45,8 @@ public:
void set_look(const QString& s);
signals:
void InputColorSpaceChanged(const QString& input);
void ColorSpaceChanged(const QString& input, const QString& display, const QString& view, const QString& look);
void DisplayColorSpaceChanged(const QString& display, const QString& view, const QString& look);
+4 -6
View File
@@ -216,14 +216,14 @@ ExportDialog::ExportDialog(ViewerOutput *viewer_node, QWidget *parent) :
connect(video_tab_->maintain_aspect_checkbox(), SIGNAL(toggled(bool)), this, SLOT(ResolutionChanged()));
connect(video_tab_->codec_combobox(), SIGNAL(currentIndexChanged(int)), this, SLOT(VideoCodecChanged()));
connect(video_tab_,
&ExportVideoTab::DisplayColorSpaceChanged,
&ExportVideoTab::ColorSpaceChanged,
preview_viewer_,
static_cast<void (ViewerWidget::*)(const QString&, const QString&, const QString&)>(&ViewerWidget::SetOCIOParameters));
static_cast<void(ViewerWidget::*)(const QString&)>(&ViewerWidget::SetOCIODisplay));
// Set viewer to view the node
preview_viewer_->ConnectViewerNode(viewer_node_);
preview_viewer_->SetColorMenuEnabled(false);
preview_viewer_->SetOCIOParameters(video_tab_->CurrentOCIODisplay(), video_tab_->CurrentOCIOView(), video_tab_->CurrentOCIOLook());
preview_viewer_->SetOCIODisplay(video_tab_->CurrentOCIOColorSpace());
// Update renderer
// FIXME: This is going to be VERY slow since it will need to hash every single frame. It would be better to have a
@@ -312,9 +312,7 @@ void ExportDialog::accept()
ColorProcessorPtr color_processor = ColorProcessor::Create(color_manager_,
color_manager_->GetReferenceColorSpace(),
video_tab_->CurrentOCIODisplay(),
video_tab_->CurrentOCIOView(),
video_tab_->CurrentOCIOLook());
video_tab_->CurrentOCIOColorSpace());
// Set up encoder
EncodingParams encoding_params;
+4 -14
View File
@@ -80,19 +80,9 @@ void ExportVideoTab::set_frame_rate(const rational &frame_rate)
frame_rate_combobox_->setCurrentIndex(frame_rates_.indexOf(frame_rate));
}
QString ExportVideoTab::CurrentOCIODisplay()
QString ExportVideoTab::CurrentOCIOColorSpace()
{
return color_space_chooser_->display();
}
QString ExportVideoTab::CurrentOCIOView()
{
return color_space_chooser_->view();
}
QString ExportVideoTab::CurrentOCIOLook()
{
return color_space_chooser_->look();
return color_space_chooser_->input();
}
CodecSection *ExportVideoTab::GetCodecSection() const
@@ -175,8 +165,8 @@ QWidget* ExportVideoTab::SetupResolutionSection()
QWidget* ExportVideoTab::SetupColorSection()
{
color_space_chooser_ = new ColorSpaceChooser(color_manager_, false);
connect(color_space_chooser_, &ColorSpaceChooser::DisplayColorSpaceChanged, this, &ExportVideoTab::DisplayColorSpaceChanged);
color_space_chooser_ = new ColorSpaceChooser(color_manager_, true, false);
connect(color_space_chooser_, &ColorSpaceChooser::InputColorSpaceChanged, this, &ExportVideoTab::ColorSpaceChanged);
return color_space_chooser_;
}
+2 -4
View File
@@ -56,9 +56,7 @@ public:
const rational& frame_rate() const;
void set_frame_rate(const rational& frame_rate);
QString CurrentOCIODisplay();
QString CurrentOCIOView();
QString CurrentOCIOLook();
QString CurrentOCIOColorSpace();
CodecSection* GetCodecSection() const;
void SetCodecSection(CodecSection* section);
@@ -66,7 +64,7 @@ public:
H264Section* h264_section() const;
signals:
void DisplayColorSpaceChanged(const QString& display, const QString& view, const QString& look);
void ColorSpaceChanged(const QString& colorspace);
private:
QWidget* SetupResolutionSection();
+11 -5
View File
@@ -467,11 +467,17 @@ void ViewerGLWidget::SetupColorProcessor()
try {
color_service_ = OpenGLColorProcessor::Create(color_manager_,
color_manager_->GetReferenceColorSpace(),
ocio_display_,
ocio_view_,
ocio_look_);
if (ocio_view_.isEmpty()) {
color_service_ = OpenGLColorProcessor::Create(color_manager_,
color_manager_->GetReferenceColorSpace(),
ocio_display_);
} else {
color_service_ = OpenGLColorProcessor::Create(color_manager_,
color_manager_->GetReferenceColorSpace(),
ocio_display_,
ocio_view_,
ocio_look_);
}
makeCurrent();
color_service_->Enable(context(), true);