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:
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;
};
}