// -*-C++-*- #ifndef VOLUME_H #define VOLUME_H #include #include class Volume { public: enum ChannelMask { MNONE = 0, MLEFT = 1, MRIGHT = 2, MCENTER = 4, MMAIN = 3, MFRONT = 7, MREARLEFT = 8, MREARRIGHT = 16, MWOOFER = 32, MREAR = 56, MLEFTREC = 64, MRIGHTREC = 128, MREC =192, MCUSTOM1 =256, MCUSTOM2 = 512, MALL=65535 }; enum ChannelID { CHIDMIN = 0, LEFT = 0, RIGHT = 1, CENTER = 2, REARLEFT = 3, REARRIGHT = 4, WOOFER = 5, LEFTREC = 6, RIGHTREC = 7, CUSTOM1 = 8, CUSTOM2 = 9, CHIDMAX = 9 }; Volume( ChannelMask chmask = MALL, long maxVolume = 100, long minVolume=0, bool isCapture=false ); Volume( const Volume &v ); Volume( int channels, long maxVolume ); // Set all volumes as given by vol void setAllVolumes(long vol); // Set all volumes to the ones given in vol void setVolume(const Volume &vol ); // Set volumes as specified by the channel mask void setVolume( const Volume &vol, ChannelMask chmask); void setVolume( ChannelID chid, long volume); long getVolume(ChannelID chid); long getAvgVolume(ChannelMask chmask); long getTopStereoVolume(ChannelMask chmask); long operator[](int); long maxVolume(); long minVolume(); int count(); void setMuted( bool val ) { _muted = val; }; bool isMuted() { return _muted; }; bool isCapture() { return _isCapture; }; friend std::ostream& operator<<(std::ostream& os, const Volume& vol); friend kdbgstream& operator<<(kdbgstream& os, const Volume& vol); // _channelMaskEnum[] and the following elements moved to public seection. operator<<() could not // access it, when private. Strange, as operator<<() is declared friend. static int _channelMaskEnum[10]; bool _muted; bool _isCapture; // true, when the Volume represents capture/record levels long _chmask; long _volumes[CHIDMAX+1]; long _maxVolume; long _minVolume; private: void init( ChannelMask chmask, long, long, bool ); long volrange( int vol ); long volrangeRec( int vol ); }; std::ostream& operator<<(std::ostream& os, const Volume& vol); kdbgstream& operator<<(kdbgstream &os, const Volume& vol); #endif // VOLUME