From eb13803709ad90df75c38eea4ff1b6c55316ca9b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 11 Jun 2011 14:08:21 +0300 Subject: AUDIO: Add complementary functions for getting channel volume and balance --- audio/mixer.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'audio/mixer.cpp') diff --git a/audio/mixer.cpp b/audio/mixer.cpp index fb4fffb8d8..128224ae85 100644 --- a/audio/mixer.cpp +++ b/audio/mixer.cpp @@ -93,6 +93,13 @@ public: */ void setVolume(const byte volume); + /** + * Gets the channel's own volume. + * + * @return volume + */ + byte getVolume(); + /** * Sets the channel's balance setting. * @@ -100,6 +107,13 @@ public: */ void setBalance(const int8 balance); + /** + * Gets the channel's balance setting. + * + * @return balance + */ + int8 getBalance(); + /** * Notifies the channel that the global sound type * volume settings changed. @@ -342,6 +356,14 @@ void MixerImpl::setChannelVolume(SoundHandle handle, byte volume) { _channels[index]->setVolume(volume); } +byte MixerImpl::getChannelVolume(SoundHandle handle) { + const int index = handle._val % NUM_CHANNELS; + if (!_channels[index] || _channels[index]->getHandle()._val != handle._val) + return 0; + + return _channels[index]->getVolume(); +} + void MixerImpl::setChannelBalance(SoundHandle handle, int8 balance) { Common::StackLock lock(_mutex); @@ -352,6 +374,14 @@ void MixerImpl::setChannelBalance(SoundHandle handle, int8 balance) { _channels[index]->setBalance(balance); } +int8 MixerImpl::getChannelBalance(SoundHandle handle) { + const int index = handle._val % NUM_CHANNELS; + if (!_channels[index] || _channels[index]->getHandle()._val != handle._val) + return 0; + + return _channels[index]->getBalance(); +} + uint32 MixerImpl::getSoundElapsedTime(SoundHandle handle) { return getElapsedTime(handle).msecs(); } @@ -482,11 +512,19 @@ void Channel::setVolume(const byte volume) { updateChannelVolumes(); } +byte Channel::getVolume() { + return _volume; +} + void Channel::setBalance(const int8 balance) { _balance = balance; updateChannelVolumes(); } +int8 Channel::getBalance() { + return _balance; +} + void Channel::updateChannelVolumes() { // From the channel balance/volume and the global volume, we compute // the effective volume for the left and right channel. Note the -- cgit v1.2.3