diff options
Diffstat (limited to 'xineSettings.h')
-rw-r--r-- | xineSettings.h | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/xineSettings.h b/xineSettings.h new file mode 100644 index 0000000..4942fa0 --- /dev/null +++ b/xineSettings.h @@ -0,0 +1,294 @@ + +#ifndef __XINESETTINGS_H +#define __XINESETTINGS_H + + + +#include "xineCommon.h" + + + +namespace PluginXine +{ + + class cXineSetupPage; + + class cXineSettings + { + public: + enum eUsageMode + { + modeLiveTV + , modeReplay + }; + + enum eOsdMode + { + osdOverlay + , osdBlendClipped + , osdBlendScaledLQ + , osdBlendScaledHQ + , osdBlendScaledSHQ + , osdBlendScaledAuto + }; + + enum eAudioMode + { + audioDolbyOff + , audioDolbyOn + }; + + enum eVolumeMode + { + volumeIgnore + , volumeChangeHW + , volumeChangeSW + }; + + enum eMuteMode + { + muteIgnore + , muteExecute + , muteSimulate + }; + + enum eOsdExtentWidth + { + osdExtentWidthMin = 320 + , osdExtentWidthDefault = 720 + , osdExtentWidthMax = 1920 + }; + + enum eOsdExtentHeight + { + osdExtentHeightMin = 240 + , osdExtentHeightDefault = 576 + , osdExtentHeightMax = 1080 + }; + + enum eMonitorGamma + { + monitorGammaBase = 100 + , monitorGammaMin = 100 + , monitorGammaDefault = 123 + , monitorGammaMax = 250 + }; + + enum eImage + { + image4_3 = 0 + , image16_9 = 1 + }; + + enum eImageZoom + { + imageZoomBase = 100 + , imageZoomMin = 25 + , imageZoomDefault = 100 + , imageZoomMax = 400 + }; + + enum eAutoPrimaryDeviceMode + { + autoPrimaryDeviceOff + , autoPrimaryDeviceOn + }; + + enum eTransparencyMode + { + transparencyOff + , transparencyOn + }; + + enum eMonitoringMode + { + monitoringOnce + , monitoringContinuous + }; + + enum eInteractWithEitScannerMode + { + interactWithEitScannerOff + , interactWithEitScannerOn + }; + + private: + bool m_switchSkin; + bool m_beQuiet; + int m_defaultGrabSizeX; + int m_defaultGrabSizeY; + + eOsdMode m_osdMode; + eUsageMode m_usageMode /* , m_usageModeDefault */; + eAudioMode m_audioMode; + eVolumeMode m_volumeMode; + eMuteMode m_muteMode; + eMonitorGamma m_crtGamma; + eAutoPrimaryDeviceMode m_autoPrimaryDeviceMode; + eTransparencyMode m_transparencyMode; + eInteractWithEitScannerMode m_interactWithEitScannerMode; + + template <class T> + static T clip(T a, T x, T b) + { + if (x < a) + return a; + + if (x > b) + return b; + + return x; + } + + class cModeParams + { + bool SetupParse(const char *optionName, int &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eMonitoringMode &optionValue, const char *Name, const char *Value); + + public: + cModeParams(); + + int m_prebufferFramesVideoSD; + int m_prebufferFramesVideoHD; + int m_prebufferFramesAudio; + int m_prebufferHysteresis; + int m_monitoringDuration; + eMonitoringMode m_monitoringMode; + + bool SetupParse(const char *prefix, const char *Name, const char *Value); + bool MonitoringContinuous() const; + } + m_modeParams[ 2 ]; + + class cZoomParams + { + bool SetupParse(const char *optionName, eImageZoom &optionValue, const char *Name, const char *Value); + + public: + cZoomParams(); + + eImageZoom m_zoomX; + eImageZoom m_zoomY; + + eImageZoom GetZoomX() const + { + return clip(imageZoomMin, m_zoomX, imageZoomMax); + } + + eImageZoom GetZoomY() const + { + return clip(imageZoomMin, m_zoomY, imageZoomMax); + } + + bool SetupParse(const char *prefix, const char *Name, const char *Value); + + bool operator !=(const cZoomParams &rhs) const; + } + m_zoomParams[ 2 ]; + + class cOsdExtentParams + { + bool SetupParse(const char *optionName, eOsdExtentWidth &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eOsdExtentHeight &optionValue, const char *Name, const char *Value); + + public: + cOsdExtentParams(); + + eOsdExtentWidth m_osdExtentWidth; + eOsdExtentHeight m_osdExtentHeight; + + eOsdExtentWidth GetOsdExtentWidth() const + { + return clip(osdExtentWidthMin, m_osdExtentWidth, osdExtentWidthMax); + } + + eOsdExtentHeight GetOsdExtentHeight() const + { + return clip(osdExtentHeightMin, m_osdExtentHeight, osdExtentHeightMax); + } + + bool SetupParse(const char *prefix, const char *Name, const char *Value); + + bool operator !=(const cOsdExtentParams &rhs) const; + } + m_osdExtentParams; + + bool SetupParse(const char *optionName, eUsageMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eOsdMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eAudioMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eVolumeMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eMuteMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eMonitorGamma &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eAutoPrimaryDeviceMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eTransparencyMode &optionValue, const char *Name, const char *Value); + bool SetupParse(const char *optionName, eInteractWithEitScannerMode &optionValue, const char *Name, const char *Value); + + public: + cXineSettings(); + + bool SetupParse(const char *Name, const char *Value); + + const cModeParams *GetModeParams() const; + + eOsdMode OsdMode() const; + bool AudioDolbyOn() const; + eVolumeMode VolumeMode() const; + bool SupportTransparency() const; + eMuteMode MuteMode() const; + + void Create(cXineSetupPage *const setupPage); + void Store(cXineSetupPage *const setupPage); + + void SelectReplayPrebufferMode(const bool select = true); + + void TogglePrebufferMode(); + const char *GetMainMenuEntry(); + + bool LiveTV() const; + bool AutoPrimaryDevice() const; + bool InteractWithEitScanner() const; + + bool setupDiffers(const cXineSettings &rhs) const + { + return m_osdMode != rhs.m_osdMode + || m_transparencyMode != rhs.m_transparencyMode + || m_volumeMode != rhs.m_volumeMode + || m_muteMode != rhs.m_muteMode + || m_zoomParams[ image4_3 ] != rhs.m_zoomParams[ image4_3 ] + || m_zoomParams[ image16_9 ] != rhs.m_zoomParams[ image16_9 ] + || m_osdExtentParams != rhs.m_osdExtentParams; + } + + int GetCrtGamma() const + { + return clip(monitorGammaMin, m_crtGamma, monitorGammaMax); + } + + const cZoomParams &ZoomParams(eImage image) const + { + return m_zoomParams[ image ]; + } + + const cOsdExtentParams &OsdExtentParams() const + { + return m_osdExtentParams; + } + + void SetSwitchSkin(const bool switchSkin); + bool ShallSwitchSkin() const; + + void SetBeQuiet(const bool beQuiet); + bool ShallBeQuiet() const; + + void SetDefaultGrabSizeX(const int defaultGrabSizeX); + int DefaultGrabSizeX() const; + + void SetDefaultGrabSizeY(const int defaultGrabSizeY); + int DefaultGrabSizeY() const; + }; + +}; + + + +#endif //__XINESETTINGS_H |