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