summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h')
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h
new file mode 100644
index 0000000..2e96d21
--- /dev/null
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/renderHelper.h
@@ -0,0 +1,78 @@
1/*
2 * Copyright (C) 2005-2019 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 "../AddonBase.h"
12
13namespace kodi
14{
15namespace gui
16{
17struct ATTRIBUTE_HIDDEN IRenderHelper
18{
19 virtual ~IRenderHelper() = default;
20 virtual bool Init() = 0;
21 virtual void Begin() = 0;
22 virtual void End() = 0;
23}; /* class IRenderHelper */
24} /* namespace gui */
25} /* namespace kodi */
26
27#if defined(WIN32) && defined(HAS_ANGLE)
28#include "gl/GLonDX.h"
29#else
30/*
31 * Default background GUI render helper class
32 */
33namespace kodi
34{
35namespace gui
36{
37struct ATTRIBUTE_HIDDEN CRenderHelperStub : public IRenderHelper
38{
39 bool Init() override { return true; }
40 void Begin() override { }
41 void End() override { }
42}; /* class CRenderHelperStub */
43
44using CRenderHelper = CRenderHelperStub;
45} /* namespace gui */
46} /* namespace kodi */
47#endif
48
49namespace kodi
50{
51namespace gui
52{
53
54/*
55 * Create render background handler, e.g. becomes on "Windows" Angle used
56 * to emulate GL.
57 *
58 * This only be used internal and not from addon's direct.
59 *
60 * Function defines here and not in CAddonBase because of a hen and egg problem.
61 */
62inline std::shared_ptr<IRenderHelper> ATTRIBUTE_HIDDEN GetRenderHelper()
63{
64 using namespace ::kodi::addon;
65 if (static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper)
66 return static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper;
67
68 const std::shared_ptr<kodi::gui::IRenderHelper> renderHelper(new CRenderHelper());
69 if (!renderHelper->Init())
70 return nullptr;
71
72 static_cast<CAddonBase*>(CAddonBase::m_interface->addonBase)->m_renderHelper =
73 renderHelper; // Hold on base for other types
74 return renderHelper;
75}
76
77} /* namespace gui */
78} /* namespace kodi */