summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Glöckner <cgloeckner@freenet.de>2016-03-29 10:43:00 +0200
committerAndré Nusser <andre.nusser@googlemail.com>2016-03-31 17:35:47 +0200
commit90cf32becc608fdd1a5e9bf815e040d7fb71b819 (patch)
tree4be9aab027935957466271f2ea760e9d8fb1b782
parentfa677c584b698d4d8aa8acc967f31960a01a9cf6 (diff)
refactored class ChannelMixer
-rw-r--r--src/channelmixer.cc95
-rw-r--r--src/channelmixer.h31
2 files changed, 65 insertions, 61 deletions
diff --git a/src/channelmixer.cc b/src/channelmixer.cc
index 76a25a6..510d9a8 100644
--- a/src/channelmixer.cc
+++ b/src/channelmixer.cc
@@ -26,40 +26,46 @@
*/
#include "channelmixer.h"
-ChannelMixer::ChannelMixer(Channels &c, Channel *defc, float defg)
- : channels(c)
+ChannelMixer::ChannelMixer(const Channels& c, const Channel* defc, float defg)
+ : mix{}
+ , defaultchannel{nullptr}
+ , defaultgain{1.f}
+ , channels(c)
{
- setDefaults(defc, defg);
+ setDefaults(defc, defg);
}
-void ChannelMixer::setDefaults(Channel *defc, float defg)
+void ChannelMixer::setDefaults(const Channel* defc, float defg)
{
- defaultchannel = defc;
- if(defc == NULL && channels.size() > 0) defaultchannel = &channels[0];
+ defaultchannel = defc;
+ if(defc == nullptr && channels.size() > 0)
+ {
+ defaultchannel = &channels[0];
+ }
- defaultgain = defg;
+ defaultgain = defg;
}
-MixerSettings &ChannelMixer::lookup(InstrumentChannel *c)
+MixerSettings& ChannelMixer::lookup(const InstrumentChannel& c)
{
- std::map<InstrumentChannel *, MixerSettings>::iterator mi = mix.find(c);
-
- if(mi == mix.end()) {
- MixerSettings m;
- m.gain = defaultgain;
- m.output = defaultchannel;
- mix[c] = m;
- return mix[c];
- }
-
- return mi->second;
+ auto mi = mix.find(&c);
+
+ if(mi == mix.end())
+ {
+ MixerSettings m;
+ m.gain = defaultgain;
+ m.output = defaultchannel;
+ mix[&c] = m;
+ return mix[&c];
+ }
+
+ return mi->second;
}
-
#ifdef TEST_CHANNELMIXER
-//deps: channel.cc
-//cflags:
-//libs:
+// deps: channel.cc
+// cflags:
+// libs:
#include "test.h"
TEST_BEGIN;
@@ -71,40 +77,39 @@ channels.push_back(ch1);
channels.push_back(ch2);
{
- ChannelMixer mixer(channels, NULL, 1.0);
+ ChannelMixer mixer(channels, nullptr, 1.0);
- InstrumentChannel ich;
- MixerSettings &m = mixer.lookup(&ich);
- TEST_EQUAL(m.output, &channels[0], "Default channel?");
- TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
+ InstrumentChannel ich;
+ MixerSettings& m = mixer.lookup(&ich);
+ TEST_EQUAL(m.output, &channels[0], "Default channel?");
+ TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
}
{
- ChannelMixer mixer(channels, &channels[1]);
+ ChannelMixer mixer(channels, &channels[1]);
- InstrumentChannel ich;
- MixerSettings &m = mixer.lookup(&ich);
- TEST_EQUAL(m.output, &channels[1], "Default channel?");
- TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
+ InstrumentChannel ich;
+ MixerSettings& m = mixer.lookup(&ich);
+ TEST_EQUAL(m.output, &channels[1], "Default channel?");
+ TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
}
{
- ChannelMixer mixer(channels, &channels[1]);
+ ChannelMixer mixer(channels, &channels[1]);
- InstrumentChannel ich;
- MixerSettings &m = mixer.lookup(&ich);
- TEST_EQUAL(m.output, &channels[1], "Default channel?");
- TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
+ InstrumentChannel ich;
+ MixerSettings& m = mixer.lookup(&ich);
+ TEST_EQUAL(m.output, &channels[1], "Default channel?");
+ TEST_EQUAL_FLOAT(m.gain, 1.0, "Default gain?");
- m.output = &channels[0];
- m.gain = 0.5;
+ m.output = &channels[0];
+ m.gain = 0.5;
- MixerSettings &m2 = mixer.lookup(&ich);
- TEST_EQUAL(m2.output, &channels[0], "Changed channel?");
- TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?");
+ MixerSettings& m2 = mixer.lookup(&ich);
+ TEST_EQUAL(m2.output, &channels[0], "Changed channel?");
+ TEST_EQUAL_FLOAT(m2.gain, 0.5, "Changed gain?");
}
-
TEST_END;
-#endif/*TEST_CHANNELMIXER*/
+#endif /*TEST_CHANNELMIXER*/
diff --git a/src/channelmixer.h b/src/channelmixer.h
index fadf181..ec495ac 100644
--- a/src/channelmixer.h
+++ b/src/channelmixer.h
@@ -24,35 +24,34 @@
* along with DrumGizmo; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#ifndef __DRUMGIZMO_CHANNELMIXER_H__
-#define __DRUMGIZMO_CHANNELMIXER_H__
+#pragma once
#include <map>
#include "channel.h"
-class MixerSettings {
+class MixerSettings
+{
public:
- float gain;
- Channel *output;
+ float gain;
+ const Channel* output;
};
-class ChannelMixer {
+class ChannelMixer
+{
public:
- ChannelMixer(Channels &channels,
- Channel *defaultchannel = NULL, float defaultgain = 1.0);
+ ChannelMixer(const Channels& channels,
+ const Channel* defaultchannel = nullptr, float defaultgain = 1.0);
- MixerSettings &lookup(InstrumentChannel *channel);
+ MixerSettings& lookup(const InstrumentChannel& channel);
- void setDefaults(Channel *defaultchannel, float defaultgain);
+ void setDefaults(const Channel* defaultchannel, float defaultgain);
private:
- std::map<InstrumentChannel *, MixerSettings> mix;
+ std::map<const InstrumentChannel*, MixerSettings> mix;
- Channel *defaultchannel;
- float defaultgain;
+ const Channel* defaultchannel;
+ float defaultgain;
- Channels &channels;
+ const Channels& channels;
};
-
-#endif/*__DRUMGIZMO_CHANNELMIXER_H__*/