| 13 | #include "Utils/Colour.h" |
| 14 | |
| 15 | EnvPanel::EnvPanel(int modIdx, Parameters& parameters) |
| 16 | : mParameters(parameters), |
| 17 | mModEnv(mParameters.global.modEnvs[modIdx]), |
| 18 | mSliderAttack(mParameters, mModEnv.attack), |
| 19 | mSliderDecay(mParameters, mModEnv.decay), |
| 20 | mSliderSustain(mParameters, mModEnv.sustain), |
| 21 | mSliderRelease(mParameters, mModEnv.release), |
| 22 | mBtnMap(mParameters, mModEnv) { |
| 23 | // Default slider settings |
| 24 | std::vector<std::reference_wrapper<juce::Slider>> sliders = { mSliderAttack, mSliderDecay, mSliderSustain, mSliderRelease }; |
| 25 | for (auto& slider : sliders) { |
| 26 | slider.get().setNumDecimalPlacesToDisplay(2); |
| 27 | slider.get().setPopupDisplayEnabled(true, true, this); |
| 28 | slider.get().setColour(juce::Slider::ColourIds::rotarySliderOutlineColourId, mModEnv.colour); |
| 29 | addAndMakeVisible(slider.get()); |
| 30 | } |
| 31 | mSliderAttack.setRange(ParamRanges::ATTACK.start, ParamRanges::ATTACK.end, 0.01); |
| 32 | mSliderAttack.setDoubleClickReturnValue(true, ParamDefaults::ATTACK_DEFAULT_SEC); |
| 33 | mSliderAttack.setTextValueSuffix(" s"); |
| 34 | mSliderDecay.setRange(ParamRanges::DECAY.start, ParamRanges::DECAY.end, 0.01); |
| 35 | mSliderDecay.setDoubleClickReturnValue(true, ParamDefaults::DECAY_DEFAULT_SEC); |
| 36 | mSliderDecay.setTextValueSuffix(" s"); |
| 37 | mSliderSustain.setRange(ParamRanges::SUSTAIN.start, ParamRanges::SUSTAIN.end, 0.01); |
| 38 | mSliderSustain.setDoubleClickReturnValue(true, ParamDefaults::SUSTAIN_DEFAULT); |
| 39 | mSliderSustain.setTextValueSuffix(" dB"); |
| 40 | mSliderRelease.setRange(ParamRanges::RELEASE.start, ParamRanges::RELEASE.end, 0.01); |
| 41 | mSliderRelease.setDoubleClickReturnValue(true, ParamDefaults::RELEASE_DEFAULT_SEC); |
| 42 | mSliderRelease.setTextValueSuffix(" s"); |
| 43 | |
| 44 | // Default button settings |
| 45 | std::vector<std::reference_wrapper<juce::TextButton>> buttons = { mBtnMap }; |
| 46 | for (auto& button : buttons) { |
| 47 | button.get().setToggleable(true); |
| 48 | button.get().setColour(juce::TextButton::textColourOffId, mModEnv.colour); |
| 49 | button.get().setColour(juce::TextButton::textColourOnId, juce::Colours::black); |
| 50 | button.get().setColour(juce::TextButton::buttonColourId, mModEnv.colour); |
| 51 | button.get().setColour(juce::TextButton::buttonOnColourId, mModEnv.colour); |
| 52 | addAndMakeVisible(button.get()); |
| 53 | } |
| 54 | |
| 55 | // Default label settings |
| 56 | std::vector<std::reference_wrapper<juce::Label>> labels = { mLabelAttack, mLabelDecay, mLabelSustain, mLabelRelease }; |
| 57 | for (auto& label : labels) { |
| 58 | label.get().setColour(juce::Label::ColourIds::textColourId, mModEnv.colour); |
| 59 | label.get().setJustificationType(juce::Justification::centredTop); |
| 60 | label.get().setFont(Utils::getFont()); |
| 61 | addAndMakeVisible(label.get()); |
| 62 | } |
| 63 | mLabelAttack.setText("attack", juce::dontSendNotification); |
| 64 | mLabelDecay.setText("decay", juce::dontSendNotification); |
| 65 | mLabelSustain.setText("sustain", juce::dontSendNotification); |
| 66 | mLabelRelease.setText("release", juce::dontSendNotification); |
| 67 | |
| 68 | mModEnv.attack->addListener(this); |
| 69 | mModEnv.decay->addListener(this); |
| 70 | mModEnv.sustain->addListener(this); |
| 71 | mModEnv.release->addListener(this); |
| 72 | mParamHasChanged.store(true); // Init param values |
nothing calls this directly
no test coverage detected