-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPluginEditor.cpp
More file actions
91 lines (74 loc) · 3.03 KB
/
PluginEditor.cpp
File metadata and controls
91 lines (74 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "PluginProcessor.h"
#include "PluginEditor.h"
//==============================================================================
AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor& p)
: AudioProcessorEditor (&p), processorRef (p)
{
juce::ignoreUnused (processorRef);
setSize(400, 200);
bypassWindow = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_bypassWindow_svg));
decodeWindow = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_decodeWindow_svg));
buttonOnSVG = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_buttonOn_svg));
buttonOnHoverSVG = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_buttonOn_hover_svg));
buttonOffSVG = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_buttonOff_svg));
buttonOffHoverSVG = juce::Drawable::createFromSVG(*juce::XmlDocument::parse(BinaryData::zimmt_buttonOff_hover_svg));
addAndMakeVisible(currentStateButton);
currentStateButton.setColour(juce::DrawableButton::backgroundOnColourId, juce::Colours::transparentWhite);
currentStateButton.setClickingTogglesState(true);
updateButtonImage();
currentStateButton.onClick = [this]()
{
buttonIsOn = !buttonIsOn;
processorRef.currentMode = buttonIsOn;
updateButtonImage();
repaint();
};
addAndMakeVisible(volumeSlider);
volumeSlider.setLookAndFeel(&customSliderLookAndFeel);
volumeSlider.setTextBoxStyle(juce::Slider::NoTextBox, false, 0, 0);
volumeSlider.setSliderStyle(juce::Slider::LinearHorizontal);
volumeSlider.setColour(juce::Slider::thumbColourId, juce::Colour::fromString("ff363732"));
volumeSlider.setRange(-70, 12, 0);
volumeSlider.onValueChange = [this]()
{
processorRef.dbtoamp((float)volumeSlider.getValue());
};
}
AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor()
{
volumeSlider.setLookAndFeel(nullptr);
}
//==============================================================================
void AudioPluginAudioProcessorEditor::paint (juce::Graphics& g)
{
if(bypassWindow != nullptr)
{
bypassWindow->setBounds(getLocalBounds());
bypassWindow->draw(g, 1.0f);
}
if(buttonIsOn && decodeWindow != nullptr)
{
decodeWindow->setBounds(getLocalBounds());
decodeWindow->draw(g, 1.0f);
}
}
void AudioPluginAudioProcessorEditor::resized()
{
currentStateButton.setBounds(84, 140, 88, 25);
volumeSlider.setBounds(60, 95, 135, 30);
}
void AudioPluginAudioProcessorEditor::updateButtonImage()
{
if(buttonIsOn)
{
currentStateButton.setImages(buttonOnSVG.get(), buttonOnHoverSVG.get(), nullptr);
}
else
{
currentStateButton.setImages(buttonOffSVG.get(), buttonOffHoverSVG.get(), nullptr);
}
if(bypassWindow != nullptr)
bypassWindow->setBounds(getLocalBounds());
if(decodeWindow != nullptr)
decodeWindow->setBounds(getLocalBounds());
}