kopia lustrzana https://github.com/jameshball/osci-render
Move visualiser settings to right always, fix scrolling issues
rodzic
3340d9dd45
commit
ed027bbfc4
|
@ -38,26 +38,12 @@ CommonPluginEditor::CommonPluginEditor(CommonAudioProcessor& p, juce::String app
|
|||
|
||||
addAndMakeVisible(visualiser);
|
||||
|
||||
visualiser.openSettings = [this] {
|
||||
openVisualiserSettings();
|
||||
};
|
||||
|
||||
visualiser.closeSettings = [this] {
|
||||
visualiserSettingsWindow.setVisible(false);
|
||||
};
|
||||
|
||||
visualiserSettings.setLookAndFeel(&getLookAndFeel());
|
||||
visualiserSettings.setSize(550, 550);
|
||||
visualiserSettingsWindow.centreWithSize(550, 400);
|
||||
#if JUCE_WINDOWS
|
||||
// if not standalone, use native title bar for compatibility with DAWs
|
||||
visualiserSettingsWindow.setUsingNativeTitleBar(processor.wrapperType == juce::AudioProcessor::WrapperType::wrapperType_Standalone);
|
||||
#elif JUCE_MAC
|
||||
visualiserSettingsWindow.setUsingNativeTitleBar(true);
|
||||
#endif
|
||||
visualiserSettings.setColour(juce::ResizableWindow::backgroundColourId, Colours::dark);
|
||||
|
||||
recordingSettings.setLookAndFeel(&getLookAndFeel());
|
||||
recordingSettings.setSize(300, 300);
|
||||
recordingSettings.setSize(300, 200);
|
||||
recordingSettingsWindow.centreWithSize(300, 200);
|
||||
#if JUCE_WINDOWS
|
||||
// if not standalone, use native title bar for compatibility with DAWs
|
||||
|
@ -163,7 +149,6 @@ void CommonPluginEditor::openAudioSettings() {
|
|||
|
||||
void CommonPluginEditor::openRecordingSettings() {
|
||||
recordingSettingsWindow.setVisible(true);
|
||||
recordingSettingsWindow.toFront(true);
|
||||
}
|
||||
|
||||
void CommonPluginEditor::resetToDefault() {
|
||||
|
@ -172,8 +157,3 @@ void CommonPluginEditor::resetToDefault() {
|
|||
window->resetToDefaultState();
|
||||
}
|
||||
}
|
||||
|
||||
void CommonPluginEditor::openVisualiserSettings() {
|
||||
visualiserSettingsWindow.setVisible(true);
|
||||
visualiserSettingsWindow.toFront(true);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@ public:
|
|||
void openAudioSettings();
|
||||
void openRecordingSettings();
|
||||
void resetToDefault();
|
||||
void openVisualiserSettings();
|
||||
|
||||
private:
|
||||
CommonAudioProcessor& audioProcessor;
|
||||
|
@ -50,7 +49,6 @@ public:
|
|||
#endif
|
||||
|
||||
VisualiserSettings visualiserSettings = VisualiserSettings(audioProcessor.visualiserParameters, 3);
|
||||
SettingsWindow visualiserSettingsWindow = SettingsWindow("Visualiser Settings", visualiserSettings);
|
||||
RecordingSettings recordingSettings = RecordingSettings(audioProcessor.recordingParameters);
|
||||
SettingsWindow recordingSettingsWindow = SettingsWindow("Recording Settings", recordingSettings);
|
||||
VisualiserComponent visualiser{
|
||||
|
|
|
@ -71,6 +71,22 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
|
|||
addAndMakeVisible(luaResizerBar);
|
||||
addAndMakeVisible(visualiser);
|
||||
|
||||
visualiser.openSettings = [this] {
|
||||
openVisualiserSettings();
|
||||
};
|
||||
|
||||
visualiser.closeSettings = [this] {
|
||||
visualiserSettingsWindow.setVisible(false);
|
||||
};
|
||||
|
||||
visualiserSettingsWindow.centreWithSize(550, 400);
|
||||
#if JUCE_WINDOWS
|
||||
// if not standalone, use native title bar for compatibility with DAWs
|
||||
visualiserSettingsWindow.setUsingNativeTitleBar(processor.wrapperType == juce::AudioProcessor::WrapperType::wrapperType_Standalone);
|
||||
#elif JUCE_MAC
|
||||
visualiserSettingsWindow.setUsingNativeTitleBar(true);
|
||||
#endif
|
||||
|
||||
initialiseMenuBar(model);
|
||||
}
|
||||
|
||||
|
@ -427,3 +443,8 @@ void OscirenderAudioProcessorEditor::mouseMove(const juce::MouseEvent& event) {
|
|||
setMouseCursor(juce::MouseCursor::NormalCursor);
|
||||
}
|
||||
}
|
||||
|
||||
void OscirenderAudioProcessorEditor::openVisualiserSettings() {
|
||||
visualiserSettingsWindow.setVisible(true);
|
||||
visualiserSettingsWindow.toFront(true);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ public:
|
|||
void handleAsyncUpdate() override;
|
||||
void changeListenerCallback(juce::ChangeBroadcaster* source) override;
|
||||
void toggleLayout(juce::StretchableLayoutManager& layout, double prefSize);
|
||||
void openVisualiserSettings();
|
||||
|
||||
void editCustomFunction(bool enabled);
|
||||
|
||||
|
@ -48,6 +49,8 @@ public:
|
|||
juce::ComponentAnimator codeEditorAnimator;
|
||||
LuaComponent lua{audioProcessor, *this};
|
||||
|
||||
SettingsWindow visualiserSettingsWindow = SettingsWindow("Visualiser Settings", visualiserSettings);
|
||||
|
||||
LuaConsole console;
|
||||
|
||||
std::vector<std::shared_ptr<juce::CodeDocument>> codeDocuments;
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
#include "SosciPluginEditor.h"
|
||||
#include <juce_audio_plugin_client/Standalone/juce_StandaloneFilterWindow.h>
|
||||
|
||||
SosciPluginEditor::SosciPluginEditor(SosciAudioProcessor& p) : CommonPluginEditor(p, "sosci", "sosci", 700, 750), audioProcessor(p) {
|
||||
SosciPluginEditor::SosciPluginEditor(SosciAudioProcessor& p) : CommonPluginEditor(p, "sosci", "sosci", 1180, 750), audioProcessor(p) {
|
||||
initialiseMenuBar(model);
|
||||
addAndMakeVisible(volume);
|
||||
addAndMakeVisible(visualiserSettingsWrapper);
|
||||
|
||||
resized();
|
||||
}
|
||||
|
||||
|
@ -24,5 +26,9 @@ void SosciPluginEditor::resized() {
|
|||
auto volumeArea = area.removeFromLeft(30);
|
||||
volume.setBounds(volumeArea.withSizeKeepingCentre(volumeArea.getWidth(), juce::jmin(volumeArea.getHeight(), 300)));
|
||||
|
||||
auto settingsArea = area.removeFromRight(juce::jmax(juce::jmin(0.4 * getWidth(), 550.0), 350.0));
|
||||
visualiserSettings.setSize(settingsArea.getWidth(), 550);
|
||||
visualiserSettingsWrapper.setBounds(settingsArea);
|
||||
|
||||
visualiser.setBounds(area);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ public:
|
|||
|
||||
private:
|
||||
SosciAudioProcessor& audioProcessor;
|
||||
|
||||
ScrollableComponent visualiserSettingsWrapper = ScrollableComponent(visualiserSettings);
|
||||
|
||||
SosciMainMenuBarModel model{*this, audioProcessor};
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ private:
|
|||
public:
|
||||
|
||||
EffectParameter qualityParameter = EffectParameter(
|
||||
"Quality",
|
||||
"Video Quality",
|
||||
"Controls the quality of the recording video. 0 is the worst possible quality, and 1 is lossless.",
|
||||
"brightness",
|
||||
VERSION_HINT, 0.7, 0.0, 1.0
|
||||
|
|
|
@ -101,7 +101,9 @@ VisualiserComponent::VisualiserComponent(
|
|||
};
|
||||
|
||||
settingsButton.onClick = [this]() {
|
||||
openSettings();
|
||||
if (openSettings != nullptr) {
|
||||
openSettings();
|
||||
}
|
||||
};
|
||||
|
||||
popOutButton.onClick = [this]() {
|
||||
|
@ -411,7 +413,12 @@ void VisualiserComponent::resized() {
|
|||
if (child == nullptr && parent == nullptr && !visualiserOnly) {
|
||||
popOutButton.setBounds(buttons.removeFromRight(30));
|
||||
}
|
||||
settingsButton.setBounds(buttons.removeFromRight(30));
|
||||
if (openSettings != nullptr) {
|
||||
settingsButton.setVisible(true);
|
||||
settingsButton.setBounds(buttons.removeFromRight(30));
|
||||
} else {
|
||||
settingsButton.setVisible(false);
|
||||
}
|
||||
#if SOSCI_FEATURES
|
||||
sharedTextureButton.setBounds(buttons.removeFromRight(30));
|
||||
#endif
|
||||
|
|
|
@ -56,6 +56,10 @@ VisualiserSettings::VisualiserSettings(VisualiserParameters& p, int numChannels)
|
|||
|
||||
VisualiserSettings::~VisualiserSettings() {}
|
||||
|
||||
void VisualiserSettings::paint(juce::Graphics& g) {
|
||||
g.fillAll(Colours::darker);
|
||||
}
|
||||
|
||||
void VisualiserSettings::resized() {
|
||||
auto area = getLocalBounds().reduced(20, 0).withTrimmedBottom(20);
|
||||
double rowHeight = 30;
|
||||
|
|
|
@ -179,7 +179,7 @@ public:
|
|||
"Sweep (ms)",
|
||||
"The number of milliseconds it takes for the oscilloscope to sweep from left to right.",
|
||||
"sweepMs",
|
||||
VERSION_HINT, 30.0, 0.0, 1000.0
|
||||
VERSION_HINT, 10.0, 0.0, 1000.0
|
||||
)
|
||||
);
|
||||
std::shared_ptr<Effect> triggerValueEffect = std::make_shared<Effect>(
|
||||
|
@ -201,6 +201,7 @@ public:
|
|||
VisualiserSettings(VisualiserParameters&, int numChannels = 2);
|
||||
~VisualiserSettings();
|
||||
|
||||
void paint(juce::Graphics& g) override;
|
||||
void resized() override;
|
||||
|
||||
double getIntensity() {
|
||||
|
@ -285,6 +286,27 @@ private:
|
|||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(VisualiserSettings)
|
||||
};
|
||||
|
||||
class ScrollableComponent : public juce::Component {
|
||||
public:
|
||||
ScrollableComponent(juce::Component& component) : component(component) {
|
||||
addAndMakeVisible(viewport);
|
||||
viewport.setViewedComponent(&component, false);
|
||||
viewport.setScrollBarsShown(true, false, true, false);
|
||||
}
|
||||
|
||||
void paint(juce::Graphics& g) override {
|
||||
g.fillAll(Colours::darker);
|
||||
}
|
||||
|
||||
void resized() override {
|
||||
viewport.setBounds(getLocalBounds());
|
||||
}
|
||||
|
||||
private:
|
||||
juce::Viewport viewport;
|
||||
juce::Component& component;
|
||||
};
|
||||
|
||||
class SettingsWindow : public juce::DocumentWindow {
|
||||
public:
|
||||
SettingsWindow(juce::String name, juce::Component& component) : juce::DocumentWindow(name, Colours::darker, juce::DocumentWindow::TitleBarButtons::closeButton), component(component) {
|
||||
|
@ -294,15 +316,15 @@ public:
|
|||
viewport.setScrollBarsShown(true, false, true, false);
|
||||
setAlwaysOnTop(true);
|
||||
}
|
||||
|
||||
|
||||
void closeButtonPressed() override {
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
|
||||
void resized() override {
|
||||
viewport.setBounds(getLocalBounds());
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
juce::Viewport viewport;
|
||||
juce::Component& component;
|
||||
|
|
|
@ -6,6 +6,9 @@ WavParser::WavParser(CommonAudioProcessor& p, std::unique_ptr<juce::InputStream>
|
|||
juce::AudioFormatManager formatManager;
|
||||
formatManager.registerBasicFormats();
|
||||
juce::AudioFormatReader* reader = formatManager.createReaderFor(std::move(stream));
|
||||
if (reader == nullptr) {
|
||||
return;
|
||||
}
|
||||
auto* afSource = new juce::AudioFormatReaderSource(reader, true);
|
||||
afSource->setLooping(true);
|
||||
source = std::make_unique<juce::ResamplingAudioSource>(afSource, true);
|
||||
|
|
Ładowanie…
Reference in New Issue