11#include "../AddonBase.h"
12#include "../c-api/addon-instance/shaderpreset.h"
81 if (CPrivateBase::m_interface->globalSingleInstance !=
nullptr)
82 throw std::logic_error(
"kodi::addon::CInstanceShaderPreset: Creation of "
83 "more than one in single instance is not allowed!");
85 SetAddonStruct(CPrivateBase::m_interface->firstKodiInstance);
86 CPrivateBase::m_interface->globalSingleInstance =
this;
106 if (m_instanceData->props->user_path !=
nullptr)
107 return m_instanceData->props->user_path;
121 if (m_instanceData->props->addon_path !=
nullptr)
122 return m_instanceData->props->addon_path;
194 instance->hdl =
this;
196 instance->shaderpreset->toAddon->PresetFileNew = ADDON_preset_file_new;
197 instance->shaderpreset->toAddon->PresetFileFree = ADDON_preset_file_free;
199 instance->shaderpreset->toAddon->VideoShaderRead = ADDON_video_shader_read_file;
200 instance->shaderpreset->toAddon->VideoShaderWrite = ADDON_video_shader_write_file;
201 instance->shaderpreset->toAddon->VideoShaderResolveParameters =
202 ADDON_video_shader_resolve_parameters;
203 instance->shaderpreset->toAddon->VideoShaderFree = ADDON_video_shader_free;
205 m_instanceData = instance->shaderpreset;
206 m_instanceData->toAddon->addonInstance =
this;
214 return static_cast<CInstanceShaderPreset*
>(
215 static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance))
216 ->PresetFileNew(path);
222 return static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance)
223 ->PresetFileFree(file);
226 inline static bool ADDON_video_shader_read_file(
const AddonInstance_ShaderPreset* addonInstance,
228 video_shader* shader)
230 if (shader !=
nullptr)
231 return static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance)
232 ->ShaderPresetRead(file, *shader);
237 inline static bool ADDON_video_shader_write_file(
const AddonInstance_ShaderPreset* addonInstance,
239 const video_shader* shader)
241 if (shader !=
nullptr)
242 return static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance)
243 ->ShaderPresetWrite(file, *shader);
248 inline static bool ADDON_video_shader_resolve_parameters(
249 const AddonInstance_ShaderPreset* addonInstance, preset_file file, video_shader* shader)
251 if (shader !=
nullptr)
252 return static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance)
253 ->ShaderPresetResolveParameters(file, *shader);
258 inline static void ADDON_video_shader_free(
const AddonInstance_ShaderPreset* addonInstance,
259 video_shader* shader)
261 if (shader !=
nullptr)
262 static_cast<CInstanceShaderPreset*
>(addonInstance->toAddon->addonInstance)
263 ->ShaderPresetFree(*shader);
266 AddonInstance_ShaderPreset* m_instanceData;
Definition AddonBase.h:498
virtual bool ShaderPresetWrite(preset_file file, const video_shader &shader)
Save preset and all associated state (passes, textures, imports, etc) to disk.
Definition ShaderPreset.h:164
~CInstanceShaderPreset() override=default
Destructor.
virtual preset_file PresetFileNew(const char *path)
Loads a preset file
Definition ShaderPreset.h:134
std::string AddonPath() const
Used to get the full path where the add-on is installed.
Definition ShaderPreset.h:119
virtual void ShaderPresetFree(video_shader &shader)
Free all state related to shader preset.
Definition ShaderPreset.h:186
CInstanceShaderPreset()
Shader preset class constructor.
Definition ShaderPreset.h:78
std::string UserPath() const
Used to get the full path to the add-on's user profile.
Definition ShaderPreset.h:104
virtual bool ShaderPresetRead(preset_file file, video_shader &shader)
Loads preset file and all associated state (passes, textures, imports, etc)
Definition ShaderPreset.h:152
virtual bool ShaderPresetResolveParameters(preset_file file, video_shader &shader)
Resolve all shader parameters belonging to the shader preset.
Definition ShaderPreset.h:175
virtual void PresetFileFree(preset_file file)
Free a preset file
Definition ShaderPreset.h:140
ShaderPreset instance.
Definition shaderpreset.h:298
Definition addon_base.h:268
Internal used structure to have stored C API data above and available for everything below.
Definition AddonBase.h:73
Definition shaderpreset.h:219