mirror of
https://codeberg.org/armin/justasample.git
synced 2026-09-01 04:10:48 +02:00
init
This commit is contained in:
commit
d21bc831e1
178 changed files with 24136 additions and 0 deletions
82
Source/Components/FxChain.h
Normal file
82
Source/Components/FxChain.h
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
FxChain.h
|
||||
Created: 5 Jan 2024 3:26:37pm
|
||||
Author: binya
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <JuceHeader.h>
|
||||
|
||||
#include "../PluginProcessor.h"
|
||||
#include "../PluginParameters.h"
|
||||
#include "../Utilities/ComponentUtils.h"
|
||||
#include "FxModule.h"
|
||||
#include "FxDragTarget.h"
|
||||
#include "Displays/FilterResponse.h"
|
||||
#include "Displays/ReverbResponse.h"
|
||||
#include "Displays/DistortionVisualizer.h"
|
||||
#include "Displays/ChorusVisualizer.h"
|
||||
|
||||
class FxChainShadows final : public CustomComponent
|
||||
{
|
||||
void resized() override;
|
||||
void paint(juce::Graphics& g) override;
|
||||
void lookAndFeelChanged() override;
|
||||
|
||||
melatonin::InnerShadow innerShadow{
|
||||
{defaultTheme.slate.withAlpha(0.25f), 3, {0, 2}},
|
||||
{defaultTheme.slate.withAlpha(0.25f), 3, {0, -2}}
|
||||
};
|
||||
melatonin::DropShadow dragShadow{ defaultTheme.slate.withAlpha(0.125f), 3, {2, 2} };
|
||||
};
|
||||
|
||||
/** The FX chain allows for drag and drop reordering of the effects modules. */
|
||||
class FxChain final : public CustomComponent, public FxDragTarget
|
||||
{
|
||||
public:
|
||||
explicit FxChain(JustaSampleAudioProcessor& processor);
|
||||
~FxChain() override = default;
|
||||
|
||||
bool isChainDragging() const { return dragging; }
|
||||
Component* getDragComp() const { return dragComp; }
|
||||
|
||||
private:
|
||||
void paint(juce::Graphics& g) override;
|
||||
void resized() override;
|
||||
|
||||
void mouseDrag(const juce::MouseEvent& event) override;
|
||||
void dragStarted(juce::Component* comp, const juce::MouseEvent& event) override;
|
||||
void dragEnded() override;
|
||||
|
||||
void enablementChanged() override;
|
||||
|
||||
FxModule& getModule(PluginParameters::FxTypes type);
|
||||
|
||||
//==============================================================================
|
||||
ReverbResponse reverbDisplay;
|
||||
DistortionVisualizer distortionDisplay;
|
||||
FilterResponse eqDisplay;
|
||||
ChorusVisualizer chorusDisplay;
|
||||
|
||||
FxModule reverbModule, distortionModule, eqModule, chorusModule;
|
||||
|
||||
FxChainShadows shadows;
|
||||
|
||||
// Dragging functionality
|
||||
juce::ParameterAttachment fxPermAttachment;
|
||||
int oldVal{ 0 };
|
||||
std::array<PluginParameters::FxTypes, 4> moduleOrder{};
|
||||
|
||||
bool dragging{ false };
|
||||
PluginParameters::FxTypes dragTarget{ PluginParameters::REVERB };
|
||||
Component* dragComp{ nullptr };
|
||||
int dragCompIndex{ 0 };
|
||||
int mouseX{ 0 };
|
||||
int dragOffset{ 0 };
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FxChain)
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue