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

88 lines
2.7 KiB
C
Raw Normal View History

2017-01-23 10:15:08 +00:00
/*
==============================================================================
This file is part of Obxd synthesizer.
Copyright <EFBFBD> 2013-2014 Filatov Vadim
2017-01-23 10:15:08 +00:00
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"
2017-01-23 10:15:08 +00:00
class Knob : public Slider
{
public:
//Knob(Image image, const int numFrames, const bool stripIsHorizontal) : Slider("Knob")
//{
// setTextBoxStyle(NoTextBox, 0, 0, 0);
// setSliderStyle(RotaryVerticalDrag);
// setRange(0.0f, 1.0f, 0.001f);
//}
Knob (Image k, int fh) : Slider("Knob")
2017-01-23 10:15:08 +00:00
{
h2 = fh;
2017-01-23 10:15:08 +00:00
w2 = k.getWidth();
numFr = k.getHeight() / h2;
kni = k;
};
// Source: https://git.iem.at/audioplugins/IEMPluginSuite/-/blob/master/resources/customComponents/ReverseSlider.h
public:
class KnobAttachment : public juce::AudioProcessorValueTreeState::SliderAttachment
{
public:
KnobAttachment (juce::AudioProcessorValueTreeState& stateToControl,
const juce::String& parameterID,
Knob& sliderToControl) : AudioProcessorValueTreeState::SliderAttachment (stateToControl, parameterID, sliderToControl)
{
sliderToControl.setParameter (stateToControl.getParameter (parameterID));
}
KnobAttachment (juce::AudioProcessorValueTreeState& stateToControl,
const juce::String& parameterID,
Slider& sliderToControl) : AudioProcessorValueTreeState::SliderAttachment (stateToControl, parameterID, sliderToControl)
{
}
virtual ~KnobAttachment() = default;
};
void setParameter (const AudioProcessorParameter* p)
{
if (parameter == p)
return;
parameter = p;
updateText();
repaint();
}
void paint (Graphics& g) override
{
int ofs = (int) ((getValue() - getMinimum()) / (getMaximum() - getMinimum()) * (numFr - 1));
g.drawImage (kni, 0, 0, getWidth(), getHeight(), 0, h2 * ofs, w2, h2);
2017-01-23 10:15:08 +00:00
}
2017-01-23 10:15:08 +00:00
private:
Image kni;
int fh, numFr;
int w2, h2;
const AudioProcessorParameter* parameter {nullptr};
};