osci-render/Source/EffectPluginEditor.cpp

69 wiersze
2.5 KiB
C++
Czysty Zwykły widok Historia

2025-05-08 20:26:03 +00:00
#include "EffectPluginProcessor.h"
#include "EffectPluginEditor.h"
EffectPluginEditor::EffectPluginEditor(EffectAudioProcessor& p)
: AudioProcessorEditor(&p), audioProcessor(p)
{
#if JUCE_LINUX
// use OpenGL on Linux for much better performance. The default on Mac is CoreGraphics, and on Window is Direct2D which is much faster.
openGlContext.attachTo(*getTopLevelComponent());
#endif
setLookAndFeel(&lookAndFeel);
audioProcessor.visualiserParameters.ambientEffect->setValue(0);
audioProcessor.visualiserParameters.shutterSync->setBoolValue(true);
audioProcessor.visualiserParameters.upsamplingEnabled->setBoolValue(false);
2025-05-08 20:26:03 +00:00
addAndMakeVisible(visualiser);
addAndMakeVisible(titleVisualiser);
addAndMakeVisible(sliderVisualiser);
2025-05-08 20:26:03 +00:00
titleVisualiser.setCropRectangle(juce::Rectangle<float>(-0.1f, 0.35f, 1.2f, 0.3f));
// Configure the slider visualiser component
sliderVisualiser.onValueChange([this]() {
audioProcessor.bitCrush->parameters[0]->setUnnormalisedValueNotifyingHost(sliderVisualiser.getValue());
});
2025-05-08 20:26:03 +00:00
// Set the label for the slider
sliderVisualiser.setLabel("bit crush");
2025-05-08 20:26:03 +00:00
setSize(600, 200);
setResizable(false, false);
tooltipDropShadow.setOwner(&tooltipWindow.get());
tooltipWindow->setMillisecondsBeforeTipAppears(0);
audioProcessor.bitCrush->addListener(0, this);
}
EffectPluginEditor::~EffectPluginEditor() {
audioProcessor.bitCrush->removeListener(0, this);
setLookAndFeel(nullptr);
juce::Desktop::getInstance().setDefaultLookAndFeel(nullptr);
2025-05-08 20:26:03 +00:00
}
void EffectPluginEditor::resized() {
auto bounds = getLocalBounds();
visualiser.setBounds(bounds.removeFromLeft(bounds.getHeight()));
// Set bounds for titleVisualiser
auto titleBounds = bounds.removeFromTop(100);
titleVisualiser.setBounds(titleBounds);
// Set bounds for sliderVisualiser
sliderVisualiser.setBounds(bounds);
2025-05-08 20:26:03 +00:00
}
void EffectPluginEditor::parameterValueChanged(int parameterIndex, float newValue) {
if (parameterIndex == 0) {
juce::MessageManager::getInstance()->callAsync([this, newValue]() {
sliderVisualiser.setValue(newValue);
// Update visualizer directly as setValue doesn't always trigger onChange
sliderVisualiser.updateVisualiser();
});
}
2025-05-08 20:26:03 +00:00
}
void EffectPluginEditor::parameterGestureChanged(int parameterIndex, bool gestureIsStarting) {}