1 /*
2  * Dragonfly Reverb, copyright (c) 2019 Michael Willis, Rob van den Berg
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 3 of
7  * the License, or any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * For a full copy of the GNU General Public License see the LICENSE file.
15  */
16 
17 #ifndef DRAGONFLY_REVERB_UI_HPP_INCLUDED
18 #define DRAGONFLY_REVERB_UI_HPP_INCLUDED
19 
20 #include "AbstractUI.hpp"
21 #include "ImageWidgets.hpp"
22 #include "NanoVG.hpp"
23 #include "DistrhoPlugin.hpp"
24 #include "Spectrogram.hpp"
25 #include "LabelledKnob.hpp"
26 
27 START_NAMESPACE_DISTRHO
28 
29 // -----------------------------------------------------------------------
30 
31 class DragonflyReverbUI : public DragonflyReverbAbstractUI, public ImageSlider::Callback {
32 public:
33     DragonflyReverbUI();
34 
35 protected:
36     // -------------------------------------------------------------------
37     // DSP Callbacks
38 
39     void parameterChanged ( uint32_t index, float value ) override;
40     void stateChanged(const char* key, const char* value) override;
41 
42     void programLoaded (uint32_t index);
43 
44     // -------------------------------------------------------------------
45     // Widget Callbacks
46     void imageKnobDragStarted ( ImageKnob* knob ) override;
47     void imageKnobDragFinished ( ImageKnob* knob ) override;
48     void imageKnobValueChanged ( ImageKnob* knob, float value ) override;
49     void imageSliderDragStarted(ImageSlider* slider) override;
50     void imageSliderDragFinished(ImageSlider* slider) override;
51     void imageSliderValueChanged(ImageSlider* slider, float value) override;
52 
53     bool onMouse(const MouseEvent&) override;
54     void onDisplay() override;
55     void uiIdle() override;
56 
57 private:
58     Image fImgBackground,fImgTabOff,fImgTabOn,fImgQuestion;
59 
60     ScopedPointer<ImageSlider> fSliderDry_level, fSliderEarly_level, fSliderEarlySend, fSliderLate_level;
61     ScopedPointer<Spectrogram> spectrogram;
62     ScopedPointer<LabelledKnob>
63       fKnobSize, fKnobWidth,
64       fKnobPredelay, fKnobDecay,
65       fKnobDiffuse, fKnobSpin, fKnobWander,
66       fKnobInHighCut, fKnobEarlyDamp, fKnobLateDamp,
67       fKnobInLowCut, fKnobBoostLPF, fKnobBoost;
68 
69     int currentBank;
70     int currentPreset[NUM_BANKS];
71     bool displayAbout;
72 
73     DGL::Rectangle<int> rectSliders[4];
74 
75     DGL::Rectangle<int> rectBanks[NUM_BANKS];
76     DGL::Rectangle<int> rectPresets[PRESETS_PER_BANK];
77 
78     DGL::Rectangle<int> rectDisplay;
79     DGL::Rectangle<int> rectAbout;
80 
81     void updatePresetDefaults();
82 
83     DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR ( DragonflyReverbUI )
84 };
85 
86 // -----------------------------------------------------------------------
87 
88 END_NAMESPACE_DISTRHO
89 
90 #endif //
91