summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar lat9nq2023-06-06 01:31:43 -0400
committerGravatar lat9nq2023-07-21 10:56:07 -0400
commit88d3de4e85751b32faa577345a828994575d2eb1 (patch)
tree32d45e65eb47dbf4e280e1d3f5ad5956b412b262 /src
parentshared_widget: Use a better icon (diff)
downloadyuzu-88d3de4e85751b32faa577345a828994575d2eb1.tar.gz
yuzu-88d3de4e85751b32faa577345a828994575d2eb1.tar.xz
yuzu-88d3de4e85751b32faa577345a828994575d2eb1.zip
settings: Split enums to new file
Diffstat (limited to 'src')
-rw-r--r--src/common/CMakeLists.txt1
-rw-r--r--src/common/settings.h189
-rw-r--r--src/common/settings_enums.h237
3 files changed, 241 insertions, 186 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 3adf13a3f..5902dd617 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -110,6 +110,7 @@ add_library(common STATIC
110 scratch_buffer.h 110 scratch_buffer.h
111 settings.cpp 111 settings.cpp
112 settings.h 112 settings.h
113 settings_enums.h
113 settings_input.cpp 114 settings_input.cpp
114 settings_input.h 115 settings_input.h
115 socket_types.h 116 socket_types.h
diff --git a/src/common/settings.h b/src/common/settings.h
index 51708706b..0ac5078c6 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -16,194 +16,11 @@
16#include <vector> 16#include <vector>
17 17
18#include "common/common_types.h" 18#include "common/common_types.h"
19#include "common/settings_enums.h"
19#include "common/settings_input.h" 20#include "common/settings_input.h"
20 21
21namespace Settings { 22namespace Settings {
22 23
23enum class Language : u32 {
24 Japanese,
25 EnglishAmerican,
26 French,
27 German,
28 Italian,
29 Spanish,
30 Chinese,
31 Korean,
32 Dutch,
33 Portuguese,
34 Russian,
35 Taiwanese,
36 EnglishBritish,
37 FrenchCanadian,
38 SpanishLatin,
39 ChineseSimplified,
40 ChineseTraditional,
41 PortugueseBrazilian,
42};
43
44enum class Region : u32 {
45 Japan,
46 USA,
47 Europe,
48 Australia,
49 China,
50 Korea,
51 Taiwan,
52};
53
54enum class TimeZone : u32 {
55 Auto,
56 Default,
57 CET,
58 CST6CDT,
59 Cuba,
60 EET,
61 Egypt,
62 Eire,
63 EST,
64 EST5EDT,
65 GB,
66 GBEire,
67 GMT,
68 GMTPlusZero,
69 GMTMinusZero,
70 GMTZero,
71 Greenwich,
72 Hongkong,
73 HST,
74 Iceland,
75 Iran,
76 Israel,
77 Jamaica,
78 Japan,
79 Kwajalein,
80 Libya,
81 MET,
82 MST,
83 MST7MDT,
84 Navajo,
85 NZ,
86 NZCHAT,
87 Poland,
88 Portugal,
89 PRC,
90 PST8PDT,
91 ROC,
92 ROK,
93 Singapore,
94 Turkey,
95 UCT,
96 Universal,
97 UTC,
98 W_SU,
99 WET,
100 Zulu,
101};
102
103enum class AnisotropyMode : u32 {
104 Automatic = 0,
105 Default = 1,
106 X2 = 2,
107 X4 = 3,
108 X8 = 4,
109 X16 = 5,
110};
111
112enum class AstcDecodeMode : u32 {
113 CPU = 0,
114 GPU = 1,
115 CPUAsynchronous = 2,
116};
117
118enum class VSyncMode : u32 {
119 Immediate = 0,
120 Mailbox = 1,
121 FIFO = 2,
122 FIFORelaxed = 3,
123};
124
125enum class RendererBackend : u32 {
126 OpenGL = 0,
127 Vulkan = 1,
128 Null = 2,
129};
130
131enum class ShaderBackend : u32 {
132 GLSL = 0,
133 GLASM = 1,
134 SPIRV = 2,
135};
136
137enum class GPUAccuracy : u32 {
138 Normal = 0,
139 High = 1,
140 Extreme = 2,
141 MaxEnum = 3,
142};
143
144enum class CPUAccuracy : u32 {
145 Auto = 0,
146 Accurate = 1,
147 Unsafe = 2,
148 Paranoid = 3,
149};
150
151enum class FullscreenMode : u32 {
152 Borderless = 0,
153 Exclusive = 1,
154};
155
156enum class NvdecEmulation : u32 {
157 Off = 0,
158 CPU = 1,
159 GPU = 2,
160};
161
162enum class ResolutionSetup : u32 {
163 Res1_2X = 0,
164 Res3_4X = 1,
165 Res1X = 2,
166 Res3_2X = 3,
167 Res2X = 4,
168 Res3X = 5,
169 Res4X = 6,
170 Res5X = 7,
171 Res6X = 8,
172 Res7X = 9,
173 Res8X = 10,
174};
175
176enum class ScalingFilter : u32 {
177 NearestNeighbor = 0,
178 Bilinear = 1,
179 Bicubic = 2,
180 Gaussian = 3,
181 ScaleForce = 4,
182 Fsr = 5,
183 LastFilter = Fsr,
184};
185
186enum class AntiAliasing : u32 {
187 None = 0,
188 Fxaa = 1,
189 Smaa = 2,
190 LastAA = Smaa,
191};
192
193enum class AstcRecompression : u32 {
194 Uncompressed = 0,
195 Bc1 = 1,
196 Bc3 = 2,
197};
198
199enum class AspectRatio : u32 {
200 R16_9,
201 R4_3,
202 R21_9,
203 R16_10,
204 Stretch,
205};
206
207enum class Category : u32 { 24enum class Category : u32 {
208 Audio, 25 Audio,
209 Core, 26 Core,
@@ -278,7 +95,7 @@ public:
278 virtual std::string DefaultToString() const = 0; 95 virtual std::string DefaultToString() const = 0;
279 virtual bool Save() const = 0; 96 virtual bool Save() const = 0;
280 virtual std::type_index TypeId() const = 0; 97 virtual std::type_index TypeId() const = 0;
281 virtual bool IsEnum() const = 0; 98 virtual constexpr bool IsEnum() const = 0;
282 virtual bool RuntimeModfiable() const = 0; 99 virtual bool RuntimeModfiable() const = 0;
283 virtual void SetGlobal(bool global) {} 100 virtual void SetGlobal(bool global) {}
284 virtual constexpr u32 Id() const = 0; 101 virtual constexpr u32 Id() const = 0;
@@ -406,7 +223,7 @@ public:
406 return runtime_modifiable; 223 return runtime_modifiable;
407 } 224 }
408 225
409 [[nodiscard]] bool IsEnum() const override { 226 [[nodiscard]] constexpr bool IsEnum() const override {
410 return std::is_enum<Type>::value; 227 return std::is_enum<Type>::value;
411 } 228 }
412 229
diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h
new file mode 100644
index 000000000..f48fb7bd4
--- /dev/null
+++ b/src/common/settings_enums.h
@@ -0,0 +1,237 @@
1// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include <map>
7#include <string>
8#include <type_traits>
9#include <typeindex>
10#include "common/common_types.h"
11
12namespace Settings {
13
14enum class AudioEngine : u32 {
15 Auto,
16 Cubeb,
17 Sdl2,
18 Null,
19};
20
21enum class AudioMode : u32 {
22 Mono,
23 Stereo,
24 Surround,
25};
26
27enum class Language : u32 {
28 Japanese,
29 EnglishAmerican,
30 French,
31 German,
32 Italian,
33 Spanish,
34 Chinese,
35 Korean,
36 Dutch,
37 Portuguese,
38 Russian,
39 Taiwanese,
40 EnglishBritish,
41 FrenchCanadian,
42 SpanishLatin,
43 ChineseSimplified,
44 ChineseTraditional,
45 PortugueseBrazilian,
46};
47
48enum class Region : u32 {
49 Japan,
50 USA,
51 Europe,
52 Australia,
53 China,
54 Korea,
55 Taiwan,
56};
57
58enum class TimeZone : u32 {
59 Auto,
60 Default,
61 CET,
62 CST6CDT,
63 Cuba,
64 EET,
65 Egypt,
66 Eire,
67 EST,
68 EST5EDT,
69 GB,
70 GBEire,
71 GMT,
72 GMTPlusZero,
73 GMTMinusZero,
74 GMTZero,
75 Greenwich,
76 Hongkong,
77 HST,
78 Iceland,
79 Iran,
80 Israel,
81 Jamaica,
82 Japan,
83 Kwajalein,
84 Libya,
85 MET,
86 MST,
87 MST7MDT,
88 Navajo,
89 NZ,
90 NZCHAT,
91 Poland,
92 Portugal,
93 PRC,
94 PST8PDT,
95 ROC,
96 ROK,
97 Singapore,
98 Turkey,
99 UCT,
100 Universal,
101 UTC,
102 W_SU,
103 WET,
104 Zulu,
105};
106
107enum class AnisotropyMode : u32 {
108 Automatic = 0,
109 Default = 1,
110 X2 = 2,
111 X4 = 3,
112 X8 = 4,
113 X16 = 5,
114};
115
116enum class AstcDecodeMode : u32 {
117 CPU = 0,
118 GPU = 1,
119 CPUAsynchronous = 2,
120};
121
122enum class AstcRecompression : u32 {
123 Uncompressed = 0,
124 Bc1 = 1,
125 Bc3 = 2,
126};
127
128enum class VSyncMode : u32 {
129 Immediate = 0,
130 Mailbox = 1,
131 FIFO = 2,
132 FIFORelaxed = 3,
133};
134
135enum class RendererBackend : u32 {
136 OpenGL = 0,
137 Vulkan = 1,
138 Null = 2,
139};
140
141enum class ShaderBackend : u32 {
142 GLSL = 0,
143 GLASM = 1,
144 SPIRV = 2,
145};
146
147enum class GPUAccuracy : u32 {
148 Normal = 0,
149 High = 1,
150 Extreme = 2,
151 MaxEnum = 3,
152};
153
154enum class CPUAccuracy : u32 {
155 Auto = 0,
156 Accurate = 1,
157 Unsafe = 2,
158 Paranoid = 3,
159};
160
161enum class FullscreenMode : u32 {
162 Borderless = 0,
163 Exclusive = 1,
164};
165
166enum class NvdecEmulation : u32 {
167 Off = 0,
168 CPU = 1,
169 GPU = 2,
170};
171
172enum class ResolutionSetup : u32 {
173 Res1_2X = 0,
174 Res3_4X = 1,
175 Res1X = 2,
176 Res3_2X = 3,
177 Res2X = 4,
178 Res3X = 5,
179 Res4X = 6,
180 Res5X = 7,
181 Res6X = 8,
182 Res7X = 9,
183 Res8X = 10,
184};
185
186enum class ScalingFilter : u32 {
187 NearestNeighbor = 0,
188 Bilinear = 1,
189 Bicubic = 2,
190 Gaussian = 3,
191 ScaleForce = 4,
192 Fsr = 5,
193 LastFilter = Fsr,
194};
195
196enum class AntiAliasing : u32 {
197 None = 0,
198 Fxaa = 1,
199 Smaa = 2,
200 LastAA = Smaa,
201};
202
203enum class AspectRatio : u32 {
204 R16_9,
205 R4_3,
206 R21_9,
207 R16_10,
208 Stretch,
209};
210
211static std::map<std::type_index, std::map<std::string, u32>> translations = {
212 {typeid(AudioEngine),
213 {
214 {"auto", static_cast<u32>(AudioEngine::Auto)},
215 {"cubeb", static_cast<u32>(AudioEngine::Cubeb)},
216 {"sdl2", static_cast<u32>(AudioEngine::Sdl2)},
217 {"null", static_cast<u32>(AudioEngine::Null)},
218 }}};
219
220static std::string empty_string{};
221
222template <typename Type>
223const std::string& TranslateEnum(Type id) {
224 auto& group = translations.at(typeid(Type));
225 for (auto& [name, value] : group) {
226 if (static_cast<Type>(value) == id) {
227 return name;
228 }
229 }
230 return empty_string;
231}
232
233template <typename Type>
234static Type ToEnum(const std::string& text) {
235 return static_cast<Type>(translations.at(typeid(Type)).at(text));
236}
237} // namespace Settings