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 "cores/GameSettings.h" 12 #include "cores/RetroPlayer/guibridge/IGUIRenderSettings.h" 13 #include "cores/RetroPlayer/rendering/RenderSettings.h" 14 #include "threads/CriticalSection.h" 15 #include "utils/Geometry.h" 16 17 namespace KODI 18 { 19 namespace RETRO 20 { 21 class CGUIGameControl; 22 23 class CGUIRenderSettings : public IGUIRenderSettings 24 { 25 public: 26 CGUIRenderSettings(CGUIGameControl& guiControl); 27 ~CGUIRenderSettings() override = default; 28 29 // implementation of IGUIRenderSettings 30 bool HasVideoFilter() const override; 31 bool HasStretchMode() const override; 32 bool HasRotation() const override; 33 CRenderSettings GetSettings() const override; 34 CRect GetDimensions() const override; 35 36 // Render functions 37 void Reset(); 38 void SetSettings(CRenderSettings settings); 39 void SetDimensions(const CRect& dimensions); 40 void SetVideoFilter(const std::string& videoFilter); 41 void SetStretchMode(STRETCHMODE stretchMode); 42 void SetRotationDegCCW(unsigned int rotationDegCCW); 43 44 private: 45 // Construction parameters 46 CGUIGameControl& m_guiControl; 47 48 // Render parameters 49 CRenderSettings m_renderSettings; 50 CRect m_renderDimensions; 51 52 // Synchronization parameters 53 mutable CCriticalSection m_mutex; 54 }; 55 } // namespace RETRO 56 } // namespace KODI 57