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 #include "guilib/GUIControl.h" 12 #include "guilib/guiinfo/GUIInfoLabel.h" 13 14 #include <memory> 15 16 namespace KODI 17 { 18 namespace RETRO 19 { 20 class CGUIRenderSettings; 21 class CGUIRenderHandle; 22 class IGUIRenderSettings; 23 24 class CGUIGameControl : public CGUIControl 25 { 26 public: 27 CGUIGameControl(int parentID, int controlID, float posX, float posY, float width, float height); 28 CGUIGameControl(const CGUIGameControl& other); 29 ~CGUIGameControl() override; 30 31 // GUI functions 32 void SetVideoFilter(const KODI::GUILIB::GUIINFO::CGUIInfoLabel& videoFilter); 33 void SetStretchMode(const KODI::GUILIB::GUIINFO::CGUIInfoLabel& stretchMode); 34 void SetRotation(const KODI::GUILIB::GUIINFO::CGUIInfoLabel& rotation); 35 36 // Rendering functions HasVideoFilter()37 bool HasVideoFilter() const { return m_bHasVideoFilter; } HasStretchMode()38 bool HasStretchMode() const { return m_bHasStretchMode; } HasRotation()39 bool HasRotation() const { return m_bHasRotation; } 40 IGUIRenderSettings* GetRenderSettings() const; 41 42 // implementation of CGUIControl Clone()43 CGUIGameControl* Clone() const override { return new CGUIGameControl(*this); }; 44 void Process(unsigned int currentTime, CDirtyRegionList& dirtyregions) override; 45 void Render() override; 46 void RenderEx() override; 47 bool CanFocus() const override; 48 void SetPosition(float posX, float posY) override; 49 void SetWidth(float width) override; 50 void SetHeight(float height) override; 51 void UpdateInfo(const CGUIListItem* item = nullptr) override; 52 53 private: 54 void Reset(); 55 56 void RegisterControl(); 57 void UnregisterControl(); 58 59 // GUI properties 60 KODI::GUILIB::GUIINFO::CGUIInfoLabel m_videoFilterInfo; 61 KODI::GUILIB::GUIINFO::CGUIInfoLabel m_stretchModeInfo; 62 KODI::GUILIB::GUIINFO::CGUIInfoLabel m_rotationInfo; 63 64 // Rendering properties 65 bool m_bHasVideoFilter = false; 66 bool m_bHasStretchMode = false; 67 bool m_bHasRotation = false; 68 std::unique_ptr<CGUIRenderSettings> m_renderSettings; 69 std::shared_ptr<CGUIRenderHandle> m_renderHandle; 70 }; 71 72 } // namespace RETRO 73 } // namespace KODI 74