summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h')
-rw-r--r--Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
new file mode 100644
index 0000000000..f4f6859cb3
--- /dev/null
+++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsMod.h
@@ -0,0 +1,45 @@
+// Copyright 2022 Dolphin Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <optional>
+#include <string>
+#include <vector>
+
+#include <picojson.h>
+
+#include "VideoCommon/GraphicsModSystem/Config/GraphicsModFeature.h"
+#include "VideoCommon/GraphicsModSystem/Config/GraphicsTargetGroup.h"
+
+struct GraphicsModConfig
+{
+ std::string m_title;
+ std::string m_author;
+ std::string m_description;
+ bool m_enabled = false;
+ u16 m_weight = 0;
+ std::string m_relative_path;
+
+ enum class Source
+ {
+ User,
+ System
+ };
+ Source m_source = Source::User;
+
+ std::vector<GraphicsTargetGroupConfig> m_groups;
+ std::vector<GraphicsModFeatureConfig> m_features;
+
+ static std::optional<GraphicsModConfig> Create(const std::string& file, Source source);
+ static std::optional<GraphicsModConfig> Create(const picojson::object* obj);
+
+ std::string GetAbsolutePath() const;
+
+ bool DeserializeFromConfig(const picojson::value& value);
+
+ void SerializeToProfile(picojson::object* value) const;
+ void DeserializeFromProfile(const picojson::object& value);
+
+ bool operator<(const GraphicsModConfig& other) const;
+};