Add TAL-Reverb-II plugin to test
[juce-lv2.git] / tal-reverb-2-juce / src / ImageSlider.h
blobe4b9d8f4e935b9d7690e76cea8febe7460365146
1 class ImageSlider : public Slider
3 public:
5 // Curently only supports vertical sliders
6 ImageSlider(Image image, const int length)
7 : Slider("Bitmap Slider"),
8 imageKnob(image)
10 this->length = length;
12 setTextBoxStyle(NoTextBox, 0, 0, 0);
13 setSliderStyle(LinearVertical);
15 frameHeight = imageKnob.getHeight();
16 frameWidth = imageKnob.getWidth();
18 setRange(0.0f, 1.0f, 0.001f);
20 customValueText = false;
21 valueTextHeight = 10;
23 this->setSliderSnapsToMousePosition(false);
26 void paint(Graphics& g)
28 double value = (getValue() - getMinimum()) / (getMaximum() - getMinimum());
29 g.drawImage(imageKnob, 0, (1.0f - value) * length, frameWidth, frameHeight,
30 0, 0, frameWidth, frameHeight);
32 g.setColour(Colour((const juce::uint8)10, (const juce::uint8)10, (const juce::uint8)10));
33 g.fillRoundedRectangle(8, length + frameHeight - 14, getWidth() - 16, valueTextHeight + 4, 6.0f);
35 g.setColour(Colour((const juce::uint8)200, (const juce::uint8)200, (const juce::uint8)200));
37 g.setFont(12.0f, Font::plain);
38 if (!customValueText)
40 valueText = juce::String(getValue(), 2); // << T("dB");
41 g.drawText(valueText, 0, length + frameHeight - 14 + 2, getWidth(), valueTextHeight, juce::Justification::centred, false);
43 else
45 g.drawText(valueText, 0, length + frameHeight - 14 + 2, getWidth(), valueTextHeight, juce::Justification::centred, false);
49 void setTextValue(juce::String valueText)
51 this->valueText = valueText;
52 customValueText = true;
55 private:
56 Image imageKnob;
57 int length;
58 int frameWidth, frameHeight;
60 juce::String valueText;
61 bool customValueText;
62 int valueTextHeight;