xbmc
ShaderPresetFactory.h
1 /*
2  * Copyright (C) 2017-2020 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "IShaderPreset.h"
12 #include "addons/Addon.h"
13 
14 #include <map>
15 #include <string>
16 
17 namespace ADDON
18 {
19 struct AddonEvent;
20 class CAddonMgr;
21 class CBinaryAddonManager;
22 class CShaderPresetAddon;
23 } // namespace ADDON
24 
25 namespace KODI
26 {
27 namespace SHADER
28 {
29 class IShaderPresetLoader;
30 
32 {
33 public:
39 
46  void RegisterLoader(IShaderPresetLoader* loader, const std::string& extension);
47 
53  void UnregisterLoader(IShaderPresetLoader* loader);
54 
63  bool LoadPreset(const std::string& presetPath, IShaderPreset& shaderPreset);
64 
72  bool CanLoadPreset(const std::string& presetPath);
73 
74 private:
75  void OnEvent(const ADDON::AddonEvent& event);
76  void UpdateAddons();
77 
78  // Construction parameters
79  ADDON::CAddonMgr& m_addons;
80 
81  std::map<std::string, IShaderPresetLoader*> m_loaders;
82  std::map<std::string, std::unique_ptr<ADDON::CShaderPresetAddon>> m_shaderAddons;
83  std::map<std::string, std::unique_ptr<ADDON::CShaderPresetAddon>> m_failedAddons;
84 };
85 } // namespace SHADER
86 } // namespace KODI
Class - CAddonMgr Holds references to all addons, enabled or otherwise.
Definition: AddonManager.h:79
Definition: AudioDecoder.h:18
Definition: IShaderPreset.h:23
Definition: AddonEvents.h:18
Definition: ShaderPresetFactory.h:31
Definition: Addon.cpp:39
API for a class that can load shader presets.
Definition: IShaderPresetLoader.h:22
Definition: GUIWindowAddonBrowser.cpp:163