summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/DynamicInputTextureConfiguration.h
diff options
context:
space:
mode:
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