From 21071382c7d93219f0b271a3e30fdd5ecb8f5291 Mon Sep 17 00:00:00 2001 From: Oleg Samarin Date: Thu, 25 Jan 2024 21:59:28 +0300 Subject: [PATCH] Beautified code of GOOrganConfig --- .../model/pipe-config/GOPipeConfig.cpp | 113 ++---------------- .../model/pipe-config/GOPipeConfig.h | 105 +++++++++++----- 2 files changed, 85 insertions(+), 133 deletions(-) diff --git a/src/grandorgue/model/pipe-config/GOPipeConfig.cpp b/src/grandorgue/model/pipe-config/GOPipeConfig.cpp index ae2823298..79d98257c 100644 --- a/src/grandorgue/model/pipe-config/GOPipeConfig.cpp +++ b/src/grandorgue/model/pipe-config/GOPipeConfig.cpp @@ -10,9 +10,6 @@ #include "config/GOConfigReader.h" #include "config/GOConfigWriter.h" -#include "GOPipeConfigListener.h" -#include "GOPipeUpdateCallback.h" - GOPipeConfig::GOPipeConfig( GOPipeConfigListener &listener, GOPipeUpdateCallback *callback) : r_listener(listener), @@ -20,24 +17,24 @@ GOPipeConfig::GOPipeConfig( m_Group(), m_NamePrefix(), m_AudioGroup(), - m_Amplitude(0), m_DefaultAmplitude(0), + m_Amplitude(0), m_DefaultGain(0), + m_Gain(0), m_PitchTuning(0), m_PitchCorrection(0), - m_Gain(0), m_ManualTuning(0), m_AutoTuningCorrection(0), - m_Delay(0), m_DefaultDelay(0), + m_Delay(0), + m_ReleaseTail(0), m_BitsPerSample(-1), - m_Compress(-1), m_Channels(-1), m_LoopLoad(-1), + m_Compress(-1), m_AttackLoad(-1), m_ReleaseLoad(-1), - m_IgnorePitch(-1), - m_ReleaseTail(0) {} + m_IgnorePitch(-1) {} static const wxString WX_TUNING = wxT("Tuning"); static const wxString WX_MANUAL_TUNING = wxT("ManualTuning"); @@ -214,96 +211,10 @@ void GOPipeConfig::Save(GOConfigWriter &cfg) { m_Group, m_NamePrefix + wxT("ReleaseTail"), (int)m_ReleaseTail); } -GOPipeUpdateCallback *GOPipeConfig::GetCallback() { return m_Callback; } - -void GOPipeConfig::SetAudioGroup(const wxString &str) { - m_AudioGroup = str; - m_Callback->UpdateAudioGroup(); - r_listener.NotifyPipeConfigModified(); -} - -float GOPipeConfig::GetAmplitude() { return m_Amplitude; } - -float GOPipeConfig::GetDefaultAmplitude() { return m_DefaultAmplitude; } - -void GOPipeConfig::SetAmplitude(float amp) { - m_Amplitude = amp; - m_Callback->UpdateAmplitude(); - r_listener.NotifyPipeConfigModified(); -} - -float GOPipeConfig::GetGain() { return m_Gain; } - -float GOPipeConfig::GetDefaultGain() { return m_DefaultGain; } - -void GOPipeConfig::SetGain(float gain) { - m_Gain = gain; - m_Callback->UpdateAmplitude(); - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetManualTuning(float cent) { - if (cent < -1800) - cent = -1800; - if (cent > 1800) - cent = 1800; - m_ManualTuning = cent; - m_Callback->UpdateTuning(); - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetAutoTuningCorrection(float cent) { - if (cent < -1800) - cent = -1800; - if (cent > 1800) - cent = 1800; - m_AutoTuningCorrection = cent; - m_Callback->UpdateTuning(); - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetDelay(unsigned delay) { - m_Delay = delay; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetBitsPerSample(int value) { - m_BitsPerSample = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetCompress(int value) { - m_Compress = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetChannels(int value) { - m_Channels = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetLoopLoad(int value) { - m_LoopLoad = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetAttackLoad(int value) { - m_AttackLoad = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetReleaseLoad(int value) { - m_ReleaseLoad = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetIgnorePitch(int value) { - m_IgnorePitch = value; - r_listener.NotifyPipeConfigModified(); -} - -void GOPipeConfig::SetReleaseTail(unsigned releaseTail) { - m_ReleaseTail = releaseTail; - m_Callback->UpdateReleaseTail(); - r_listener.NotifyPipeConfigModified(); +void GOPipeConfig::SetPitchMember(float cents, float &member) { + if (cents < -1800) + cents = -1800; + if (cents > 1800) + cents = 1800; + SetSmallMember(cents, member, &GOPipeUpdateCallback::UpdateTuning); } diff --git a/src/grandorgue/model/pipe-config/GOPipeConfig.h b/src/grandorgue/model/pipe-config/GOPipeConfig.h index 8f374d9c4..701defbd6 100644 --- a/src/grandorgue/model/pipe-config/GOPipeConfig.h +++ b/src/grandorgue/model/pipe-config/GOPipeConfig.h @@ -10,10 +10,12 @@ #include +#include "GOPipeConfigListener.h" +#include "GOPipeUpdateCallback.h" + class GOConfigReader; class GOConfigWriter; class GOPipeConfigListener; -class GOPipeUpdateCallback; class GOPipeConfig { private: @@ -22,30 +24,57 @@ class GOPipeConfig { wxString m_Group; wxString m_NamePrefix; wxString m_AudioGroup; - float m_Amplitude; float m_DefaultAmplitude; + float m_Amplitude; float m_DefaultGain; + float m_Gain; // ODF pitch tuning offset for using withot auto-tuning float m_PitchTuning; // ODF pitch tuning offset for using with auto-tuning float m_PitchCorrection; - float m_Gain; float m_ManualTuning; float m_AutoTuningCorrection; - unsigned m_Delay; unsigned m_DefaultDelay; + unsigned m_Delay; + unsigned m_ReleaseTail; // the max release length in ms int m_BitsPerSample; - int m_Compress; int m_Channels; int m_LoopLoad; + int m_Compress; int m_AttackLoad; int m_ReleaseLoad; int m_IgnorePitch; - unsigned m_ReleaseTail; // the max release length in ms void ReadTuning( GOConfigReader &cfg, const wxString &group, const wxString &prefix); + /* two generic setters SetSmallMember and SetLargeMember differ only in + * passing values */ + +#define SET_MEMBER_BODY(value, member, callbackFun) \ + member = value; \ + if (callbackFun) \ + (m_Callback->*callbackFun)(); \ + r_listener.NotifyPipeConfigModified(); + + template + void SetSmallMember( + const T value, + T &member, + void (GOPipeUpdateCallback::*callbackFun)() = nullptr) { + SET_MEMBER_BODY(value, member, callbackFun) + } + + template + void SetLargeMember( + const T &value, + T &member, + void (GOPipeUpdateCallback::*callbackFun)() = nullptr) { + SET_MEMBER_BODY(value, member, callbackFun) + } + + void SetPitchMember(float cents, float &member); + public: GOPipeConfig(GOPipeConfigListener &listener, GOPipeUpdateCallback *callback); @@ -53,54 +82,66 @@ class GOPipeConfig { void Load(GOConfigReader &cfg, const wxString &group, const wxString &prefix); void Save(GOConfigWriter &cfg); - GOPipeUpdateCallback *GetCallback(); - - float GetAmplitude(); - float GetDefaultAmplitude(); - void SetAmplitude(float amp); + GOPipeUpdateCallback *GetCallback() const { return m_Callback; } - float GetGain(); - float GetDefaultGain(); - void SetGain(float gain); + const wxString &GetAudioGroup() const { return m_AudioGroup; } + void SetAudioGroup(const wxString &str) { + SetLargeMember(str, m_AudioGroup, &GOPipeUpdateCallback::UpdateAudioGroup); + } + + float GetDefaultAmplitude() const { return m_DefaultAmplitude; } + float GetAmplitude() const { return m_Amplitude; } + void SetAmplitude(float amp) { + SetSmallMember(amp, m_Amplitude, &GOPipeUpdateCallback::UpdateAmplitude); + } + + float GetDefaultGain() const { return m_DefaultGain; } + float GetGain() const { return m_Gain; } + void SetGain(float gain) { + SetSmallMember(gain, m_Gain, &GOPipeUpdateCallback::UpdateAmplitude); + } float GetPitchTuning() const { return m_PitchTuning; } float GetPitchCorrection() const { return m_PitchCorrection; } + float GetManualTuning() const { return m_ManualTuning; } - void SetManualTuning(float cent); + void SetManualTuning(float cents) { SetPitchMember(cents, m_ManualTuning); } + float GetAutoTuningCorrection() const { return m_AutoTuningCorrection; } - void SetAutoTuningCorrection(float cent); + void SetAutoTuningCorrection(float cents) { + SetPitchMember(cents, m_AutoTuningCorrection); + } unsigned GetDefaultDelay() const { return m_DefaultDelay; } - unsigned GetDelay() const { return m_Delay; } - void SetDelay(unsigned delay); + void SetDelay(unsigned delay) { SetSmallMember(delay, m_Delay); } - const wxString &GetAudioGroup() const { return m_AudioGroup; } - void SetAudioGroup(const wxString &str); + unsigned GetReleaseTail() const { return m_ReleaseTail; } + void SetReleaseTail(unsigned releaseTail) { + SetSmallMember( + releaseTail, m_ReleaseTail, &GOPipeUpdateCallback::UpdateReleaseTail); + } int GetBitsPerSample() const { return m_BitsPerSample; } - void SetBitsPerSample(int value); - - int GetCompress() const { return m_Compress; } - void SetCompress(int value); + void SetBitsPerSample(int value) { SetSmallMember(value, m_BitsPerSample); } int GetChannels() const { return m_Channels; } - void SetChannels(int value); + void SetChannels(int value) { SetSmallMember(value, m_Channels); } int GetLoopLoad() const { return m_LoopLoad; } - void SetLoopLoad(int value); + void SetLoopLoad(int value) { SetSmallMember(value, m_LoopLoad); } + + int GetCompress() const { return m_Compress; } + void SetCompress(int value) { SetSmallMember(value, m_Compress); } int GetAttackLoad() const { return m_AttackLoad; } - void SetAttackLoad(int value); + void SetAttackLoad(int value) { SetSmallMember(value, m_AttackLoad); } int GetReleaseLoad() const { return m_ReleaseLoad; } - void SetReleaseLoad(int value); + void SetReleaseLoad(int value) { SetSmallMember(value, m_ReleaseLoad); } int IsIgnorePitch() const { return m_IgnorePitch; } - void SetIgnorePitch(int value); - - unsigned GetReleaseTail() const { return m_ReleaseTail; } - void SetReleaseTail(unsigned releaseTail); + void SetIgnorePitch(int value) { SetSmallMember(value, m_IgnorePitch); } }; #endif