2
0
Fork 0
OB-Xd/Source/Gui/ButtonList.h
2020-05-18 20:48:43 +02:00

106 lines
3.4 KiB
C++
Executable file
Raw Blame History

/*
==============================================================================
This file is part of Obxd synthesizer.
Copyright <20> 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"
class ButtonList : public ComboBox
{
public:
ButtonList (Image k, int fh) : ComboBox("cb")
{
kni = k;
count = 0;
h2 = fh;
w2 = k.getWidth();
}
//int addItem
// Source: https://git.iem.at/audioplugins/IEMPluginSuite/-/blob/master/resources/customComponents/ReverseSlider.h
public:
class ButtonListAttachment : public juce::AudioProcessorValueTreeState::ComboBoxAttachment
{
RangedAudioParameter* parameter = nullptr;
ButtonList* buttonListToControl = nullptr;
public:
ButtonListAttachment (juce::AudioProcessorValueTreeState& stateToControl,
const juce::String& parameterID,
ButtonList& buttonListToControl) : AudioProcessorValueTreeState::ComboBoxAttachment (stateToControl, parameterID, buttonListToControl), buttonListToControl(&buttonListToControl)
{
parameter = stateToControl.getParameter (parameterID);
buttonListToControl.setParameter (parameter);
}
/*
ButtonListAttachment (juce::AudioProcessorValueTreeState& stateToControl,
const juce::String& parameterID,
ComboBox& buttonListToControl) : AudioProcessorValueTreeState::ComboBoxAttachment (stateToControl, parameterID, buttonListToControl)
{
}
*/
void updateToSlider(){
float val = parameter->getValue();
//buttonListToControl->setValue(val, NotificationType::dontSendNotification);
//buttonListToControl->setValue(parameter->convertFrom0to1(val0to1), NotificationType::dontSendNotification);
buttonListToControl->setValue(val, NotificationType::dontSendNotification);
}
virtual ~ButtonListAttachment() = default;
};
void setParameter (const AudioProcessorParameter* p)
{
if (parameter == p)
return;
parameter = p;
repaint();
}
void addChoice (String name)
{
addItem (name, ++count);
}
float getValue()
{
return ((getSelectedId() - 1) / (float) (count - 1));
}
void setValue (float val, NotificationType notify)
{
setSelectedId ((int) (val * (count - 1) + 1), notify);
}
void paintOverChildren (Graphics& g) override
{
int ofs = getSelectedId() - 1;
g.setImageResamplingQuality(Graphics::ResamplingQuality::highResamplingQuality);
g.drawImage(kni, 0, 0, getWidth(), getHeight(), 0, h2 * ofs, w2, h2);
}
private:
int count;
Image kni;
int w2, h2;
const AudioProcessorParameter* parameter {nullptr};
};