summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-10-20 02:10:29 +0200
committerGitHub <noreply@github.com>2020-10-20 02:10:29 +0200
commitfc3b474cceb2a24df21640140be4beb95b9b9fd1 (patch)
tree84c89656ad79357c819b129a927db20cec1cdf9e /Source/Core/InputCommon/DynamicInputTextureConfiguration.h
parentb26c2e7adb80436f131f1a50e462ee7c25792c48 (diff)
parent4fff04db3ce16c72d8b3b95df2285a129605fde4 (diff)
Merge pull request #8318 from iwubcode/dynamic_input_textures
InputCommon: Dynamic Input Textures
Diffstat (limited to 'Source/Core/InputCommon/DynamicInputTextureConfiguration.h')
-rw-r--r--Source/Core/InputCommon/DynamicInputTextureConfiguration.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/DynamicInputTextureConfiguration.h b/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
new file mode 100644
index 0000000000..15e4d37129
--- /dev/null
+++ b/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
@@ -0,0 +1,46 @@
+// Copyright 2019 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#include "Common/CommonTypes.h"
+#include "Common/IniFile.h"
+#include "InputCommon/ImageOperations.h"
+
+namespace InputCommon
+{
+class DynamicInputTextureConfiguration
+{
+public:
+ explicit DynamicInputTextureConfiguration(const std::string& json_file);
+ ~DynamicInputTextureConfiguration();
+ void GenerateTextures(const IniFile::Section* sec, const std::string& controller_name) const;
+
+private:
+ struct DynamicInputTextureData
+ {
+ std::string m_image_name;
+ std::string m_hires_texture_name;
+ std::string m_generated_folder_name;
+
+ using EmulatedKeyToRegionsMap = std::unordered_map<std::string, std::vector<Rect>>;
+ std::unordered_map<std::string, EmulatedKeyToRegionsMap> m_emulated_controllers;
+
+ using HostKeyToImagePath = std::unordered_map<std::string, std::string>;
+ std::unordered_map<std::string, HostKeyToImagePath> m_host_devices;
+ bool m_preserve_aspect_ratio = true;
+ };
+
+ bool GenerateTexture(const IniFile::Section* sec, const std::string& controller_name,
+ const DynamicInputTextureData& texture_data) const;
+
+ std::vector<DynamicInputTextureData> m_dynamic_input_textures;
+ std::string m_base_path;
+ bool m_valid = true;
+};
+} // namespace InputCommon