commit 8d108611522b3383e45190f9fbc0b2ff50b634e3
parent 61204de8088a17a3b6b53bcdfac153193cd851bc
Author: Matti Pesonen <matti.h.pesonen@gmail.com>
Date: Wed, 22 Mar 2023 00:31:26 +0200
Persist GUI window size
Diffstat:
4 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/PluginEditor.cpp b/src/PluginEditor.cpp
@@ -287,6 +287,16 @@ void WaveNetVaComponent::resetImages()
repaint();
}
+float WaveNetVaComponent::getGuiScaleFactor()
+{
+ return static_cast<float> (processor.gui_scale_factor);
+}
+
+void WaveNetVaComponent::persistGuiScaleFactor(float scaleFactor)
+{
+ processor.gui_scale_factor = static_cast<double> (scaleFactor);
+}
+
// Wrapper implementation
WrappedWaveNetVaAudioProcessorEditor::WrappedWaveNetVaAudioProcessorEditor(WaveNetVaAudioProcessor& p)
: AudioProcessorEditor(p), waveNetVaComponent(p)
@@ -299,8 +309,10 @@ WrappedWaveNetVaAudioProcessorEditor::WrappedWaveNetVaAudioProcessorEditor(WaveN
constrainer->setSizeLimits(originalWidth / 4, originalHeight / 4, originalWidth * 2, originalHeight * 2);
}
- setResizable(true, true);
- setSize(originalWidth, originalHeight);
+ setResizable(true, true);
+ float scaledWidth = static_cast<float> (originalWidth) * waveNetVaComponent.getGuiScaleFactor();
+ float scaledHeight = static_cast<float> (originalHeight) * waveNetVaComponent.getGuiScaleFactor();
+ setSize(scaledWidth, scaledHeight);
}
void WrappedWaveNetVaAudioProcessorEditor::resized()
@@ -308,6 +320,7 @@ void WrappedWaveNetVaAudioProcessorEditor::resized()
const auto scaleFactor = static_cast<float> (getWidth()) / originalWidth;
waveNetVaComponent.setTransform(AffineTransform::scale(scaleFactor));
waveNetVaComponent.setBounds(0, 0, originalWidth, originalHeight);
+ waveNetVaComponent.persistGuiScaleFactor(scaleFactor);
}
void WrappedWaveNetVaAudioProcessorEditor::resetImages()
diff --git a/src/PluginEditor.h b/src/PluginEditor.h
@@ -31,6 +31,8 @@ public:
void resized() override;
void resetImages();
+ float getGuiScaleFactor();
+ void persistGuiScaleFactor(float scaleFactor);
private:
// This reference is provided as a quick way for your editor to
diff --git a/src/PluginProcessor.cpp b/src/PluginProcessor.cpp
@@ -238,6 +238,7 @@ void WaveNetVaAudioProcessor::getStateInformation (MemoryBlock& destData)
std::unique_ptr<XmlElement> xml (state.createXml());
xml->setAttribute ("amp_state", amp_state);
xml->setAttribute ("amp_lead", amp_lead);
+ xml->setAttribute ("gui_scale_factor", gui_scale_factor);
copyXmlToBinary (*xml, destData);
}
@@ -255,6 +256,7 @@ void WaveNetVaAudioProcessor::setStateInformation (const void* data, int sizeInB
treeState.replaceState (juce::ValueTree::fromXml (*xmlState));
amp_state = xmlState->getBoolAttribute ("amp_state");
amp_lead = xmlState->getBoolAttribute ("amp_lead");
+ gui_scale_factor = xmlState->getDoubleAttribute ("gui_scale_factor", 1.0);
if (auto* editor = dynamic_cast<WrappedWaveNetVaAudioProcessorEditor*> (getActiveEditor()))
editor->resetImages();
}
diff --git a/src/PluginProcessor.h b/src/PluginProcessor.h
@@ -91,6 +91,7 @@ public:
int amp_state = 1; // 0 = off, 1 = on
int amp_lead = 1; // 1 = clean, 0 = lead
int custom_tone = 0; // 0 = custom tone loaded, 1 = default channel tone
+ double gui_scale_factor = 1.0;
File loaded_tone;
juce::String loaded_tone_name;