1 /*
2  *  Copyright (C) 2017-2018 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 namespace KODI
12 {
13 namespace RETRO
14 {
15 class CGameWindowFullScreen;
16 class CGUIGameControl;
17 class CGUIGameRenderManager;
18 
19 enum class RENDER_HANDLE
20 {
21   CONTROL,
22   WINDOW,
23 };
24 
25 // --- CGUIRenderHandle ------------------------------------------------------
26 
27 class CGUIRenderHandle
28 {
29 public:
30   CGUIRenderHandle(CGUIGameRenderManager& renderManager, RENDER_HANDLE type);
31   virtual ~CGUIRenderHandle();
32 
Type()33   RENDER_HANDLE Type() const { return m_type; }
34 
35   void Render();
36   void RenderEx();
37   bool IsDirty();
38   void ClearBackground();
39 
40 private:
41   // Construction parameters
42   CGUIGameRenderManager& m_renderManager;
43   const RENDER_HANDLE m_type;
44 };
45 
46 // --- CGUIRenderControlHandle -----------------------------------------------
47 
48 class CGUIRenderControlHandle : public CGUIRenderHandle
49 {
50 public:
51   CGUIRenderControlHandle(CGUIGameRenderManager& renderManager, CGUIGameControl& control);
52   ~CGUIRenderControlHandle() override = default;
53 
GetControl()54   CGUIGameControl& GetControl() { return m_control; }
55 
56 private:
57   // Construction parameters
58   CGUIGameControl& m_control;
59 };
60 
61 // --- CGUIRenderFullScreenHandle --------------------------------------------
62 
63 class CGUIRenderFullScreenHandle : public CGUIRenderHandle
64 {
65 public:
66   CGUIRenderFullScreenHandle(CGUIGameRenderManager& renderManager, CGameWindowFullScreen& window);
67   ~CGUIRenderFullScreenHandle() override = default;
68 
GetWindow()69   CGameWindowFullScreen& GetWindow() { return m_window; }
70 
71 private:
72   // Construction parameters
73   CGameWindowFullScreen& m_window;
74 };
75 } // namespace RETRO
76 } // namespace KODI
77