-
Notifications
You must be signed in to change notification settings - Fork 0
/
PluginEditor.cpp
91 lines (77 loc) · 2.87 KB
/
PluginEditor.cpp
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
/*
==============================================================================
This file contains the basic framework code for a JUCE plugin editor.
==============================================================================
*/
#include "PluginProcessor.h"
#include "PluginEditor.h"
//==============================================================================
HexFmAudioProcessorEditor::HexFmAudioProcessorEditor (HexFmAudioProcessor& p) :
AudioProcessorEditor (&p),
modGrid(numOperators),
patchLoader(&p, &saveDialog),
saveDialog(&patchLoader),
algGraph(&p.tree),
audioProcessor(p)
{
operatorColor = Color::RGBColor(51, 81, 90);
for(int i = 0; i < numOperators; ++i)
{
allOps.add(new OperatorComponent(i, &audioProcessor.tree));
addAndMakeVisible(*allOps.getLast());
}
juce::LookAndFeel::getDefaultLookAndFeel().setDefaultSansSerifTypefaceName("Founders Grotesk Light");
addAndMakeVisible(&algGraph);
addAndMakeVisible(&patchLoader);
patchLoader.patchSelector.setSelectedItemIndex(1);
addAndMakeVisible(&saveDialog);
saveDialog.setEnabled(false);
addAndMakeVisible(&modGrid);
modGrid.attachButtons(&audioProcessor.tree);
addAndMakeVisible(&lfoGroup);
lfoGroup.attachChildren(&audioProcessor.tree);
setSize (1000, 800);
}
HexFmAudioProcessorEditor::~HexFmAudioProcessorEditor()
{
}
//==============================================================================
void HexFmAudioProcessorEditor::paint(juce::Graphics &g)
{
auto background = Color::RGBColor(37, 50, 53);
g.fillAll(background);
for(int i = 0; i < 6; ++i)
{
auto rect = allOps[i]->getBounds();
g.setColour(UXPalette::darkGray1);
g.fillRect(rect);
auto centerRect = rect.reduced(2);
g.setColour(UXPalette::darkGray3);
g.fillRect(centerRect);
}
if(!saveDialog.isEnabled())
{
saveDialog.setVisible(false);
saveDialog.toBack();
}
}
void HexFmAudioProcessorEditor::resized()
{
int w = getWidth() / 4;
//w = 250
int h = getHeight() / 6;
saveDialog.setBounds(w, 2 * h, 2 * w, 2 * h);
//Screen dimensions are set to: 1000, 800
//overall aspect: 5/4
dY = getHeight() / 10;
allOps[0]->setBounds(0, dY, 3 * dY, 4.5 * dY);
allOps[1]->setBounds(3 * dY, dY, 3 * dY, 4.5 * dY);
allOps[2]->setBounds(6 * dY, dY, 3 * dY, 4.5 * dY);
allOps[3]->setBounds(0, 5.5 * dY, 3 * dY, 4.5 * dY);
allOps[4]->setBounds(3 * dY, 5.5 * dY, 3 * dY, 4.5 * dY);
allOps[5]->setBounds(6 * dY, 5.5 * dY, 3 * dY, 4.5 * dY);
modGrid.setBounds(9 * dY, 4 * dY, 3 * dY, 3 * dY);
lfoGroup.setBounds(9 * dY, 7 * dY, 3 * dY, 3 * dY);
algGraph.setBounds(9 * dY, dY, 3 * dY, 3 * dY);
patchLoader.setBounds(3 * dY, 0, 9 * dY, dY);
}