2023-07-02 17:47:04 +00:00
|
|
|
#include "EffectComponent.h"
|
|
|
|
|
2023-07-16 19:54:41 +00:00
|
|
|
EffectComponent::EffectComponent(EffectDetails details) : details(details) {
|
2023-07-04 13:58:36 +00:00
|
|
|
componentSetup();
|
2023-07-16 19:54:41 +00:00
|
|
|
slider.setRange(details.min, details.max, details.step);
|
2023-07-11 17:48:45 +00:00
|
|
|
slider.setValue(details.value, juce::dontSendNotification);
|
2023-07-04 13:58:36 +00:00
|
|
|
}
|
|
|
|
|
2023-07-16 19:54:41 +00:00
|
|
|
EffectComponent::EffectComponent(EffectDetails details, bool checkboxVisible) : EffectComponent(details) {
|
2023-07-05 11:02:28 +00:00
|
|
|
setCheckboxVisible(checkboxVisible);
|
2023-07-04 19:47:54 +00:00
|
|
|
}
|
|
|
|
|
2023-07-16 19:54:41 +00:00
|
|
|
EffectComponent::EffectComponent(Effect& effect) : EffectComponent(effect.getDetails()[0]) {}
|
2023-07-11 17:48:45 +00:00
|
|
|
|
2023-07-16 19:54:41 +00:00
|
|
|
EffectComponent::EffectComponent(Effect& effect, bool checkboxVisible) : EffectComponent(effect) {
|
2023-07-11 17:48:45 +00:00
|
|
|
setCheckboxVisible(checkboxVisible);
|
|
|
|
}
|
|
|
|
|
2023-07-04 13:58:36 +00:00
|
|
|
void EffectComponent::componentSetup() {
|
2023-07-02 17:47:04 +00:00
|
|
|
addAndMakeVisible(slider);
|
|
|
|
addAndMakeVisible(selected);
|
|
|
|
|
|
|
|
slider.setSliderStyle(juce::Slider::LinearHorizontal);
|
|
|
|
slider.setTextBoxStyle(juce::Slider::TextBoxRight, false, 90, slider.getTextBoxHeight());
|
|
|
|
|
2023-07-04 13:58:36 +00:00
|
|
|
selected.setToggleState(false, juce::dontSendNotification);
|
2023-07-02 17:47:04 +00:00
|
|
|
}
|
|
|
|
|
2023-07-04 13:58:36 +00:00
|
|
|
|
2023-07-02 17:47:04 +00:00
|
|
|
EffectComponent::~EffectComponent() {}
|
|
|
|
|
|
|
|
void EffectComponent::resized() {
|
2023-07-06 16:57:10 +00:00
|
|
|
auto sliderRight = getWidth() - 160;
|
2023-07-02 17:47:04 +00:00
|
|
|
auto bounds = getLocalBounds();
|
2023-07-05 17:17:11 +00:00
|
|
|
auto componentBounds = bounds.removeFromRight(25);
|
|
|
|
if (component != nullptr) {
|
|
|
|
component->setBounds(componentBounds);
|
2023-07-05 16:57:41 +00:00
|
|
|
}
|
|
|
|
|
2023-07-02 17:47:04 +00:00
|
|
|
slider.setBounds(bounds.removeFromRight(sliderRight));
|
2023-07-05 11:02:28 +00:00
|
|
|
if (checkboxVisible) {
|
2023-07-02 17:47:04 +00:00
|
|
|
bounds.removeFromLeft(2);
|
|
|
|
selected.setBounds(bounds.removeFromLeft(25));
|
2023-07-05 11:02:28 +00:00
|
|
|
} else {
|
|
|
|
bounds.removeFromLeft(5);
|
2023-07-02 17:47:04 +00:00
|
|
|
}
|
|
|
|
textBounds = bounds;
|
|
|
|
}
|
|
|
|
|
|
|
|
void EffectComponent::paint(juce::Graphics& g) {
|
2023-07-11 21:28:54 +00:00
|
|
|
g.fillAll(juce::Colours::black);
|
|
|
|
g.setColour(juce::Colours::white);
|
2023-07-16 19:54:41 +00:00
|
|
|
g.drawText(details.name, textBounds, juce::Justification::left);
|
2023-07-02 17:47:04 +00:00
|
|
|
}
|
|
|
|
|
2023-07-05 17:17:11 +00:00
|
|
|
void EffectComponent::setComponent(std::shared_ptr<juce::Component> component) {
|
|
|
|
this->component = component;
|
2023-07-05 16:57:41 +00:00
|
|
|
addAndMakeVisible(component.get());
|
|
|
|
}
|
|
|
|
|
2023-07-05 11:02:28 +00:00
|
|
|
void EffectComponent::setCheckboxVisible(bool visible) {
|
|
|
|
checkboxVisible = visible;
|
2023-07-02 17:47:04 +00:00
|
|
|
}
|