Skip to content
Snippets Groups Projects
Commit 4fee6e65 authored by jsiegle's avatar jsiegle
Browse files

Added Parameter Slider

parent 9a36b1bc
No related branches found
No related tags found
No related merge requests found
......@@ -88,11 +88,22 @@ GenericEditor::GenericEditor (GenericProcessor* owner)//, FilterViewport* vp)
//grad.addColour(0.5, Colours::lightgrey);
//grad.addColour(1.0f, Colours::grey);
int maxX = 20;
int maxY = 30;
for (int i = 0; i < owner->getNumParameters(); i++)
{
ParameterEditor* p = new ParameterEditor(owner->getParameterReference(i), titleFont);
p->setBounds(20, 40, 120, 30);
int dWidth = p->desiredWidth;
int dHeight = p->desiredHeight;
p->setBounds(maxX, maxY, dWidth, dHeight);
addAndMakeVisible(p);
maxY += dHeight;
maxY += 10;
}
backgroundColor = Colour(10,10,10);
......
......@@ -29,6 +29,7 @@ ParameterEditor::ParameterEditor(Parameter& p, Font labelFont)
if (p.isBoolean())
{
std::cout << "Boolean parameter. Creating checkbox." << std::endl;
// create checkbox
ParameterCheckbox* pc = new ParameterCheckbox((bool) p.getDefaultValue());
addAndMakeVisible(pc);
......@@ -41,11 +42,32 @@ ParameterEditor::ParameterEditor(Parameter& p, Font labelFont)
label->setBounds(10, 1, 100, 10);
addAndMakeVisible(label);
desiredWidth = 120;
desiredHeight = 25;
} else if (p.isContinuous())
{
std::cout << "Continuous parameter. Creating slider." << std::endl;
// create slider
//ParameterSlider* ps = new ParameterSlider(p.getName(), p.getPossibleValues());
Array<var> possibleValues = p.getPossibleValues();
ParameterSlider* ps = new ParameterSlider((float) possibleValues[0],
(float) possibleValues[1],
(float) p.getDefaultValue(),
labelFont);
ps->setBounds(0,0, 40, 40);
addAndMakeVisible(ps);
Label* label = new Label(p.getName(), p.getName());
labelFont.setHeight(10);
int width = labelFont.getStringWidth(p.getName());
label->setColour(Label::textColourId, Colours::darkgrey);
label->setFont(labelFont);
label->setBounds((40-width)/2-5, 40, 100, 10);
addAndMakeVisible(label);
desiredWidth = 50;
desiredHeight = 50;
} else if (p.isDiscrete())
{
......@@ -85,6 +107,9 @@ ParameterEditor::ParameterEditor(Parameter& p, Font labelFont)
addAndMakeVisible(pb);
}
desiredWidth = 120;
desiredHeight = 30;
}
}
......@@ -243,4 +268,72 @@ void ParameterCheckbox::paintButton(Graphics& g, bool isMouseOver, bool isButton
g.fillRoundedRectangle(1, 1, getWidth()-2, getHeight()-2, 2.0f);
}
// ========== PARAMETER SLIDER ====================
ParameterSlider::ParameterSlider(float min, float max,
float def, Font labelFont) : Slider("name"), font(labelFont)
{
setSliderStyle(Slider::Rotary);
setRange(min,max,1.0f);
setValue(def);
setTextBoxStyle(Slider::NoTextBox, false, 40, 20);
}
void ParameterSlider::paint(Graphics& g)
{
ColourGradient grad = ColourGradient(Colour(40, 40, 40), 0.0f, 0.0f,
Colour(80, 80, 80), 0.0, 40.0f, false);
Path p;
p.addPieSegment(3, 3, getWidth()-6, getHeight()-6, 5*double_Pi/4-0.2, 5*double_Pi/4+3*double_Pi/2+0.2, 0.5);
g.setGradientFill(grad);
g.fillPath(p);
//g.fillEllipse(3, 3, getWidth()-6, getHeight()-6);
//g.setColour(Colours::lightgrey);
//g.fillEllipse(12, 12, getWidth()-24, getHeight()-24);
p = makeRotaryPath(getMinimum(), getMaximum(), getValue());
g.setColour(Colour(240,179,12));
g.fillPath(p);
//g.setColour(Colours::darkgrey);
font.setHeight(9.0);
g.setFont(font);
String valueString = String( (int) getValue());
int stringWidth = font.getStringWidth(valueString);
g.setFont(font);
g.setColour(Colours::darkgrey);
g.drawSingleLineText(valueString, getWidth()/2 - stringWidth/2, getHeight()/2+3);
}
Path ParameterSlider::makeRotaryPath(double min, double max, double val)
{
Path p;
double start = 5*double_Pi/4;
double range = (val-min)/(max - min)*1.5*double_Pi + start;
p.addPieSegment(6,6, getWidth()-12, getHeight()-12, start, range, 0.8);
// p.startNewSubPath(5, getHeight()-5);
// p.addArc(5, 5, getWidth()-10, getWidth()-10, 5/4*double_Pi, range);
// //p.addArc(getWidth()-5, getHeight()-5, getWidth()-16, getWidth()-16, 5/4*double_Pi, range);
// p.closeSubPath();
return p;
}
\ No newline at end of file
......@@ -45,6 +45,9 @@ public:
ParameterEditor(Parameter& p, Font labelFont);
~ParameterEditor();
int desiredWidth;
int desiredHeight;
private:
......@@ -65,6 +68,7 @@ public:
ParameterButton(var value, int buttonType, Font labelFont);
~ParameterButton() {}
private:
void paintButton(Graphics& g, bool isMouseOver, bool isButtonDown);
......@@ -83,6 +87,8 @@ private:
ColourGradient neutralGrad;
ColourGradient neutralOverGrad;
enum {
LEFT,
MIDDLE,
......@@ -107,4 +113,24 @@ private:
ColourGradient neutralOverGrad;
};
class ParameterSlider : public Slider
{
public:
ParameterSlider(float min, float max, float defaultValue, Font f);
~ParameterSlider() {}
private:
void paint(Graphics& g);//Button(Graphics& g, bool isMouseOver, bool isButtonDown);
Path makeRotaryPath(double, double, double);
Font font;
// ColourGradient selectedGrad;
// ColourGradient selectedOverGrad;
// ColourGradient neutralGrad;
// ColourGradient neutralOverGrad;
};
#endif // __PARAMETEREDITOR_H_44537DA9__
......@@ -37,16 +37,18 @@ SignalGenerator::SignalGenerator()
// create parameters, to be passed to the GenericEditor
//String paramName = String("Bill");
Array<var> a;
a.add(1);
a.add(2);
a.add(3);
Parameter p = Parameter("Parameter name",true);//a,0);
//parameters.add(Parameter("SVN",0.0f, 100.0f, 50.0f));
parameters.add(p);
parameters.add(Parameter("Param 1",a, 0));//true);//a,0);
parameters.add(Parameter("Param 1",a, 0));//true);//a,0);
parameters.add(Parameter("Param 2",true));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment