gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 730ef888ad8e279a516ba466d39dd6a132863c7e
parent c7cf8b8d9d061e8ea74fc6ae334f85e6139be855
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed, 16 Mar 2022 17:07:05 +0100

add support for root scale

Diffstat:
Msource/jucePlugin/PluginEditor.cpp | 17+++++++++++++++--
Msource/jucePlugin/PluginEditor.h | 3+++
Msource/jucePlugin/genericUI/assets/VirusC.json | 3++-
Msource/jucePlugin/genericUI/editor.cpp | 2++
Msource/jucePlugin/genericUI/editor.h | 4++++
5 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/source/jucePlugin/PluginEditor.cpp b/source/jucePlugin/PluginEditor.cpp @@ -69,6 +69,8 @@ void AudioPluginAudioProcessorEditor::LoadSkin(int index) { m_virusEditor.reset(); } + m_rootScale = 1.0f; + if (index == 1) { const auto virusEditor = new Trancy::VirusEditor(m_parameterBinding, processorRef); @@ -80,8 +82,10 @@ void AudioPluginAudioProcessorEditor::LoadSkin(int index) { { try { - m_virusEditor.reset(new genericVirusUI::VirusEditor(m_parameterBinding, processorRef.getController(), processorRef)); + auto* editor = new genericVirusUI::VirusEditor(m_parameterBinding, processorRef.getController(), processorRef); + m_virusEditor.reset(editor); setSize(m_virusEditor->getWidth(), m_virusEditor->getHeight()); + m_rootScale = editor->getScale(); } catch(const std::runtime_error& _err) { @@ -99,7 +103,16 @@ void AudioPluginAudioProcessorEditor::LoadSkin(int index) { m_skin.toFront(false); } -AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor() { +void AudioPluginAudioProcessorEditor::setGuiScale(int percent) +{ + setScaleFactor(static_cast<float>(percent)/100.0f * m_rootScale); + auto* config = processorRef.getController().getConfig(); + config->setValue("scale", percent); + config->saveIfNeeded(); +} + +AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor() +{ m_virusEditor.reset(); } diff --git a/source/jucePlugin/PluginEditor.h b/source/jucePlugin/PluginEditor.h @@ -19,6 +19,8 @@ public: private: void timerCallback() override; void LoadSkin(int index); + void setGuiScale(int percent); + // This reference is provided as a quick way for your editor to // access the processor object that created it. AudioPluginAudioProcessor& processorRef; @@ -28,6 +30,7 @@ private: juce::ComboBox m_scale; juce::ComboBox m_skin; int m_currentSkinId = -1; + float m_rootScale = 1.0f; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginAudioProcessorEditor) diff --git a/source/jucePlugin/genericUI/assets/VirusC.json b/source/jucePlugin/genericUI/assets/VirusC.json @@ -4,7 +4,8 @@ "x" : "0", "y" : "0", "width" : "2754", - "height" : "1600" + "height" : "1600", + "scale" : "0.5" }, "children" : [ { diff --git a/source/jucePlugin/genericUI/editor.cpp b/source/jucePlugin/genericUI/editor.cpp @@ -33,6 +33,8 @@ namespace genericUI } m_rootObject->createJuceTree(*this); + + m_scale = m_rootObject->getPropertyFloat("scale", 1.0f); } juce::Drawable* Editor::getImageDrawable(const std::string& _texture) diff --git a/source/jucePlugin/genericUI/editor.h b/source/jucePlugin/genericUI/editor.h @@ -51,6 +51,8 @@ namespace genericUI return dynamic_cast<T*>(c); } + float getScale() const { return m_scale; } + private: static const char* getResourceByFilename(const std::string& _filename, int& _outDataSize); @@ -61,5 +63,7 @@ namespace genericUI Virus::Controller& m_controller; std::map<std::string, std::vector<juce::Component*>> m_componentsByName; + + float m_scale = 1.0f; }; }