2017-01-23 10:15:08 +00:00
|
|
|
|
/*
|
|
|
|
|
==============================================================================
|
|
|
|
|
This file is part of Obxd synthesizer.
|
|
|
|
|
|
|
|
|
|
Copyright <EFBFBD> 2013-2014 Filatov Vadim
|
|
|
|
|
|
|
|
|
|
Contact author via email :
|
|
|
|
|
justdat_@_e1.ru
|
|
|
|
|
|
|
|
|
|
This file may be licensed under the terms of of the
|
|
|
|
|
GNU General Public License Version 2 (the ``GPL'').
|
|
|
|
|
|
|
|
|
|
Software distributed under the License is distributed
|
|
|
|
|
on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
|
|
|
|
|
express or implied. See the GPL for the specific language
|
|
|
|
|
governing rights and limitations.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GPL along with this
|
|
|
|
|
program. If not, go to http://www.gnu.org/licenses/gpl.html
|
|
|
|
|
or write to the Free Software Foundation, Inc.,
|
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
==============================================================================
|
|
|
|
|
*/
|
|
|
|
|
#pragma once
|
|
|
|
|
#include "../Source/Engine/SynthEngine.h"
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
|
|
|
|
class ButtonList : public ComboBox
|
|
|
|
|
{
|
2017-01-23 10:15:08 +00:00
|
|
|
|
public:
|
2020-04-19 13:43:40 +00:00
|
|
|
|
ButtonList (Image k, int fh) : ComboBox("cb")
|
2017-01-23 10:15:08 +00:00
|
|
|
|
{
|
|
|
|
|
kni = k;
|
|
|
|
|
count = 0;
|
2020-04-19 13:43:40 +00:00
|
|
|
|
h2 = fh;
|
2017-01-23 10:15:08 +00:00
|
|
|
|
w2 = k.getWidth();
|
|
|
|
|
}
|
|
|
|
|
//int addItem
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
|
|
|
|
// Source: https://git.iem.at/audioplugins/IEMPluginSuite/-/blob/master/resources/customComponents/ReverseSlider.h
|
|
|
|
|
public:
|
|
|
|
|
class ButtonListAttachment : public juce::AudioProcessorValueTreeState::ComboBoxAttachment
|
|
|
|
|
{
|
2020-04-23 17:10:28 +00:00
|
|
|
|
RangedAudioParameter* parameter = nullptr;
|
|
|
|
|
ButtonList* buttonListToControl = nullptr;
|
2020-04-19 13:43:40 +00:00
|
|
|
|
public:
|
|
|
|
|
ButtonListAttachment (juce::AudioProcessorValueTreeState& stateToControl,
|
|
|
|
|
const juce::String& parameterID,
|
2020-04-23 17:10:28 +00:00
|
|
|
|
ButtonList& buttonListToControl) : AudioProcessorValueTreeState::ComboBoxAttachment (stateToControl, parameterID, buttonListToControl), buttonListToControl(&buttonListToControl)
|
2020-04-19 13:43:40 +00:00
|
|
|
|
{
|
2020-04-23 17:10:28 +00:00
|
|
|
|
parameter = stateToControl.getParameter (parameterID);
|
|
|
|
|
buttonListToControl.setParameter (parameter);
|
2020-04-19 13:43:40 +00:00
|
|
|
|
}
|
2020-04-23 17:10:28 +00:00
|
|
|
|
/*
|
2020-04-19 13:43:40 +00:00
|
|
|
|
ButtonListAttachment (juce::AudioProcessorValueTreeState& stateToControl,
|
|
|
|
|
const juce::String& parameterID,
|
|
|
|
|
ComboBox& buttonListToControl) : AudioProcessorValueTreeState::ComboBoxAttachment (stateToControl, parameterID, buttonListToControl)
|
|
|
|
|
{
|
|
|
|
|
}
|
2020-04-23 17:10:28 +00:00
|
|
|
|
*/
|
|
|
|
|
void updateToSlider(){
|
|
|
|
|
float val = parameter->getValue();
|
2020-04-23 17:41:50 +00:00
|
|
|
|
//buttonListToControl->setValue(val, NotificationType::dontSendNotification);
|
2020-04-23 17:10:28 +00:00
|
|
|
|
//buttonListToControl->setValue(parameter->convertFrom0to1(val0to1), NotificationType::dontSendNotification);
|
|
|
|
|
buttonListToControl->setValue(val, NotificationType::dontSendNotification);
|
|
|
|
|
}
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
|
|
|
|
virtual ~ButtonListAttachment() = default;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void setParameter (const AudioProcessorParameter* p)
|
|
|
|
|
{
|
|
|
|
|
if (parameter == p)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
parameter = p;
|
|
|
|
|
repaint();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void addChoice (String name)
|
2017-01-23 10:15:08 +00:00
|
|
|
|
{
|
2020-04-19 13:43:40 +00:00
|
|
|
|
addItem (name, ++count);
|
2017-01-23 10:15:08 +00:00
|
|
|
|
}
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
2017-01-23 10:15:08 +00:00
|
|
|
|
float getValue()
|
|
|
|
|
{
|
2020-04-19 13:43:40 +00:00
|
|
|
|
return ((getSelectedId() - 1) / (float) (count - 1));
|
2017-01-23 10:15:08 +00:00
|
|
|
|
}
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
|
|
|
|
void setValue (float val, NotificationType notify)
|
2017-01-23 10:15:08 +00:00
|
|
|
|
{
|
2020-04-19 13:43:40 +00:00
|
|
|
|
setSelectedId ((int) (val * (count - 1) + 1), notify);
|
2017-01-23 10:15:08 +00:00
|
|
|
|
}
|
2020-04-19 13:43:40 +00:00
|
|
|
|
|
|
|
|
|
void paintOverChildren (Graphics& g) override
|
2017-01-23 10:15:08 +00:00
|
|
|
|
{
|
2020-04-19 13:43:40 +00:00
|
|
|
|
int ofs = getSelectedId() - 1;
|
2020-05-18 18:48:43 +00:00
|
|
|
|
g.setImageResamplingQuality(Graphics::ResamplingQuality::highResamplingQuality);
|
2020-04-19 13:43:40 +00:00
|
|
|
|
g.drawImage(kni, 0, 0, getWidth(), getHeight(), 0, h2 * ofs, w2, h2);
|
2017-01-23 10:15:08 +00:00
|
|
|
|
}
|
|
|
|
|
|
2020-04-19 13:43:40 +00:00
|
|
|
|
private:
|
|
|
|
|
int count;
|
|
|
|
|
Image kni;
|
|
|
|
|
int w2, h2;
|
|
|
|
|
const AudioProcessorParameter* parameter {nullptr};
|
2017-01-23 10:15:08 +00:00
|
|
|
|
};
|