|
@@ -774,6 +774,34 @@ void GMainWindow::InitializeWidgets() {
|
|
|
tas_label->setFocusPolicy(Qt::NoFocus);
|
|
tas_label->setFocusPolicy(Qt::NoFocus);
|
|
|
statusBar()->insertPermanentWidget(0, tas_label);
|
|
statusBar()->insertPermanentWidget(0, tas_label);
|
|
|
|
|
|
|
|
|
|
+ // Setup Filter button
|
|
|
|
|
+ filter_status_button = new QPushButton();
|
|
|
|
|
+ filter_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
|
|
|
|
|
+ filter_status_button->setFocusPolicy(Qt::NoFocus);
|
|
|
|
|
+ connect(filter_status_button, &QPushButton::clicked, [&] {
|
|
|
|
|
+ auto filter = Settings::values.scaling_filter.GetValue();
|
|
|
|
|
+ if (filter == Settings::ScalingFilter::LastFilter) {
|
|
|
|
|
+ filter = Settings::ScalingFilter::NearestNeighbor;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&
|
|
|
|
|
+ filter == Settings::ScalingFilter::Fsr) {
|
|
|
|
|
+ filter = Settings::ScalingFilter::NearestNeighbor;
|
|
|
|
|
+ }
|
|
|
|
|
+ Settings::values.scaling_filter.SetValue(filter);
|
|
|
|
|
+ filter_status_button->setChecked(true);
|
|
|
|
|
+ UpdateFilterText();
|
|
|
|
|
+ });
|
|
|
|
|
+ auto filter = Settings::values.scaling_filter.GetValue();
|
|
|
|
|
+ if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&
|
|
|
|
|
+ filter == Settings::ScalingFilter::Fsr) {
|
|
|
|
|
+ Settings::values.scaling_filter.SetValue(Settings::ScalingFilter::NearestNeighbor);
|
|
|
|
|
+ }
|
|
|
|
|
+ UpdateFilterText();
|
|
|
|
|
+ filter_status_button->setCheckable(true);
|
|
|
|
|
+ statusBar()->insertPermanentWidget(0, filter_status_button);
|
|
|
|
|
+
|
|
|
// Setup Dock button
|
|
// Setup Dock button
|
|
|
dock_status_button = new QPushButton();
|
|
dock_status_button = new QPushButton();
|
|
|
dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
|
|
dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
|
|
@@ -3033,11 +3061,39 @@ void GMainWindow::UpdateGPUAccuracyButton() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void GMainWindow::UpdateFilterText() {
|
|
|
|
|
+ const auto filter = Settings::values.scaling_filter.GetValue();
|
|
|
|
|
+ switch (filter) {
|
|
|
|
|
+ case Settings::ScalingFilter::NearestNeighbor:
|
|
|
|
|
+ filter_status_button->setText(tr("NEAREST"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ case Settings::ScalingFilter::Bilinear:
|
|
|
|
|
+ filter_status_button->setText(tr("BILINEAR"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ case Settings::ScalingFilter::Bicubic:
|
|
|
|
|
+ filter_status_button->setText(tr("BICUBIC"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ case Settings::ScalingFilter::Gaussian:
|
|
|
|
|
+ filter_status_button->setText(tr("GAUSSIAN"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ case Settings::ScalingFilter::ScaleForce:
|
|
|
|
|
+ filter_status_button->setText(tr("SCALEFORCE"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ case Settings::ScalingFilter::Fsr:
|
|
|
|
|
+ filter_status_button->setText(tr("AMD'S FIDELITYFX SR"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ filter_status_button->setText(tr("BILINEAR"));
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void GMainWindow::UpdateStatusButtons() {
|
|
void GMainWindow::UpdateStatusButtons() {
|
|
|
dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
|
|
dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
|
|
|
renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
|
|
renderer_status_button->setChecked(Settings::values.renderer_backend.GetValue() ==
|
|
|
Settings::RendererBackend::Vulkan);
|
|
Settings::RendererBackend::Vulkan);
|
|
|
UpdateGPUAccuracyButton();
|
|
UpdateGPUAccuracyButton();
|
|
|
|
|
+ UpdateFilterText();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void GMainWindow::UpdateUISettings() {
|
|
void GMainWindow::UpdateUISettings() {
|