xbmc
ShaderPreset.h
1 /*
2  * Copyright (C) 2017 Team Kodi
3  * http://kodi.tv
4  *
5  * This Program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2, or (at your option)
8  * any later version.
9  *
10  * This Program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this Program; see the file COPYING. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  */
20 #pragma once
21 
22 #include "addons/binary-addons/AddonInstanceHandler.h"
23 #include "addons/kodi-dev-kit/include/kodi/addon-instance/ShaderPreset.h"
24 #include "cores/RetroPlayer/shaders/IShaderPresetLoader.h"
25 #include "cores/RetroPlayer/shaders/ShaderTypes.h"
26 #include "threads/SharedSection.h"
27 
28 #include <string>
29 #include <vector>
30 
31 namespace ADDON
32 {
33 class CAddonInfo;
34 typedef std::shared_ptr<CAddonInfo> AddonInfoPtr;
35 
37 {
38 public:
39  CShaderPreset(preset_file file, AddonInstance_ShaderPreset& instanceStruct);
40  ~CShaderPreset();
41 
45  bool ReadShaderPreset(video_shader& shader);
46 
50  void WriteShaderPreset(const video_shader& shader);
51 
52  /*
53  void ResolveRelative(video_shader &shader, const std::string &ref_path);
54  bool ResolveCurrentParameters(video_shader &shader);
55  */
56 
60  bool ResolveParameters(video_shader& shader);
61 
62  void FreeShaderPreset(video_shader& shader);
63 
64 private:
65  preset_file m_file;
67 };
68 
73 {
74 public:
75  CShaderPresetAddon(const AddonInfoPtr& addonInfo);
76  ~CShaderPresetAddon() override;
77 
81  bool CreateAddon();
82 
86  void DestroyAddon();
87 
91  const std::vector<std::string>& GetExtensions() const { return m_extensions; }
92 
93  // implementation of IShaderPresetLoader
94  bool LoadPreset(const std::string& presetPath,
95  KODI::SHADER::IShaderPreset& shaderPreset) override;
96 
97 private:
101  void ResetProperties(void);
102 
103  static void TranslateShaderPreset(const video_shader& shader,
104  KODI::SHADER::IShaderPreset& shaderPreset);
105  static void TranslateShaderPass(const video_shader_pass& pass,
106  KODI::SHADER::ShaderPass& shaderPass);
107  static void TranslateShaderLut(const video_shader_lut& lut, KODI::SHADER::ShaderLut& shaderLut);
108  static void TranslateShaderParameter(const video_shader_parameter& param,
109  KODI::SHADER::ShaderParameter& shaderParam);
110  static KODI::SHADER::FILTER_TYPE TranslateFilterType(SHADER_FILTER_TYPE type);
111  static KODI::SHADER::WRAP_TYPE TranslateWrapType(SHADER_WRAP_TYPE type);
112  static KODI::SHADER::SCALE_TYPE TranslateScaleType(SHADER_SCALE_TYPE type);
113 
114  // Cache for const char* members in AddonProps_ShaderPreset
115  std::string m_strUserPath;
116  std::string m_strClientPath;
118  std::vector<std::string> m_extensions;
119 
120  // TODO: Convert to CSingleSection?
121  CSharedSection m_dllSection;
122 };
123 } // namespace ADDON
Definition: ShaderTypes.h:93
void WriteShaderPreset(const video_shader &shader)
Definition: ShaderPreset.cpp:52
Definition: shaderpreset.h:144
Definition: ShaderTypes.h:73
ShaderPreset instance.
Definition: shaderpreset.h:303
Definition: shaderpreset.h:190
Definition: AddonInstanceHandler.h:33
bool ReadShaderPreset(video_shader &shader)
Definition: ShaderPreset.cpp:47
Wrapper class that wraps the shader presets add-on.
Definition: ShaderPreset.h:72
Definition: IShaderPreset.h:23
Definition: shaderpreset.h:218
bool ResolveParameters(video_shader &shader)
Definition: ShaderPreset.cpp:69
Definition: ShaderTypes.h:82
A CSharedSection is a mutex that satisfies the Shared Lockable concept (see Lockables.h).
Definition: SharedSection.h:19
Definition: Addon.cpp:39
API for a class that can load shader presets.
Definition: IShaderPresetLoader.h:22
const std::vector< std::string > & GetExtensions() const
Get the shader preset extensions supported by this add-on.
Definition: ShaderPreset.h:91
Definition: shaderpreset.h:133
Definition: ShaderPreset.h:36