mirror of
https://github.com/Lime3DS/Lime3DS
synced 2025-01-09 05:33:29 +00:00
89cab445d4
This is based on what was done using additional layouts, but modified to have a variable to control rotation and making it so Single Screen Layout behaves like Upright Single would, and Default Layout behaves like Upright Double would, when the new variable is used. Large Layout and Side Layout currently ignore the new variable. New variable still currently doesn't have a hotkey.
116 lines
5.2 KiB
C++
116 lines
5.2 KiB
C++
// Copyright 2019 Citra Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#include <QColorDialog>
|
|
#include "citra_qt/configuration/configure_enhancements.h"
|
|
#include "core/core.h"
|
|
#include "core/settings.h"
|
|
#include "ui_configure_enhancements.h"
|
|
#include "video_core/renderer_opengl/post_processing_opengl.h"
|
|
|
|
ConfigureEnhancements::ConfigureEnhancements(QWidget* parent)
|
|
: QWidget(parent), ui(new Ui::ConfigureEnhancements) {
|
|
ui->setupUi(this);
|
|
SetConfiguration();
|
|
|
|
ui->layoutBox->setEnabled(!Settings::values.custom_layout);
|
|
|
|
ui->resolution_factor_combobox->setEnabled(Settings::values.use_hw_renderer);
|
|
|
|
connect(ui->render_3d_combobox,
|
|
static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
|
[this](int currentIndex) {
|
|
updateShaders(static_cast<Settings::StereoRenderOption>(currentIndex));
|
|
});
|
|
|
|
connect(ui->bg_button, &QPushButton::clicked, this, [this] {
|
|
const QColor new_bg_color = QColorDialog::getColor(bg_color);
|
|
if (!new_bg_color.isValid()) {
|
|
return;
|
|
}
|
|
bg_color = new_bg_color;
|
|
QPixmap pixmap(ui->bg_button->size());
|
|
pixmap.fill(bg_color);
|
|
const QIcon color_icon(pixmap);
|
|
ui->bg_button->setIcon(color_icon);
|
|
});
|
|
|
|
ui->toggle_preload_textures->setEnabled(ui->toggle_custom_textures->isChecked());
|
|
connect(ui->toggle_custom_textures, &QCheckBox::toggled, this, [this] {
|
|
ui->toggle_preload_textures->setEnabled(ui->toggle_custom_textures->isChecked());
|
|
if (!ui->toggle_preload_textures->isEnabled())
|
|
ui->toggle_preload_textures->setChecked(false);
|
|
});
|
|
}
|
|
|
|
void ConfigureEnhancements::SetConfiguration() {
|
|
ui->resolution_factor_combobox->setCurrentIndex(Settings::values.resolution_factor);
|
|
ui->render_3d_combobox->setCurrentIndex(static_cast<int>(Settings::values.render_3d));
|
|
ui->factor_3d->setValue(Settings::values.factor_3d);
|
|
updateShaders(Settings::values.render_3d);
|
|
ui->toggle_linear_filter->setChecked(Settings::values.filter_mode);
|
|
ui->layout_combobox->setCurrentIndex(static_cast<int>(Settings::values.layout_option));
|
|
ui->swap_screen->setChecked(Settings::values.swap_screen);
|
|
ui->toggle_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache);
|
|
ui->upright_screen->setChecked(Settings::values.upright_screen);
|
|
ui->toggle_dump_textures->setChecked(Settings::values.dump_textures);
|
|
ui->toggle_custom_textures->setChecked(Settings::values.custom_textures);
|
|
ui->toggle_preload_textures->setChecked(Settings::values.preload_textures);
|
|
bg_color = QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green,
|
|
Settings::values.bg_blue);
|
|
QPixmap pixmap(ui->bg_button->size());
|
|
pixmap.fill(bg_color);
|
|
const QIcon color_icon(pixmap);
|
|
ui->bg_button->setIcon(color_icon);
|
|
}
|
|
|
|
void ConfigureEnhancements::updateShaders(Settings::StereoRenderOption stereo_option) {
|
|
ui->shader_combobox->clear();
|
|
|
|
if (stereo_option == Settings::StereoRenderOption::Anaglyph)
|
|
ui->shader_combobox->addItem("dubois (builtin)");
|
|
else if (stereo_option == Settings::StereoRenderOption::Interlaced)
|
|
ui->shader_combobox->addItem("horizontal (builtin)");
|
|
else
|
|
ui->shader_combobox->addItem("none (builtin)");
|
|
|
|
ui->shader_combobox->setCurrentIndex(0);
|
|
|
|
for (const auto& shader : OpenGL::GetPostProcessingShaderList(
|
|
stereo_option == Settings::StereoRenderOption::Anaglyph)) {
|
|
ui->shader_combobox->addItem(QString::fromStdString(shader));
|
|
if (Settings::values.pp_shader_name == shader)
|
|
ui->shader_combobox->setCurrentIndex(ui->shader_combobox->count() - 1);
|
|
}
|
|
}
|
|
|
|
void ConfigureEnhancements::RetranslateUI() {
|
|
ui->retranslateUi(this);
|
|
}
|
|
|
|
void ConfigureEnhancements::ApplyConfiguration() {
|
|
Settings::values.resolution_factor =
|
|
static_cast<u16>(ui->resolution_factor_combobox->currentIndex());
|
|
Settings::values.render_3d =
|
|
static_cast<Settings::StereoRenderOption>(ui->render_3d_combobox->currentIndex());
|
|
Settings::values.factor_3d = ui->factor_3d->value();
|
|
Settings::values.pp_shader_name =
|
|
ui->shader_combobox->itemText(ui->shader_combobox->currentIndex()).toStdString();
|
|
Settings::values.filter_mode = ui->toggle_linear_filter->isChecked();
|
|
Settings::values.layout_option =
|
|
static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex());
|
|
Settings::values.swap_screen = ui->swap_screen->isChecked();
|
|
Settings::values.use_disk_shader_cache = ui->toggle_disk_shader_cache->isChecked();
|
|
Settings::values.upright_screen = ui->upright_screen->isChecked();
|
|
Settings::values.dump_textures = ui->toggle_dump_textures->isChecked();
|
|
Settings::values.custom_textures = ui->toggle_custom_textures->isChecked();
|
|
Settings::values.preload_textures = ui->toggle_preload_textures->isChecked();
|
|
Settings::values.bg_red = static_cast<float>(bg_color.redF());
|
|
Settings::values.bg_green = static_cast<float>(bg_color.greenF());
|
|
Settings::values.bg_blue = static_cast<float>(bg_color.blueF());
|
|
}
|
|
|
|
ConfigureEnhancements::~ConfigureEnhancements() {
|
|
delete ui;
|
|
}
|