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