kodi
StereoscopicsManager.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: LGPL-2.1-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
17 #include "rendering/RenderSystemTypes.h"
18 #include "settings/lib/ISettingCallback.h"
19 
20 #include <stdlib.h>
21 
22 class CAction;
23 class CDataCacheCore;
24 class CGUIWindowManager;
25 class CSettings;
26 
27 enum STEREOSCOPIC_PLAYBACK_MODE
28 {
29  STEREOSCOPIC_PLAYBACK_MODE_ASK,
30  STEREOSCOPIC_PLAYBACK_MODE_PREFERRED,
31  STEREOSCOPIC_PLAYBACK_MODE_MONO,
32 
33  STEREOSCOPIC_PLAYBACK_MODE_IGNORE = 100,
34 };
35 
37  public IMsgTargetCallback
38 {
39 public:
41 
42  ~CStereoscopicsManager(void) override;
43 
44  void Initialize();
45 
46  RENDER_STEREO_MODE GetStereoMode(void) const;
47  std::string DetectStereoModeByString(const std::string &needle) const;
48  std::string GetLabelForStereoMode(const RENDER_STEREO_MODE &mode) const;
49 
50  void SetStereoMode(const RENDER_STEREO_MODE &mode);
51 
52  static const char* ConvertGuiStereoModeToString(const RENDER_STEREO_MODE &mode);
59  static CAction ConvertActionCommandToAction(const std::string &command, const std::string &parameter);
60  static std::string NormalizeStereoMode(const std::string &mode);
61 
62  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
63  void OnStreamChange();
64  bool OnMessage(CGUIMessage &message) override;
70  bool OnAction(const CAction &action);
71 
72 private:
73  RENDER_STEREO_MODE GetNextSupportedStereoMode(const RENDER_STEREO_MODE &currentMode, int step = 1) const;
74  RENDER_STEREO_MODE GetStereoModeByUserChoice() const;
75  RENDER_STEREO_MODE GetStereoModeOfPlayingVideo(void) const;
76  RENDER_STEREO_MODE GetPreferredPlaybackMode(void) const;
77  std::string GetVideoStereoMode() const;
78  bool IsVideoStereoscopic() const;
79 
80  void SetStereoModeByUser(const RENDER_STEREO_MODE &mode);
81 
82  void ApplyStereoMode(const RENDER_STEREO_MODE &mode, bool notify = true);
83  void OnPlaybackStopped(void);
84 
90  static int ConvertStringToGuiStereoMode(const std::string &mode);
91  static int ConvertVideoToGuiStereoMode(const std::string &mode);
92 
93  // Construction parameters
94  std::shared_ptr<CSettings> m_settings;
95 
96  // Stereoscopic parameters
97  RENDER_STEREO_MODE m_stereoModeSetByUser;
98  RENDER_STEREO_MODE m_lastStereoModeSetByUser;
99 };
Wrapper around CSettingsManager responsible for properly setting up the settings manager and register...
Definition: Settings.h:27
void OnSettingChanged(const std::shared_ptr< const CSetting > &setting) override
The value of the given setting has changed.
Definition: StereoscopicsManager.cpp:384
Definition: ISettingCallback.h:16
Definition: StereoscopicsManager.h:36
Definition: DataCacheCore.h:19
Definition: IMsgTargetCallback.h:22
bool OnAction(const CAction &action)
Handle 3D specific cActions.
Definition: StereoscopicsManager.cpp:413
Definition: GUIWindowManager.h:48
Class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:21
Definition: GUIMessage.h:365
static CAction ConvertActionCommandToAction(const std::string &command, const std::string &parameter)
Converts a stereoscopics related action/command from Builtins and JsonRPC into the according cAction ...
Definition: StereoscopicsManager.cpp:353
CStereoscopicsManager()
Definition: StereoscopicsManager.cpp:89