From 9427e27e24a7135880ee2881c3c44988e174b41a Mon Sep 17 00:00:00 2001 From: Zephyron Date: Tue, 31 Dec 2024 16:19:25 +1000 Subject: chore: update project branding to citron --- src/citron/configuration/configure_graphics.h | 116 ++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/citron/configuration/configure_graphics.h (limited to 'src/citron/configuration/configure_graphics.h') diff --git a/src/citron/configuration/configure_graphics.h b/src/citron/configuration/configure_graphics.h new file mode 100644 index 000000000..b92b4496b --- /dev/null +++ b/src/citron/configuration/configure_graphics.h @@ -0,0 +1,116 @@ +// SPDX-FileCopyrightText: 2016 Citra Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common/common_types.h" +#include "common/settings_enums.h" +#include "configuration/shared_translation.h" +#include "vk_device_info.h" +#include "yuzu/configuration/configuration_shared.h" + +class QPushButton; +class QEvent; +class QObject; +class QComboBox; + +namespace Settings { +enum class NvdecEmulation : u32; +enum class RendererBackend : u32; +enum class ShaderBackend : u32; +} // namespace Settings + +namespace Core { +class System; +} + +namespace Ui { +class ConfigureGraphics; +} + +namespace ConfigurationShared { +class Builder; +} + +class ConfigureGraphics : public ConfigurationShared::Tab { + Q_OBJECT + +public: + explicit ConfigureGraphics( + const Core::System& system_, std::vector& records, + const std::function& expose_compute_option, + const std::function& + update_aspect_ratio, + std::shared_ptr> group, + const ConfigurationShared::Builder& builder, QWidget* parent = nullptr); + ~ConfigureGraphics() override; + + void ApplyConfiguration() override; + void SetConfiguration() override; + +private: + void changeEvent(QEvent* event) override; + void RetranslateUI(); + + void Setup(const ConfigurationShared::Builder& builder); + + void PopulateVSyncModeSelection(bool use_setting); + void UpdateVsyncSetting() const; + void UpdateBackgroundColorButton(QColor color); + void UpdateAPILayout(); + void UpdateDeviceSelection(int device); + void UpdateShaderBackendSelection(int backend); + + void RetrieveVulkanDevices(); + + /* Turns a Vulkan present mode into a textual string for a UI + * (and eventually for a human to read) */ + const QString TranslateVSyncMode(VkPresentModeKHR mode, + Settings::RendererBackend backend) const; + + Settings::RendererBackend GetCurrentGraphicsBackend() const; + + int FindIndex(u32 enumeration, int value) const; + + std::unique_ptr ui; + QColor bg_color; + + std::vector> apply_funcs{}; + + std::vector& records; + std::vector vulkan_devices; + std::vector> device_present_modes; + std::vector + vsync_mode_combobox_enum_map{}; //< Keeps track of which present mode corresponds to which + // selection in the combobox + u32 vulkan_device{}; + Settings::ShaderBackend shader_backend{}; + const std::function& expose_compute_option; + const std::function update_aspect_ratio; + + const Core::System& system; + const ConfigurationShared::ComboboxTranslationMap& combobox_translations; + const std::vector>& shader_mapping; + + QPushButton* api_restore_global_button; + QComboBox* vulkan_device_combobox; + QComboBox* api_combobox; + QComboBox* shader_backend_combobox; + QComboBox* vsync_mode_combobox; + QPushButton* vsync_restore_global_button; + QWidget* vulkan_device_widget; + QWidget* api_widget; + QWidget* shader_backend_widget; + QComboBox* aspect_ratio_combobox; + QComboBox* resolution_combobox; +}; -- cgit v1.2.3