kopia lustrzana https://github.com/jameshball/osci-render
Only have a single instance of visualiser settings per app
rodzic
7e809f0516
commit
2b7e51f1df
|
@ -102,6 +102,18 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
|
||||||
addAndMakeVisible(lua);
|
addAndMakeVisible(lua);
|
||||||
addAndMakeVisible(luaResizerBar);
|
addAndMakeVisible(luaResizerBar);
|
||||||
addAndMakeVisible(visualiser);
|
addAndMakeVisible(visualiser);
|
||||||
|
|
||||||
|
visualiser.openSettings = [this] {
|
||||||
|
visualiserSettingsWindow.setVisible(true);
|
||||||
|
visualiserSettingsWindow.toFront(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
visualiserSettingsWindow.setResizable(false, false);
|
||||||
|
visualiserSettingsWindow.setUsingNativeTitleBar(true);
|
||||||
|
visualiserSettings.setLookAndFeel(&getLookAndFeel());
|
||||||
|
visualiserSettings.setSize(550, 230);
|
||||||
|
visualiserSettingsWindow.setContentNonOwned(&visualiserSettings, true);
|
||||||
|
visualiserSettingsWindow.centreWithSize(550, 230);
|
||||||
|
|
||||||
tooltipDropShadow.setOwner(&tooltipWindow);
|
tooltipDropShadow.setOwner(&tooltipWindow);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "LookAndFeel.h"
|
#include "LookAndFeel.h"
|
||||||
#include "components/ErrorCodeEditorComponent.h"
|
#include "components/ErrorCodeEditorComponent.h"
|
||||||
#include "components/LuaConsole.h"
|
#include "components/LuaConsole.h"
|
||||||
|
#include "components/VisualiserSettings.h"
|
||||||
|
|
||||||
class OscirenderAudioProcessorEditor : public juce::AudioProcessorEditor, private juce::CodeDocument::Listener, public juce::AsyncUpdater, public juce::ChangeListener {
|
class OscirenderAudioProcessorEditor : public juce::AudioProcessorEditor, private juce::CodeDocument::Listener, public juce::AsyncUpdater, public juce::ChangeListener {
|
||||||
public:
|
public:
|
||||||
|
@ -48,7 +49,10 @@ public:
|
||||||
|
|
||||||
std::atomic<bool> editingCustomFunction = false;
|
std::atomic<bool> editingCustomFunction = false;
|
||||||
|
|
||||||
VisualiserComponent visualiser{audioProcessor, nullptr, audioProcessor.legacyVisualiserEnabled->getBoolValue()};
|
VisualiserSettings visualiserSettings = VisualiserSettings(audioProcessor);
|
||||||
|
SettingsWindow visualiserSettingsWindow = SettingsWindow("Visualiser Settings");
|
||||||
|
VisualiserComponent visualiser{audioProcessor, visualiserSettings, nullptr, audioProcessor.legacyVisualiserEnabled->getBoolValue()};
|
||||||
|
|
||||||
std::atomic<bool> visualiserFullScreen = false;
|
std::atomic<bool> visualiserFullScreen = false;
|
||||||
SettingsComponent settings{audioProcessor, *this};
|
SettingsComponent settings{audioProcessor, *this};
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,13 @@
|
||||||
#include "../LookAndFeel.h"
|
#include "../LookAndFeel.h"
|
||||||
#include "VisualiserComponent.h"
|
#include "VisualiserComponent.h"
|
||||||
|
|
||||||
VisualiserComponent::VisualiserComponent(OscirenderAudioProcessor& p, VisualiserComponent* parent, bool useOldVisualiser) : backgroundColour(juce::Colours::black), waveformColour(juce::Colour(0xff00ff00)), audioProcessor(p), oldVisualiser(useOldVisualiser), juce::Thread("VisualiserComponent"), parent(parent) {
|
VisualiserComponent::VisualiserComponent(OscirenderAudioProcessor& p, VisualiserSettings& settings, VisualiserComponent* parent, bool useOldVisualiser) : settings(settings), backgroundColour(juce::Colours::black), waveformColour(juce::Colour(0xff00ff00)), audioProcessor(p), oldVisualiser(useOldVisualiser), juce::Thread("VisualiserComponent"), parent(parent) {
|
||||||
setVisualiserType(oldVisualiser);
|
setVisualiserType(oldVisualiser);
|
||||||
|
|
||||||
resetBuffer();
|
resetBuffer();
|
||||||
startTimerHz(60);
|
startTimerHz(60);
|
||||||
startThread();
|
startThread();
|
||||||
|
|
||||||
settingsWindow.setResizable(false, false);
|
|
||||||
settingsWindow.setUsingNativeTitleBar(true);
|
|
||||||
settings.setLookAndFeel(&getLookAndFeel());
|
|
||||||
settings.setSize(550, 230);
|
|
||||||
settingsWindow.setContentNonOwned(&settings, true);
|
|
||||||
settingsWindow.centreWithSize(550, 230);
|
|
||||||
|
|
||||||
setMouseCursor(juce::MouseCursor::PointingHandCursor);
|
setMouseCursor(juce::MouseCursor::PointingHandCursor);
|
||||||
setWantsKeyboardFocus(true);
|
setWantsKeyboardFocus(true);
|
||||||
|
|
||||||
|
@ -349,8 +342,9 @@ void VisualiserComponent::childChanged() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualiserComponent::popoutWindow() {
|
void VisualiserComponent::popoutWindow() {
|
||||||
auto visualiser = new VisualiserComponent(audioProcessor, this, oldVisualiser);
|
auto visualiser = new VisualiserComponent(audioProcessor, settings, this, oldVisualiser);
|
||||||
visualiser->settings.setLookAndFeel(&getLookAndFeel());
|
visualiser->settings.setLookAndFeel(&getLookAndFeel());
|
||||||
|
visualiser->openSettings = openSettings;
|
||||||
child = visualiser;
|
child = visualiser;
|
||||||
childChanged();
|
childChanged();
|
||||||
popOutButton.setVisible(false);
|
popOutButton.setVisible(false);
|
||||||
|
@ -365,8 +359,3 @@ void VisualiserComponent::popoutWindow() {
|
||||||
resized();
|
resized();
|
||||||
popOutButton.setVisible(false);
|
popOutButton.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualiserComponent::openSettings() {
|
|
||||||
settingsWindow.setVisible(true);
|
|
||||||
settingsWindow.toFront(true);
|
|
||||||
}
|
|
||||||
|
|
|
@ -18,10 +18,11 @@ enum class FullScreenMode {
|
||||||
class VisualiserWindow;
|
class VisualiserWindow;
|
||||||
class VisualiserComponent : public juce::Component, public juce::Timer, public juce::Thread, public juce::MouseListener, public juce::SettableTooltipClient {
|
class VisualiserComponent : public juce::Component, public juce::Timer, public juce::Thread, public juce::MouseListener, public juce::SettableTooltipClient {
|
||||||
public:
|
public:
|
||||||
VisualiserComponent(OscirenderAudioProcessor& p, VisualiserComponent* parent = nullptr, bool useOldVisualiser = false);
|
VisualiserComponent(OscirenderAudioProcessor& p, VisualiserSettings& settings, VisualiserComponent* parent = nullptr, bool useOldVisualiser = false);
|
||||||
~VisualiserComponent() override;
|
~VisualiserComponent() override;
|
||||||
|
|
||||||
void openSettings();
|
std::function<void()> openSettings;
|
||||||
|
|
||||||
void childChanged();
|
void childChanged();
|
||||||
void enableFullScreen();
|
void enableFullScreen();
|
||||||
void setFullScreenCallback(std::function<void(FullScreenMode)> callback);
|
void setFullScreenCallback(std::function<void(FullScreenMode)> callback);
|
||||||
|
@ -76,8 +77,8 @@ private:
|
||||||
std::shared_ptr<BufferConsumer> consumer;
|
std::shared_ptr<BufferConsumer> consumer;
|
||||||
|
|
||||||
std::function<void(FullScreenMode)> fullScreenCallback;
|
std::function<void(FullScreenMode)> fullScreenCallback;
|
||||||
VisualiserSettings settings = VisualiserSettings(audioProcessor, *this);
|
|
||||||
SettingsWindow settingsWindow = SettingsWindow("Visualiser Settings");
|
VisualiserSettings& settings;
|
||||||
|
|
||||||
juce::WebBrowserComponent::ResourceProvider provider = [this](const juce::String& path) {
|
juce::WebBrowserComponent::ResourceProvider provider = [this](const juce::String& path) {
|
||||||
juce::String mimeType;
|
juce::String mimeType;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "VisualiserComponent.h"
|
#include "VisualiserComponent.h"
|
||||||
#include "../PluginEditor.h"
|
#include "../PluginEditor.h"
|
||||||
|
|
||||||
VisualiserSettings::VisualiserSettings(OscirenderAudioProcessor& p, VisualiserComponent& visualiser) : audioProcessor(p), visualiser(visualiser) {
|
VisualiserSettings::VisualiserSettings(OscirenderAudioProcessor& p) : audioProcessor(p) {
|
||||||
addAndMakeVisible(intensity);
|
addAndMakeVisible(intensity);
|
||||||
addAndMakeVisible(persistence);
|
addAndMakeVisible(persistence);
|
||||||
addAndMakeVisible(hue);
|
addAndMakeVisible(hue);
|
||||||
|
|
|
@ -6,17 +6,15 @@
|
||||||
#include "../LookAndFeel.h"
|
#include "../LookAndFeel.h"
|
||||||
#include "SwitchButton.h"
|
#include "SwitchButton.h"
|
||||||
|
|
||||||
class VisualiserComponent;
|
|
||||||
class VisualiserSettings : public juce::Component {
|
class VisualiserSettings : public juce::Component {
|
||||||
public:
|
public:
|
||||||
VisualiserSettings(OscirenderAudioProcessor&, VisualiserComponent&);
|
VisualiserSettings(OscirenderAudioProcessor&);
|
||||||
~VisualiserSettings();
|
~VisualiserSettings();
|
||||||
|
|
||||||
void resized() override;
|
void resized() override;
|
||||||
juce::var getSettings();
|
juce::var getSettings();
|
||||||
private:
|
private:
|
||||||
OscirenderAudioProcessor& audioProcessor;
|
OscirenderAudioProcessor& audioProcessor;
|
||||||
VisualiserComponent& visualiser;
|
|
||||||
|
|
||||||
EffectComponent intensity{audioProcessor, *audioProcessor.intensityEffect};
|
EffectComponent intensity{audioProcessor, *audioProcessor.intensityEffect};
|
||||||
EffectComponent persistence{audioProcessor, *audioProcessor.persistenceEffect};
|
EffectComponent persistence{audioProcessor, *audioProcessor.persistenceEffect};
|
||||||
|
|
Ładowanie…
Reference in New Issue