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