terion/Source/PluginEditor.h

47 lines
1.7 KiB
C++

#pragma once
#include <juce_audio_processors/juce_audio_processors.h>
#include "PluginProcessor.h"
#include "VectorScope.h"
#include "ArcKnob.h"
#include "Version.h"
class TerionProcessorEditor : public juce::AudioProcessorEditor
{
public:
explicit TerionProcessorEditor(TerionProcessor&);
~TerionProcessorEditor() override;
void paint(juce::Graphics&) override;
void resized() override;
private:
void scaleChanged();
TerionProcessor& processorRef;
VectorScope scope;
ArcKnob fadeKnob;
ArcKnob sensitivityKnob;
ArcKnob dotSizeKnob;
ArcKnob smoothingKnob;
juce::ToggleButton freezeButton;
juce::ToggleButton monoButton;
juce::ComboBox scaleBox;
juce::Label fadeLabel, sensitivityLabel, dotSizeLabel, smoothingLabel;
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> fadeAttachment;
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> sensitivityAttachment;
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> dotSizeAttachment;
std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment> smoothingAttachment;
std::unique_ptr<juce::AudioProcessorValueTreeState::ButtonAttachment> freezeAttachment;
std::unique_ptr<juce::AudioProcessorValueTreeState::ButtonAttachment> monoAttachment;
float currentScale = 1.0f;
static constexpr int kBaseWidth = 420;
static constexpr int kBaseHeight = 420;
static constexpr int kFooterHeight = 28;
static constexpr int kKnobSize = 54;
static constexpr int kKnobMargin = 6;
static constexpr float kMaxScale = 3.0f;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TerionProcessorEditor)
};