duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

postprocessingsettingswidget.h (2238B)


      1 // SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
      2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
      3 
      4 #pragma once
      5 
      6 #include "ui_postprocessingchainconfigwidget.h"
      7 
      8 #include "util/postprocessing.h"
      9 
     10 #include <QtWidgets/QTableWidget>
     11 #include <QtWidgets/QWidget>
     12 
     13 class SettingsWindow;
     14 class PostProcessingShaderConfigWidget;
     15 
     16 class PostProcessingSettingsWidget : public QTabWidget
     17 {
     18   Q_OBJECT
     19 
     20 public:
     21   PostProcessingSettingsWidget(SettingsWindow* dialog, QWidget* parent);
     22   ~PostProcessingSettingsWidget();
     23 };
     24 
     25 class PostProcessingChainConfigWidget : public QWidget
     26 {
     27   Q_OBJECT
     28 
     29   friend PostProcessingShaderConfigWidget;
     30 
     31 public:
     32   PostProcessingChainConfigWidget(SettingsWindow* dialog, QWidget* parent, const char* section);
     33   ~PostProcessingChainConfigWidget();
     34 
     35 private Q_SLOTS:
     36   void onAddButtonClicked();
     37   void onRemoveButtonClicked();
     38   void onClearButtonClicked();
     39   void onMoveUpButtonClicked();
     40   void onMoveDownButtonClicked();
     41   void onReloadButtonClicked();
     42   void onSelectedShaderChanged();
     43 
     44 private:
     45   SettingsInterface& getSettingsInterfaceToUpdate();
     46   void commitSettingsUpdate();
     47 
     48   void connectUi();
     49   void updateButtonsAndConfigPane(std::optional<u32> index);
     50   std::optional<u32> getSelectedIndex() const;
     51   void selectIndex(s32 index);
     52   void updateList(const SettingsInterface& si);
     53   void updateList();
     54 
     55   SettingsWindow* m_dialog;
     56 
     57   Ui::PostProcessingChainConfigWidget m_ui;
     58 
     59   const char* m_section;
     60 
     61   PostProcessingShaderConfigWidget* m_shader_config = nullptr;
     62 };
     63 
     64 class PostProcessingShaderConfigWidget : public QWidget
     65 {
     66   Q_OBJECT
     67 
     68 public:
     69   PostProcessingShaderConfigWidget(QWidget* parent, PostProcessingChainConfigWidget* widget, const char* section,
     70                                    u32 stage_index, std::vector<PostProcessing::ShaderOption> options);
     71   ~PostProcessingShaderConfigWidget();
     72 
     73 private Q_SLOTS:
     74   void onResetDefaultsClicked();
     75 
     76 protected:
     77   void createUi();
     78   void updateConfigForOption(const PostProcessing::ShaderOption& option);
     79 
     80   QGridLayout* m_layout;
     81 
     82   PostProcessingChainConfigWidget* m_widget;
     83   std::vector<QWidget*> m_widgets;
     84 
     85   const char* m_section;
     86   u32 m_stage_index;
     87   std::vector<PostProcessing::ShaderOption> m_options;
     88 };