2
0
Fork 0
OB-Xd/Source/Gui/ButtonList.h

119 lines
4.1 KiB
C
Raw Permalink Normal View History

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"
2021-09-01 08:38:39 +00:00
class ObxdAudioProcessor;
2021-09-01 08:38:39 +00:00
class ButtonList : public ComboBox, public ScalableComponent
{
2021-09-01 08:38:39 +00:00
juce::String img_name;
2017-01-23 10:15:08 +00:00
public:
2021-09-01 08:38:39 +00:00
ButtonList (juce::String nameImg, int fh, ObxdAudioProcessor *owner) : ComboBox("cb"), ScalableComponent(owner), img_name(nameImg)
2017-01-23 10:15:08 +00:00
{
2021-09-01 08:38:39 +00:00
scaleFactorChanged();
2017-01-23 10:15:08 +00:00
count = 0;
h2 = fh;
2021-09-01 08:38:39 +00:00
w2 = kni.getWidth();
2017-01-23 10:15:08 +00:00
}
//int addItem
2021-09-01 08:38:39 +00:00
void scaleFactorChanged() override
{
kni = getScaledImageFromCache(img_name, getScaleFactor(), getIsHighResolutionDisplay());
/*
backgroundImage =
allImage.getClippedImage(Rectangle<int>(0,
allImage.getHeight() / 2,
allImage.getWidth(),
allImage.getHeight() / 2));
*/
repaint();
}
// 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;
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-23 17:10:28 +00:00
parameter = stateToControl.getParameter (parameterID);
buttonListToControl.setParameter (parameter);
}
2020-04-23 17:10:28 +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();
//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);
}
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
{
addItem (name, ++count);
2017-01-23 10:15:08 +00:00
}
2017-01-23 10:15:08 +00:00
float getValue()
{
return ((getSelectedId() - 1) / (float) (count - 1));
2017-01-23 10:15:08 +00:00
}
void setValue (float val, NotificationType notify)
2017-01-23 10:15:08 +00:00
{
setSelectedId ((int) (val * (count - 1) + 1), notify);
2017-01-23 10:15:08 +00:00
}
void paintOverChildren (Graphics& g) override
2017-01-23 10:15:08 +00:00
{
int ofs = getSelectedId() - 1;
2021-09-01 08:38:39 +00:00
g.drawImage(kni, 0, 0, getWidth(), getHeight(), 0, h2 * ofs * getScaleInt(), w2 * getScaleInt() , h2* getScaleInt());
2017-01-23 10:15:08 +00:00
}
private:
int count;
Image kni;
int w2, h2;
const AudioProcessorParameter* parameter {nullptr};
2017-01-23 10:15:08 +00:00
};