From 36e35aef3b51172c03d071c956150d2c23a6dd5a Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 29 Sep 2021 12:42:22 +0100 Subject: [PATCH] AudioPluginHost: Display format of loaded plugins in graph view --- .../Source/UI/GraphEditorPanel.cpp | 24 ++++++++++--------- .../AudioPluginHost/Source/UI/PluginWindow.h | 15 +++++++++++- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp index bcea2a9f8a..e7a90ce55b 100644 --- a/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp +++ b/extras/AudioPluginHost/Source/UI/GraphEditorPanel.cpp @@ -339,12 +339,14 @@ struct GraphEditorPanel::PluginComponent : public Component, const AudioProcessorGraph::Node::Ptr f (graph.graph.getNodeForId (pluginID)); jassert (f != nullptr); - numIns = f->getProcessor()->getTotalNumInputChannels(); - if (f->getProcessor()->acceptsMidi()) + auto& processor = *f->getProcessor(); + + numIns = processor.getTotalNumInputChannels(); + if (processor.acceptsMidi()) ++numIns; - numOuts = f->getProcessor()->getTotalNumOutputChannels(); - if (f->getProcessor()->producesMidi()) + numOuts = processor.getTotalNumOutputChannels(); + if (processor.producesMidi()) ++numOuts; int w = 100; @@ -352,14 +354,13 @@ struct GraphEditorPanel::PluginComponent : public Component, w = jmax (w, (jmax (numIns, numOuts) + 1) * 20); - const int textWidth = font.getStringWidth (f->getProcessor()->getName()); + const int textWidth = font.getStringWidth (processor.getName()); w = jmax (w, 16 + jmin (textWidth, 300)); if (textWidth > 300) h = 100; setSize (w, h); - - setName (f->getProcessor()->getName()); + setName (processor.getName() + formatSuffix); { auto p = graph.getNodePosition (pluginID); @@ -373,16 +374,16 @@ struct GraphEditorPanel::PluginComponent : public Component, pins.clear(); - for (int i = 0; i < f->getProcessor()->getTotalNumInputChannels(); ++i) + for (int i = 0; i < processor.getTotalNumInputChannels(); ++i) addAndMakeVisible (pins.add (new PinComponent (panel, { pluginID, i }, true))); - if (f->getProcessor()->acceptsMidi()) + if (processor.acceptsMidi()) addAndMakeVisible (pins.add (new PinComponent (panel, { pluginID, AudioProcessorGraph::midiChannelIndex }, true))); - for (int i = 0; i < f->getProcessor()->getTotalNumOutputChannels(); ++i) + for (int i = 0; i < processor.getTotalNumOutputChannels(); ++i) addAndMakeVisible (pins.add (new PinComponent (panel, { pluginID, i }, false))); - if (f->getProcessor()->producesMidi()) + if (processor.producesMidi()) addAndMakeVisible (pins.add (new PinComponent (panel, { pluginID, AudioProcessorGraph::midiChannelIndex }, false))); resized(); @@ -494,6 +495,7 @@ struct GraphEditorPanel::PluginComponent : public Component, int numIns = 0, numOuts = 0; DropShadowEffect shadow; std::unique_ptr menu; + const String formatSuffix = getFormatSuffix (getProcessor()); }; diff --git a/extras/AudioPluginHost/Source/UI/PluginWindow.h b/extras/AudioPluginHost/Source/UI/PluginWindow.h index 1f662bade8..13636d7985 100644 --- a/extras/AudioPluginHost/Source/UI/PluginWindow.h +++ b/extras/AudioPluginHost/Source/UI/PluginWindow.h @@ -27,6 +27,19 @@ #include "../Plugins/IOConfigurationWindow.h" +inline String getFormatSuffix (const AudioProcessor* plugin) +{ + const auto format = [plugin]() + { + if (auto* instance = dynamic_cast (plugin)) + return instance->getPluginDescription().pluginFormatName; + + return String(); + }(); + + return format.isNotEmpty() ? (" (" + format + ")") : format; +} + class PluginGraph; /** @@ -140,7 +153,7 @@ public: }; PluginWindow (AudioProcessorGraph::Node* n, Type t, OwnedArray& windowList) - : DocumentWindow (n->getProcessor()->getName(), + : DocumentWindow (n->getProcessor()->getName() + getFormatSuffix (n->getProcessor()), LookAndFeel::getDefaultLookAndFeel().findColour (ResizableWindow::backgroundColourId), DocumentWindow::minimiseButton | DocumentWindow::closeButton), activeWindowList (windowList),