From: <sv...@op...> - 2024-08-03 20:23:34
|
Author: sagamusix Date: Sat Aug 3 22:23:21 2024 New Revision: 21323 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21323 Log: [Ref] Convert VSTPluginLib::PluginCategory into enum class and move it out of the class. Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp trunk/OpenMPT/soundlib/plugins/PluginManager.cpp trunk/OpenMPT/soundlib/plugins/PluginManager.h Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp Sat Aug 3 18:50:26 2024 (r21322) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.cpp Sat Aug 3 22:23:21 2024 (r21323) @@ -309,34 +309,34 @@ static constexpr struct { - VSTPluginLib::PluginCategory category; + PluginCategory category; const TCHAR *description; } categories[] = { - { VSTPluginLib::catEffect, _T("Audio Effects") }, - { VSTPluginLib::catGenerator, _T("Tone Generators") }, - { VSTPluginLib::catRestoration, _T("Audio Restauration") }, - { VSTPluginLib::catSurroundFx, _T("Surround Effects") }, - { VSTPluginLib::catRoomFx, _T("Room Effects") }, - { VSTPluginLib::catSpacializer, _T("Spacializers") }, - { VSTPluginLib::catMastering, _T("Mastering Plugins") }, - { VSTPluginLib::catAnalysis, _T("Analysis Plugins") }, - { VSTPluginLib::catOfflineProcess, _T("Offline Processing") }, - { VSTPluginLib::catShell, _T("Shell Plugins") }, - { VSTPluginLib::catUnknown, _T("Unsorted") }, - { VSTPluginLib::catDMO, _T("DirectX Media Audio Effects") }, - { VSTPluginLib::catSynth, _T("Instrument Plugins") }, - { VSTPluginLib::catHidden, _T("Legacy Plugins") }, + { PluginCategory::Effect, _T("Audio Effects") }, + { PluginCategory::Generator, _T("Tone Generators") }, + { PluginCategory::Restoration, _T("Audio Restauration") }, + { PluginCategory::SurroundFx, _T("Surround Effects") }, + { PluginCategory::RoomFx, _T("Room Effects") }, + { PluginCategory::Spacializer, _T("Spacializers") }, + { PluginCategory::Mastering, _T("Mastering Plugins") }, + { PluginCategory::Analysis, _T("Analysis Plugins") }, + { PluginCategory::OfflineProcess, _T("Offline Processing") }, + { PluginCategory::Shell, _T("Shell Plugins") }, + { PluginCategory::Unknown, _T("Unsorted") }, + { PluginCategory::DMO, _T("DirectX Media Audio Effects") }, + { PluginCategory::Synth, _T("Instrument Plugins") }, + { PluginCategory::Hidden, _T("Legacy Plugins") }, }; const HTREEITEM noPlug = AddTreeItem(_T("No plugin (empty slot)"), IMAGE_NOPLUGIN, false); HTREEITEM currentPlug = noPlug; - std::bitset<VSTPluginLib::numCategories> categoryUsed; - HTREEITEM categoryFolders[VSTPluginLib::numCategories]; + std::bitset<uint8(PluginCategory::NumCategories)> categoryUsed; + HTREEITEM categoryFolders[uint8(PluginCategory::NumCategories)]; for(const auto &cat : categories) { - categoryFolders[cat.category] = AddTreeItem(cat.description, IMAGE_FOLDER, false); + categoryFolders[static_cast<uint32>(cat.category)] = AddTreeItem(cat.description, IMAGE_FOLDER, false); } enum PlugMatchQuality @@ -361,7 +361,7 @@ { MPT_ASSERT(p); const VSTPluginLib &plug = *p; - if(plug.category == VSTPluginLib::catHidden && (m_pPlugin == nullptr || m_pPlugin->pMixPlugin == nullptr || &m_pPlugin->pMixPlugin->GetPluginFactory() != p)) + if(plug.category == PluginCategory::Hidden && (m_pPlugin == nullptr || m_pPlugin->pMixPlugin == nullptr || &m_pPlugin->pMixPlugin->GetPluginFactory() != p)) continue; if(nameFilterActive) @@ -408,8 +408,8 @@ title += MPT_CFORMAT(" ({})")(plug.GetDllArchNameUser()); } #endif // MPT_WITH_VST - HTREEITEM h = AddTreeItem(title, plug.isInstrument ? IMAGE_PLUGININSTRUMENT : IMAGE_EFFECTPLUGIN, true, categoryFolders[plug.category], reinterpret_cast<LPARAM>(&plug)); - categoryUsed[plug.category] = true; + HTREEITEM h = AddTreeItem(title, plug.isInstrument ? IMAGE_PLUGININSTRUMENT : IMAGE_EFFECTPLUGIN, true, categoryFolders[static_cast<uint32>(plug.category)], reinterpret_cast<LPARAM>(&plug)); + categoryUsed[static_cast<uint32>(plug.category)] = true; if(nameFilterActive) { Modified: trunk/OpenMPT/soundlib/plugins/PluginManager.cpp ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PluginManager.cpp Sat Aug 3 18:50:26 2024 (r21322) +++ trunk/OpenMPT/soundlib/plugins/PluginManager.cpp Sat Aug 3 22:23:21 2024 (r21323) @@ -319,30 +319,30 @@ VSTPluginLib::CreateProc createProc; const char *filename, *name; uint32 pluginId1, pluginId2; - VSTPluginLib::PluginCategory category; + PluginCategory category; bool isInstrument, isOurs; } BuiltInPlugins[] = { // DirectX Media Objects Emulation - { DMO::Chorus::Create, "{EFE6629C-81F7-4281-BD91-C9D604A95AF6}", "Chorus", kDmoMagic, 0xEFE6629C, VSTPluginLib::catDMO, false, false }, - { DMO::Compressor::Create, "{EF011F79-4000-406D-87AF-BFFB3FC39D57}", "Compressor", kDmoMagic, 0xEF011F79, VSTPluginLib::catDMO, false, false }, - { DMO::Distortion::Create, "{EF114C90-CD1D-484E-96E5-09CFAF912A21}", "Distortion", kDmoMagic, 0xEF114C90, VSTPluginLib::catDMO, false, false }, - { DMO::Echo::Create, "{EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D}", "Echo", kDmoMagic, 0xEF3E932C, VSTPluginLib::catDMO, false, false }, - { DMO::Flanger::Create, "{EFCA3D92-DFD8-4672-A603-7420894BAD98}", "Flanger", kDmoMagic, 0xEFCA3D92, VSTPluginLib::catDMO, false, false }, - { DMO::Gargle::Create, "{DAFD8210-5711-4B91-9FE3-F75B7AE279BF}", "Gargle", kDmoMagic, 0xDAFD8210, VSTPluginLib::catDMO, false, false }, - { DMO::I3DL2Reverb::Create, "{EF985E71-D5C7-42D4-BA4D-2D073E2E96F4}", "I3DL2Reverb", kDmoMagic, 0xEF985E71, VSTPluginLib::catDMO, false, false }, - { DMO::ParamEq::Create, "{120CED89-3BF4-4173-A132-3CB406CF3231}", "ParamEq", kDmoMagic, 0x120CED89, VSTPluginLib::catDMO, false, false }, - { DMO::WavesReverb::Create, "{87FC0268-9A55-4360-95AA-004A1D9DE26C}", "WavesReverb", kDmoMagic, 0x87FC0268, VSTPluginLib::catDMO, false, false }, + { DMO::Chorus::Create, "{EFE6629C-81F7-4281-BD91-C9D604A95AF6}", "Chorus", kDmoMagic, 0xEFE6629C, PluginCategory::DMO, false, false }, + { DMO::Compressor::Create, "{EF011F79-4000-406D-87AF-BFFB3FC39D57}", "Compressor", kDmoMagic, 0xEF011F79, PluginCategory::DMO, false, false }, + { DMO::Distortion::Create, "{EF114C90-CD1D-484E-96E5-09CFAF912A21}", "Distortion", kDmoMagic, 0xEF114C90, PluginCategory::DMO, false, false }, + { DMO::Echo::Create, "{EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D}", "Echo", kDmoMagic, 0xEF3E932C, PluginCategory::DMO, false, false }, + { DMO::Flanger::Create, "{EFCA3D92-DFD8-4672-A603-7420894BAD98}", "Flanger", kDmoMagic, 0xEFCA3D92, PluginCategory::DMO, false, false }, + { DMO::Gargle::Create, "{DAFD8210-5711-4B91-9FE3-F75B7AE279BF}", "Gargle", kDmoMagic, 0xDAFD8210, PluginCategory::DMO, false, false }, + { DMO::I3DL2Reverb::Create, "{EF985E71-D5C7-42D4-BA4D-2D073E2E96F4}", "I3DL2Reverb", kDmoMagic, 0xEF985E71, PluginCategory::DMO, false, false }, + { DMO::ParamEq::Create, "{120CED89-3BF4-4173-A132-3CB406CF3231}", "ParamEq", kDmoMagic, 0x120CED89, PluginCategory::DMO, false, false }, + { DMO::WavesReverb::Create, "{87FC0268-9A55-4360-95AA-004A1D9DE26C}", "WavesReverb", kDmoMagic, 0x87FC0268, PluginCategory::DMO, false, false }, // First (inaccurate) Flanger implementation (will be chosen based on library name, shares ID1 and ID2 with regular Flanger) - { DMO::Flanger::CreateLegacy, "{EFCA3D92-DFD8-4672-A603-7420894BAD98}", "Flanger (Legacy)", kDmoMagic, 0xEFCA3D92, VSTPluginLib::catHidden, false, false }, + { DMO::Flanger::CreateLegacy, "{EFCA3D92-DFD8-4672-A603-7420894BAD98}", "Flanger (Legacy)", kDmoMagic, 0xEFCA3D92, PluginCategory::Hidden, false, false }, // DigiBooster Pro Echo DSP - { DigiBoosterEcho::Create, "", "DigiBooster Pro Echo", MagicLE("DBM0"), MagicLE("Echo"), VSTPluginLib::catRoomFx, false, true }, + { DigiBoosterEcho::Create, "", "DigiBooster Pro Echo", MagicLE("DBM0"), MagicLE("Echo"), PluginCategory::RoomFx, false, true }, // LFO - { LFOPlugin::Create, "", "LFO", MagicLE("OMPT"), MagicLE("LFO "), VSTPluginLib::catGenerator, false, true }, + { LFOPlugin::Create, "", "LFO", MagicLE("OMPT"), MagicLE("LFO "), PluginCategory::Generator, false, true }, // SymMOD Echo - { SymMODEcho::Create, "", "SymMOD Echo", MagicLE("SymM"), MagicLE("Echo"), VSTPluginLib::catRoomFx, false, true }, + { SymMODEcho::Create, "", "SymMOD Echo", MagicLE("SymM"), MagicLE("Echo"), PluginCategory::RoomFx, false, true }, #ifdef MODPLUG_TRACKER - { MidiInOut::Create, "", "MIDI Input Output", PLUGMAGIC('V','s','t','P'), PLUGMAGIC('M','M','I','D'), VSTPluginLib::catSynth, true, true }, + { MidiInOut::Create, "", "MIDI Input Output", PLUGMAGIC('V','s','t','P'), PLUGMAGIC('M','M','I','D'), PluginCategory::Synth, true, true }, #endif // MODPLUG_TRACKER }; @@ -451,7 +451,7 @@ pluginList.push_back(plug); plug->pluginId1 = kDmoMagic; plug->pluginId2 = clsid.Data1; - plug->category = VSTPluginLib::catDMO; + plug->category = PluginCategory::DMO; } catch(mpt::out_of_memory e) { mpt::delete_out_of_memory(e); @@ -479,15 +479,15 @@ static void GetPluginInformation(bool maskCrashes, Vst::AEffect *effect, VSTPluginLib &library) { unsigned long exception = 0; - library.category = static_cast<VSTPluginLib::PluginCategory>(CVstPlugin::DispatchSEH(maskCrashes, effect, Vst::effGetPlugCategory, 0, 0, nullptr, 0, exception)); + library.category = static_cast<PluginCategory>(CVstPlugin::DispatchSEH(maskCrashes, effect, Vst::effGetPlugCategory, 0, 0, nullptr, 0, exception)); library.isInstrument = ((effect->flags & Vst::effFlagsIsSynth) || !effect->numInputs); if(library.isInstrument) { - library.category = VSTPluginLib::catSynth; - } else if(library.category >= VSTPluginLib::numCategories) + library.category = PluginCategory::Synth; + } else if(library.category >= PluginCategory::NumCategories) { - library.category = VSTPluginLib::catUnknown; + library.category = PluginCategory::Unknown; } #ifdef MODPLUG_TRACKER Modified: trunk/OpenMPT/soundlib/plugins/PluginManager.h ============================================================================== --- trunk/OpenMPT/soundlib/plugins/PluginManager.h Sat Aug 3 18:50:26 2024 (r21322) +++ trunk/OpenMPT/soundlib/plugins/PluginManager.h Sat Aug 3 22:23:21 2024 (r21323) @@ -27,31 +27,30 @@ struct SNDMIXPLUGIN; enum PluginArch : int; -struct VSTPluginLib +enum class PluginCategory : uint8 { -public: - enum PluginCategory : uint8 - { - // Same plugin categories as defined in VST SDK - catUnknown = 0, - catEffect, // Simple Effect - catSynth, // VST Instrument (Synths, samplers,...) - catAnalysis, // Scope, Tuner, ... - catMastering, // Dynamics, ... - catSpacializer, // Panners, ... - catRoomFx, // Delays and Reverbs - catSurroundFx, // Dedicated surround processor - catRestoration, // Denoiser, ... - catOfflineProcess, // Offline Process - catShell, // Plug-in is container of other plug-ins - catGenerator, // Tone Generator, ... - // Custom categories - catDMO, // DirectX media object plugin - catHidden, // For internal plugins that should not be visible to the user (e.g. because they only exist for legacy reasons) + // Same plugin categories as defined in VST SDK + Unknown = 0, + Effect, // Simple Effect + Synth, // VST Instrument (Synths, samplers,...) + Analysis, // Scope, Tuner, ... + Mastering, // Dynamics, ... + Spacializer, // Panners, ... + RoomFx, // Delays and Reverbs + SurroundFx, // Dedicated surround processor + Restoration, // Denoiser, ... + OfflineProcess, // Offline Process + Shell, // Plug-in is container of other plug-ins + Generator, // Tone Generator, ... + // Custom categories + DMO, // DirectX media object plugin + Hidden, // For internal plugins that should not be visible to the user (e.g. because they only exist for legacy reasons) - numCategories - }; + NumCategories +}; +struct VSTPluginLib +{ public: using CreateProc = IMixPlugin *(*)(VSTPluginLib &factory, CSoundFile &sndFile, SNDMIXPLUGIN &mixStruct); @@ -68,7 +67,7 @@ #endif // MODPLUG_TRACKER int32 pluginId1 = 0; // Plugin type (kEffectMagic, kDmoMagic, ...) int32 pluginId2 = 0; // Plugin unique ID - PluginCategory category = catUnknown; + PluginCategory category = PluginCategory::Unknown; const bool isBuiltIn : 1; bool isInstrument : 1; bool useBridge : 1, shareBridgeInstance : 1, modernBridge : 1; @@ -87,7 +86,7 @@ , tags(tags) , vendor(vendor) #endif // MODPLUG_TRACKER - , category(catUnknown) + , category(PluginCategory::Unknown) , isBuiltIn(isBuiltIn), isInstrument(false) , useBridge(false), shareBridgeInstance(true), modernBridge(true) { @@ -117,7 +116,7 @@ { // Format: 00000000.0000000M.AAAAAASB.CCCCCCCI return (isInstrument ? 1 : 0) - | (category << 1) + | (static_cast<uint32>(category) << 1) | (useBridge ? 0x100 : 0) | (shareBridgeInstance ? 0x200 : 0) | ((dllArch / 8) << 10) @@ -128,14 +127,14 @@ void DecodeCacheFlags(uint32 flags) { category = static_cast<PluginCategory>((flags & 0xFF) >> 1); - if(category >= numCategories) + if(category >= PluginCategory::NumCategories) { - category = catUnknown; + category = PluginCategory::Unknown; } if(flags & 1) { isInstrument = true; - category = catSynth; + category = PluginCategory::Synth; } useBridge = (flags & 0x100) != 0; shareBridgeInstance = (flags & 0x200) != 0; |