diff options
| author | Mai <mai.iam2048@gmail.com> | 2024-01-13 14:15:14 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-13 14:15:14 -0500 |
| commit | c76dee7807c331582cfb36376329e760eab3f704 (patch) | |
| tree | d23651bae65a55a62db9e9a8b9ce69b0d4324c1c /Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp | |
| parent | 1cca3b24c67d1cc58d6551ffc87bd54c64a27e97 (diff) | |
| parent | 3658d3bffed6bdf4d31a2b2264bd3944101318c8 (diff) | |
Merge pull request #12285 from iwubcode/serialize_graphics_mods
VideoCommon: add ability to serialize graphics mod to json object
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp index 374b138571..575a318484 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsTarget.cpp @@ -5,6 +5,7 @@ #include "Common/Logging/Log.h" #include "Common/StringUtil.h" +#include "Common/VariantUtil.h" #include "VideoCommon/TextureCacheBase.h" namespace @@ -152,6 +153,53 @@ std::optional<std::string> ExtractTextureFilenameForConfig(const picojson::objec } } // namespace +void SerializeTargetToConfig(picojson::object& json_obj, const GraphicsTargetConfig& target) +{ + std::visit( + overloaded{ + [&](const DrawStartedTextureTarget& the_target) { + json_obj["type"] = picojson::value{"draw_started"}; + json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string}; + }, + [&](const LoadTextureTarget& the_target) { + json_obj["type"] = picojson::value{"load_texture"}; + json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string}; + }, + [&](const CreateTextureTarget& the_target) { + json_obj["type"] = picojson::value{"create_texture"}; + json_obj["texture_filename"] = picojson::value{the_target.m_texture_info_string}; + }, + [&](const EFBTarget& the_target) { + json_obj["type"] = picojson::value{"efb"}; + json_obj["texture_filename"] = picojson::value{ + fmt::format("{}_{}x{}_{}", EFB_DUMP_PREFIX, the_target.m_width, the_target.m_height, + static_cast<int>(the_target.m_texture_format))}; + }, + [&](const XFBTarget& the_target) { + json_obj["type"] = picojson::value{"xfb"}; + json_obj["texture_filename"] = picojson::value{ + fmt::format("{}_{}x{}_{}", XFB_DUMP_PREFIX, the_target.m_width, the_target.m_height, + static_cast<int>(the_target.m_texture_format))}; + }, + [&](const ProjectionTarget& the_target) { + json_obj["type"] = picojson::value{"projection"}; + if (the_target.m_projection_type == ProjectionType::Orthographic) + { + json_obj["type"] = picojson::value{"2d"}; + } + else + { + json_obj["type"] = picojson::value{"3d"}; + } + if (the_target.m_texture_info_string) + { + json_obj["texture_filename"] = picojson::value{*the_target.m_texture_info_string}; + } + }, + }, + target); +} + std::optional<GraphicsTargetConfig> DeserializeTargetFromConfig(const picojson::object& obj) { const auto type_iter = obj.find("type"); |
