1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-19 14:17:41 +02:00

Merge pull request #1206 from Paul-Licameli/Extract-lib-components

Extract lib components
This commit is contained in:
Paul Licameli 2021-07-13 14:43:27 -04:00 committed by GitHub
commit 06eae90100
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
60 changed files with 325 additions and 423 deletions

View File

@ -1,151 +0,0 @@
/**********************************************************************
Audacity: A Digital Audio Editor
ImporterInterface.h
Leland Lucius
Copyright (c) 2014, Audacity Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
**********************************************************************/
#ifndef __AUDACITY_IMPORTERINTERFACE_H__
#define __AUDACITY_IMPORTERINTERFACE_H__
#include "Identifier.h"
#include "audacity/ConfigInterface.h"
#include "audacity/ComponentInterface.h"
// ============================================================================
//
// ImporterInterface class
//
// ============================================================================
class ImporterHostInterface;
class ImporterClientInterface;
class ImporterInterface : public ComponentInterface
{
public:
virtual ~ImporterInterface() {};
// Get unique string ID of this plugin, usually it corresponds
// to the underlying library, i.e. "libsndfile", "libflac", "libav"
// These MUST NOT change across Audacity versions (but new IDs can
// be added).
virtual wxString GetPluginStringID() = 0;
// Get a description of the file type this importer can import.
// Examples: "Ogg Vorbis", "MP3", "Uncompressed PCM"
virtual TranslatableString GetPluginFormatDescription() = 0;
// Get a list of extensions this plugin expects to be able to
// import. If a filename matches any of these extensions,
// this importer will get first dibs on importing it.
virtual FileExtensions GetSupportedExtensions() = 0;
virtual bool SupportsExtension(const FileExtension & extension) = 0;
// Create the client that will be used to import a file.
virtual ImporterClientInterface *CreateClient() = 0;
};
// ============================================================================
//
// ImporterHostInterface class
//
// ============================================================================
class ImporterHostInterface
{
public:
virtual ~ImporterHostInterface() {};
// Called by the client to add a new stream to the import.
virtual bool AddStream(int stream,
sampleFormat sampleformat,
float sampleRate,
int numChannels,
ChannelName *channelMap) = 0;
// Accepts interleaved samples from the client.
virtual bool PutSamples(int stream, size_t numSamples, samplePtr inBuffer) = 0;
// Accepts non-interleaved samples from the client.
virtual bool PutSamples(int stream, int channel, size_t numSamples, samplePtr inBuffer) = 0;
// The client will call this as the import progresses.
virtual bool UpdateProgress(float current, float total) = 0;
};
// ============================================================================
//
// ImporterClientInterface class
//
// ============================================================================
class ImporterClientInterface
{
public:
virtual ~ImporterClientInterface() {};
// Provides a pointer to the associated host for this importer.
virtual void SetHost(ImporterHostInterface *host) = 0;
// Open the given file, returning true if it is a recognized
// format, false otherwise. This puts the importer into the open
// state.
virtual bool Open(const wxString & fileName) = 0;
// Do any processing necessary to close the file and release resources.
// This will be called only if Open() succeeded.
virtual void Close() = 0;
// This is similar to GetImporterDescription, but if possible the
// importer will return a more specific description of the
// specific file that is open.
virtual TranslatableString GetFileDescription() = 0;
// Return stream descriptions list
virtual void GetStreamInfo(wxArrayString & streamInfo) = 0;
// Set stream "import/don't import" flag
virtual void SetStreamUsage(int streamID, bool use) = 0;
// do the actual import, creating whatever tracks are necessary with
// the WaveTrackFactory and calling the progress callback every iteration
// through the importing loop
virtual bool Import() = 0;
};
#endif // __AUDACITY_IMPORTERINTERFACE_H__

View File

@ -219,54 +219,4 @@ typedef const char *constSamplePtr;
// ----------------------------------------------------------------------------
typedef wxString PluginID;
// ----------------------------------------------------------------------------
// Supported channel assignments
// ----------------------------------------------------------------------------
typedef enum
{
// Use to mark end of list
ChannelNameEOL = -1,
// The default channel assignment
ChannelNameMono,
// From this point, the channels follow the 22.2 surround sound format
ChannelNameFrontLeft,
ChannelNameFrontRight,
ChannelNameFrontCenter,
ChannelNameLowFrequency1,
ChannelNameBackLeft,
ChannelNameBackRight,
ChannelNameFrontLeftCenter,
ChannelNameFrontRightCenter,
ChannelNameBackCenter,
ChannelNameLowFrequency2,
ChannelNameSideLeft,
ChannelNameSideRight,
ChannelNameTopFrontLeft,
ChannelNameTopFrontRight,
ChannelNameTopFrontCenter,
ChannelNameTopCenter,
ChannelNameTopBackLeft,
ChannelNameTopBackRight,
ChannelNameTopSideLeft,
ChannelNameTopSideRight,
ChannelNameTopBackCenter,
ChannelNameBottomFrontCenter,
ChannelNameBottomFrontLeft,
ChannelNameBottomFrontRight,
} ChannelName, *ChannelNames;
// ----------------------------------------------------------------------------
// some frequently needed forward declarations
// ----------------------------------------------------------------------------
class ComponentInterfaceSymbol;
using EnumValueSymbol = ComponentInterfaceSymbol;
using NumericFormatSymbol = EnumValueSymbol;
using VendorSymbol = ComponentInterfaceSymbol;
using EffectFamilySymbol = ComponentInterfaceSymbol;
#endif // __AUDACITY_TYPES_H__

View File

@ -7,6 +7,7 @@ set( LIBRARIES
lib-strings
lib-utility
lib-uuid
lib-components
)
if ( ${_OPT}has_networking )

View File

@ -0,0 +1,29 @@
#[[
Various abstract base classes related to modules and plugins.
ComponentInterfaceSymbol, which pairs an internal identifier string (suitable
for storing as a configuration file value) with a user-visible translatable
string. It serves to "name" various things.
CommandParameters, for write and reading key-value pairs to and from strings.
]]#
list( APPEND SOURCES
ComponentInterface.cpp
ComponentInterface.h
ComponentInterfaceSymbol.h
ConfigInterface.cpp
ConfigInterface.h
EffectAutomationParameters.cpp
EffectAutomationParameters.h
EffectInterface.cpp
EffectInterface.h
ModuleInterface.cpp
ModuleInterface.h
PluginInterface.cpp
PluginInterface.h
)
audacity_library( lib-components "${SOURCES}"
"lib-strings-interface;PRIVATE;wxBase"
"" ""
)

View File

@ -0,0 +1,10 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file ComponentInterface.cpp
**********************************************************************/
#include "ComponentInterface.h"
ComponentInterface::~ComponentInterface() = default;

View File

@ -43,71 +43,11 @@
#define __AUDACITY_COMPONENT_INTERFACE_H__
#include "Identifier.h"
#include "audacity/Types.h"
#include "Internat.h"
#include <wx/string.h> // member variables
STRINGS_API const wxString& GetCustomTranslation(const wxString& str1 );
/**************************************************************************//**
\brief ComponentInterfaceSymbol pairs a persistent string identifier used internally
with an optional, different string as msgid for lookup in a translation catalog.
\details If there is need to change a msgid in a later version of the
program, change the constructor call to supply a second argument but leave the
first the same, so that compatibility of older configuration files containing
that internal string is not broken.
********************************************************************************/
class ComponentInterfaceSymbol
{
public:
ComponentInterfaceSymbol() = default;
// Allows implicit construction from a msgid re-used as an internal string
ComponentInterfaceSymbol( const TranslatableString &msgid )
: mInternal{ msgid.MSGID().GET(), }, mMsgid{ msgid }
{}
// Allows implicit construction from an internal string re-used as a msgid
ComponentInterfaceSymbol( const wxString &internal )
: mInternal{ internal }, mMsgid{ internal, {} }
{}
// Allows implicit construction from an internal string re-used as a msgid
ComponentInterfaceSymbol( const wxChar *msgid )
: mInternal{ msgid }, mMsgid{ msgid, {} }
{}
// Two-argument version distinguishes internal from translatable string
// such as when the first squeezes spaces out
ComponentInterfaceSymbol( const Identifier &internal,
const TranslatableString &msgid )
: mInternal{ internal.GET() }
// Do not permit non-empty msgid with empty internal
, mMsgid{ internal.empty() ? TranslatableString{} : msgid }
{}
const wxString &Internal() const { return mInternal; }
const TranslatableString &Msgid() const { return mMsgid; }
const TranslatableString Stripped() const { return mMsgid.Stripped(); }
const wxString Translation() const { return mMsgid.Translation(); }
const wxString StrippedTranslation() const
{ return Stripped().Translation(); }
bool empty() const { return mInternal.empty(); }
friend inline bool operator == (
const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b )
{ return a.mInternal == b.mInternal; }
friend inline bool operator != (
const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b )
{ return !( a == b ); }
private:
wxString mInternal;
TranslatableString mMsgid;
};
class ComponentInterfaceSymbol;
using VendorSymbol = ComponentInterfaceSymbol;
class ShuttleParams;
@ -118,10 +58,10 @@ plugins. It is what makes a class a plug-in. Additionally it provides an
optional parameter definitions function, for those components such as commands,
effects and (soon) preference pagess that define parameters.
********************************************************************************/
class AUDACITY_DLL_API ComponentInterface /* not final */
class COMPONENTS_API ComponentInterface /* not final */
{
public:
virtual ~ComponentInterface() {};
virtual ~ComponentInterface();
// These should return an untranslated value
virtual PluginPath GetPath() = 0;

View File

@ -0,0 +1,82 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file ComponentInterfaceSymbol.h
Paul Licameli split from ComponentInterface.h
**********************************************************************/
#ifndef __AUDACITY_COMPONENT_INTERFACE_SYMBOL__
#define __AUDACITY_COMPONENT_INTERFACE_SYMBOL__
#include "Identifier.h"
#include "Internat.h"
/**************************************************************************//**
\brief ComponentInterfaceSymbol pairs a persistent string identifier used internally
with an optional, different string as msgid for lookup in a translation catalog.
\details If there is need to change a msgid in a later version of the
program, change the constructor call to supply a second argument but leave the
first the same, so that compatibility of older configuration files containing
that internal string is not broken.
********************************************************************************/
class ComponentInterfaceSymbol
{
public:
ComponentInterfaceSymbol() = default;
// Allows implicit construction from a msgid re-used as an internal string
ComponentInterfaceSymbol( const TranslatableString &msgid )
: mInternal{ msgid.MSGID().GET(), }, mMsgid{ msgid }
{}
// Allows implicit construction from an internal string re-used as a msgid
ComponentInterfaceSymbol( const wxString &internal )
: mInternal{ internal }, mMsgid{ internal, {} }
{}
// Allows implicit construction from an internal string re-used as a msgid
ComponentInterfaceSymbol( const wxChar *msgid )
: mInternal{ msgid }, mMsgid{ msgid, {} }
{}
// Two-argument version distinguishes internal from translatable string
// such as when the first squeezes spaces out
ComponentInterfaceSymbol( const Identifier &internal,
const TranslatableString &msgid )
: mInternal{ internal.GET() }
// Do not permit non-empty msgid with empty internal
, mMsgid{ internal.empty() ? TranslatableString{} : msgid }
{}
const wxString &Internal() const { return mInternal; }
const TranslatableString &Msgid() const { return mMsgid; }
const TranslatableString Stripped() const { return mMsgid.Stripped(); }
const wxString Translation() const { return mMsgid.Translation(); }
const wxString StrippedTranslation() const
{ return Stripped().Translation(); }
bool empty() const { return mInternal.empty(); }
friend inline bool operator == (
const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b )
{ return a.mInternal == b.mInternal; }
friend inline bool operator != (
const ComponentInterfaceSymbol &a, const ComponentInterfaceSymbol &b )
{ return !( a == b ); }
private:
wxString mInternal;
TranslatableString mMsgid;
};
// TODO: real type distinctions for these aliases, and move them elsewhere
using EnumValueSymbol = ComponentInterfaceSymbol;
using NumericFormatSymbol = EnumValueSymbol;
using EffectFamilySymbol = ComponentInterfaceSymbol;
#endif

View File

@ -0,0 +1,10 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file ConfigInterface.cpp
**********************************************************************/
#include "ConfigInterface.h"
ConfigClientInterface::~ConfigClientInterface() = default;

View File

@ -43,6 +43,7 @@
#define __AUDACITY_CONFIGINTERFACE_H__
#include "Identifier.h"
#include <vector>
/*************************************************************************************//**
@ -53,10 +54,10 @@ differentiates between private and shared config. It should probably be replace
with a Shuttle.
*******************************************************************************************/
class AUDACITY_DLL_API ConfigClientInterface /* not final */
class COMPONENTS_API ConfigClientInterface /* not final */
{
public:
virtual ~ConfigClientInterface() {};
virtual ~ConfigClientInterface();
virtual bool HasSharedConfigGroup(const RegistryPath & group) = 0;
virtual bool GetSharedConfigSubgroups(const RegistryPath & group, RegistryPaths & subgroups) = 0;
@ -95,20 +96,4 @@ public:
virtual bool RemovePrivateConfig(const RegistryPath & group, const RegistryPath & key) = 0;
};
#if 0
/*************************************************************************************//**
\class ConfigHostInterface
\brief ConfigHostInterface appears not to be used.
*******************************************************************************************/
class ConfigHostInterface
{
public:
virtual ~ConfigHostInterface() {};
};
#endif
#endif // __AUDACITY_CONFIGINTERFACE_H__

View File

@ -0,0 +1,10 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file EffectAutomationParameters.cpp
**********************************************************************/
#include "EffectAutomationParameters.h"
CommandParameters::~CommandParameters() = default;

View File

@ -50,7 +50,7 @@
#include <algorithm>
#include "ComponentInterface.h"
#include "ComponentInterfaceSymbol.h"
/**
\brief CommandParameters, derived from wxFileConfig, is essentially doing
@ -63,7 +63,7 @@ wxWidget validators, and can create default dialogs. However until that convers
done, we need this class, and we use a pointer to one from within a Shuttle when interfacing
with the code that still uses it.
*/
class CommandParameters final : public wxFileConfig
class COMPONENTS_API CommandParameters final : public wxFileConfig
{
public:
CommandParameters(const wxString & parms = {})
@ -77,9 +77,7 @@ public:
SetParameters(parms);
}
virtual ~CommandParameters()
{
}
virtual ~CommandParameters();
virtual bool HasGroup(const wxString & strName) const override
{

View File

@ -0,0 +1,18 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file EffectInterface.cpp
**********************************************************************/
#include "EffectInterface.h"
EffectDefinitionInterface::~EffectDefinitionInterface() = default;
EffectHostInterface::~EffectHostInterface() = default;
EffectClientInterface::~EffectClientInterface() = default;
EffectUIHostInterface::~EffectUIHostInterface() = default;
EffectUIClientInterface::~EffectUIClientInterface() = default;

View File

@ -44,10 +44,10 @@
#include <functional>
#include "Identifier.h"
#include "audacity/ComponentInterface.h"
#include "audacity/ConfigInterface.h"
#include "audacity/EffectAutomationParameters.h" // for command automation
#include "ComponentInterface.h"
#include "ComponentInterfaceSymbol.h"
#include "ConfigInterface.h"
#include "EffectAutomationParameters.h" // for command automation
class ShuttleGui;
@ -62,6 +62,8 @@ typedef enum EffectType : int
} EffectType;
using EffectFamilySymbol = ComponentInterfaceSymbol;
/*************************************************************************************//**
\class EffectDefinitionInterface
@ -70,15 +72,15 @@ typedef enum EffectType : int
flag-functions for interactivity, play-preview and whether the effect can run without a GUI.
*******************************************************************************************/
class AUDACITY_DLL_API EffectDefinitionInterface /* not final */ : public ComponentInterface
class COMPONENTS_API EffectDefinitionInterface /* not final */ : public ComponentInterface
{
public:
virtual ~EffectDefinitionInterface() {};
virtual ~EffectDefinitionInterface();
// Type determines how it behaves.
virtual EffectType GetType() = 0;
// Classification determines which menu it appears in.
virtual EffectType GetClassification() { return GetType();};
virtual EffectType GetClassification() { return GetType();}
virtual EffectFamilySymbol GetFamily() = 0;
@ -115,10 +117,10 @@ virtual (abstract) functions to get presets and actually apply the effect. It u
ConfigClientInterface to add Getters/setters for private and shared configs.
*******************************************************************************************/
class AUDACITY_DLL_API EffectHostInterface /* not final */ : public ConfigClientInterface
class COMPONENTS_API EffectHostInterface /* not final */ : public ConfigClientInterface
{
public:
virtual ~EffectHostInterface() {};
virtual ~EffectHostInterface();
virtual double GetDefaultDuration() = 0;
virtual double GetDuration() = 0;
@ -131,6 +133,45 @@ public:
virtual RegistryPath GetFactoryDefaultsGroup() = 0;
};
class sampleCount;
// ----------------------------------------------------------------------------
// Supported channel assignments
// ----------------------------------------------------------------------------
typedef enum
{
// Use to mark end of list
ChannelNameEOL = -1,
// The default channel assignment
ChannelNameMono,
// From this point, the channels follow the 22.2 surround sound format
ChannelNameFrontLeft,
ChannelNameFrontRight,
ChannelNameFrontCenter,
ChannelNameLowFrequency1,
ChannelNameBackLeft,
ChannelNameBackRight,
ChannelNameFrontLeftCenter,
ChannelNameFrontRightCenter,
ChannelNameBackCenter,
ChannelNameLowFrequency2,
ChannelNameSideLeft,
ChannelNameSideRight,
ChannelNameTopFrontLeft,
ChannelNameTopFrontRight,
ChannelNameTopFrontCenter,
ChannelNameTopCenter,
ChannelNameTopBackLeft,
ChannelNameTopBackRight,
ChannelNameTopSideLeft,
ChannelNameTopSideRight,
ChannelNameTopBackCenter,
ChannelNameBottomFrontCenter,
ChannelNameBottomFrontLeft,
ChannelNameBottomFrontRight,
} ChannelName, *ChannelNames;
/*************************************************************************************//**
\class EffectClientInterface
@ -140,7 +181,7 @@ Effect into a plug-in command. It has functions for realtime that are not part
AudacityCommand.
*******************************************************************************************/
class AUDACITY_DLL_API EffectClientInterface /* not final */ : public EffectDefinitionInterface
class COMPONENTS_API EffectClientInterface /* not final */ : public EffectDefinitionInterface
{
public:
using EffectDialogFactory = std::function<
@ -148,7 +189,7 @@ public:
EffectHostInterface*, EffectUIClientInterface* )
>;
virtual ~EffectClientInterface() {};
virtual ~EffectClientInterface();
virtual bool SetHost(EffectHostInterface *host) = 0;
@ -212,10 +253,10 @@ can call SetHostUI passing in a pointer to an EffectUIHostInterface. It contain
functionality and is provided, apparently, for type checking. Since only EffectUIHost
uses it, EffectUIHost could be used instead.
*******************************************************************************************/
class AUDACITY_DLL_API EffectUIHostInterface
class COMPONENTS_API EffectUIHostInterface
{
public:
virtual ~EffectUIHostInterface() {};
virtual ~EffectUIHostInterface();
};
/*************************************************************************************//**
@ -226,10 +267,10 @@ public:
values. It can import and export presets.
*******************************************************************************************/
class AUDACITY_DLL_API EffectUIClientInterface /* not final */
class COMPONENTS_API EffectUIClientInterface /* not final */
{
public:
virtual ~EffectUIClientInterface() {};
virtual ~EffectUIClientInterface();
virtual void SetHostUI(EffectUIHostInterface *host) = 0;
virtual bool IsGraphicalUI() = 0;
@ -246,24 +287,4 @@ public:
virtual void ShowOptions() = 0;
};
/*************************************************************************************//**
\class EffectManagerInterface
\brief UNUSED. EffectManagerInterface provides a single function to find files matching
a pattern in a list.
*******************************************************************************************/
class AUDACITY_DLL_API EffectManagerInterface
{
public:
virtual ~EffectManagerInterface() {};
virtual void FindFilesInPathList(const wxString & pattern,
const FilePaths & pathList,
FilePaths & files,
int searchFlags) = 0;
};
#endif // __AUDACITY_EFFECTINTERFACE_H__

View File

@ -0,0 +1,10 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file ModuleInterface.cpp
**********************************************************************/
#include "ModuleInterface.h"
ModuleInterface::~ModuleInterface() = default;

View File

@ -45,8 +45,8 @@
#include <functional>
#include <memory>
#include "Identifier.h"
#include "audacity/ComponentInterface.h"
#include "audacity/PluginInterface.h"
#include "ComponentInterface.h"
#include "PluginInterface.h"
// ============================================================================
//
@ -65,10 +65,11 @@
///
// ============================================================================
class ModuleInterface /* not final */ : public ComponentInterface
class COMPONENTS_API ModuleInterface /* not final */
: public ComponentInterface
{
public:
virtual ~ModuleInterface() {};
virtual ~ModuleInterface();
// Called immediately after creation to give the instance a chance to
// initialize. Return "true" if initialziation was successful.

View File

@ -0,0 +1,10 @@
/**********************************************************************
Audacity: A Digital Audio Editor
@file PluginInterface.cpp
**********************************************************************/
#include "PluginInterface.h"
PluginManagerInterface::~PluginManagerInterface() = default;

View File

@ -42,19 +42,21 @@
#ifndef __AUDACITY_PLUGININTERFACE_H__
#define __AUDACITY_PLUGININTERFACE_H__
#include "audacity/ConfigInterface.h"
#include "audacity/EffectInterface.h"
#include "audacity/ComponentInterface.h"
#include "audacity/ImporterInterface.h"
#include "ConfigInterface.h"
#include "EffectInterface.h"
#include "ComponentInterface.h"
#include "Identifier.h"
class ModuleInterface;
using PluginID = wxString;
using PluginIDs = wxArrayString;
class AUDACITY_DLL_API PluginManagerInterface /* not final */
class COMPONENTS_API PluginManagerInterface /* not final */
{
public:
virtual ~PluginManagerInterface();
static const PluginID &DefaultRegistrationCallback(
ModuleInterface *provider, ComponentInterface *ident );
static const PluginID &AudacityCommandRegistrationCallback(
@ -72,7 +74,6 @@ public:
virtual const PluginID & RegisterPlugin(ModuleInterface *module) = 0;
virtual const PluginID & RegisterPlugin(ModuleInterface *provider, EffectDefinitionInterface *effect, int type) = 0;
virtual const PluginID & RegisterPlugin(ModuleInterface *provider, ImporterInterface *importer) = 0;
virtual void FindFilesInPathList(const wxString & pattern,
const FilePaths & pathList,

View File

@ -16,7 +16,7 @@
#include "export/Export.h"
#include "commands/CommandFlag.h"
#include "audacity/ComponentInterface.h" // for ComponentInterfaceSymbol
#include "ComponentInterface.h" // for ComponentInterfaceSymbol
class wxArrayString;
class Effect;

View File

@ -1006,14 +1006,7 @@ list( APPEND SOURCES
#
#
list( APPEND HEADERS
../include/audacity/EffectInterface.h
../include/audacity/Types.h
../include/audacity/ConfigInterface.h
../include/audacity/ModuleInterface.h
../include/audacity/PluginInterface.h
../include/audacity/ComponentInterface.h
../include/audacity/EffectAutomationParameters.h
../include/audacity/ImporterInterface.h
)
#

View File

@ -18,6 +18,7 @@ Describes shared object that is used to access FFmpeg libraries.
#include "audacity/Types.h"
#include "widgets/wxPanelWrapper.h" // to inherit
#if defined(__WXMSW__)

View File

@ -15,7 +15,7 @@
#include <wx/defs.h>
#include "widgets/wxPanelWrapper.h" // to inherit
#include "audacity/ComponentInterface.h" // member variable
#include "ComponentInterface.h" // member variable
class wxArrayString;
class wxGridEvent;

View File

@ -20,7 +20,7 @@ i.e. an alternative to the usual interface, for Audacity.
#include "ModuleManager.h"
#include "audacity/ModuleInterface.h"
#include "ModuleInterface.h"
@ -32,7 +32,7 @@ i.e. an alternative to the usual interface, for Audacity.
#include "FileNames.h"
#include "MemoryX.h"
#include "audacity/PluginInterface.h"
#include "PluginInterface.h"
#ifdef EXPERIMENTAL_MODULE_PREFS
#include "Prefs.h"

View File

@ -66,7 +66,6 @@ using ModuleInterfaceHandle = std::unique_ptr<
typedef std::map<wxString, ModuleInterfaceHandle> ModuleMap;
typedef std::map<ModuleInterface *, std::unique_ptr<wxDynamicLibrary>> LibraryMap;
using PluginIDs = wxArrayString;
class AUDACITY_DLL_API ModuleManager final
{

View File

@ -28,7 +28,7 @@ for shared and private configs - which need to move out.
#include <wx/log.h>
#include <wx/tokenzr.h>
#include "audacity/ModuleInterface.h"
#include "ModuleInterface.h"
#include "AudacityFileConfig.h"
#include "Internat.h" // for macro XO
@ -436,18 +436,6 @@ const PluginID & PluginManager::RegisterPlugin(ModuleInterface *provider, Effect
return plug.GetID();
}
const PluginID & PluginManager::RegisterPlugin(ModuleInterface *provider, ImporterInterface *importer)
{
PluginDescriptor & plug = CreatePlugin(GetID(importer), importer, PluginTypeImporter);
plug.SetProviderID(PluginManager::GetID(provider));
plug.SetImporterIdentifier(importer->GetPluginStringID());
plug.SetImporterExtensions(importer->GetSupportedExtensions());
return plug.GetID();
}
void PluginManager::FindFilesInPathList(const wxString & pattern,
const FilePaths & pathList,
FilePaths & files,
@ -1582,16 +1570,6 @@ PluginID PluginManager::GetID(EffectDefinitionInterface *effect)
effect->GetPath());
}
PluginID PluginManager::GetID(ImporterInterface *importer)
{
return wxString::Format(wxT("%s_%s_%s_%s_%s"),
GetPluginTypeString(PluginTypeImporter),
wxEmptyString,
importer->GetVendor().Internal(),
importer->GetSymbol().Internal(),
importer->GetPath());
}
// This string persists in configuration files
// So config compatibility will break if it is changed across Audacity versions
wxString PluginManager::GetPluginTypeString(PluginType type)

View File

@ -17,9 +17,8 @@
#include <map>
#include <memory>
#include "audacity/EffectInterface.h"
#include "audacity/ImporterInterface.h"
#include "audacity/PluginInterface.h"
#include "EffectInterface.h"
#include "PluginInterface.h"
class wxArrayString;
class FileConfig;
@ -186,7 +185,6 @@ public:
const PluginID & RegisterPlugin(ModuleInterface *module) override;
const PluginID & RegisterPlugin(ModuleInterface *provider, ComponentInterface *command);
const PluginID & RegisterPlugin(ModuleInterface *provider, EffectDefinitionInterface *effect, int type) override;
const PluginID & RegisterPlugin(ModuleInterface *provider, ImporterInterface *importer) override;
void FindFilesInPathList(const wxString & pattern,
const FilePaths & pathList,
@ -240,7 +238,6 @@ public:
static PluginID GetID(ComponentInterface *command);
static PluginID GetID(EffectDefinitionInterface *effect);
static PluginID GetID(ImporterInterface *importer);
// This string persists in configuration files
// So config compatibility will break if it is changed across Audacity versions

View File

@ -9,7 +9,7 @@
**********************************************************************/
#include "PluginRegistrationDialog.h"
#include "audacity/EffectInterface.h"
#include "EffectInterface.h"
#include "ModuleManager.h"
#include "PluginManager.h"
#include "ShuttleGui.h"

View File

@ -38,7 +38,8 @@
#include <functional>
#include "../include/audacity/ComponentInterface.h"
#include "ComponentInterface.h"
#include "ComponentInterfaceSymbol.h"
#include "wxArrayStringEx.h"
#include "widgets/FileConfig.h"

View File

@ -14,6 +14,7 @@ Paul Licameli split from ProjectManager.cpp
#include "ClientData.h" // to inherit
#include "toolbars/SelectionBarListener.h" // to inherit
#include "toolbars/SpectralSelectionBarListener.h" // to inherit
#include "ComponentInterfaceSymbol.h"
class AudacityProject;

View File

@ -25,7 +25,7 @@
#include "Resample.h"
#include "Prefs.h"
#include "Internat.h"
#include "../include/audacity/ComponentInterface.h"
#include "ComponentInterface.h"
#include <soxr.h>

View File

@ -65,7 +65,7 @@ preferences.
#include <wx/radiobut.h>
#include <wx/button.h>
#include "../include/audacity/EffectAutomationParameters.h" // for command automation
#include "EffectAutomationParameters.h" // for command automation
#include "WrappedType.h"
//#include "effects/Effect.h"

View File

@ -11,7 +11,8 @@
#ifndef __AUDACITY_SHUTTLE__
#define __AUDACITY_SHUTTLE__
#include "../include/audacity/ComponentInterface.h"
#include "ComponentInterface.h"
#include "ComponentInterfaceSymbol.h"
class ComponentInterfaceSymbol;
class WrappedType;

View File

@ -9,6 +9,7 @@
**********************************************************************/
#include "ShuttleGetDefinition.h"
#include "ComponentInterfaceSymbol.h"
bool ShuttleGetDefinition::IsOptional(){
bool result = pOptionalFlag !=NULL;

View File

@ -113,7 +113,7 @@ for registering for changes.
#include <wx/spinctrl.h>
#include <wx/stattext.h>
#include <wx/bmpbuttn.h>
#include "../include/audacity/ComponentInterface.h"
#include "ComponentInterface.h"
#include "widgets/ReadOnlyText.h"
#include "widgets/wxPanelWrapper.h"
#include "widgets/wxTextCtrlWrapper.h"

View File

@ -24,6 +24,7 @@
#include "Prefs.h"
#include "WrappedType.h"
#include "ComponentInterfaceSymbol.h"
class ChoiceSetting;
@ -746,8 +747,6 @@ public:
teShuttleMode GetMode() { return mShuttleMode; };
};
class ComponentInterfaceSymbol;
//! Convenience function often useful when adding choice controls
AUDACITY_DLL_API TranslatableStrings Msgids(
const EnumValueSymbol strings[], size_t nStrings);

View File

@ -13,7 +13,7 @@
#include <wx/defs.h>
#include "audacity/ComponentInterface.h" // member variable
#include "ComponentInterface.h" // member variable
#include "widgets/wxPanelWrapper.h" // to inherit

View File

@ -35,7 +35,7 @@ ShuttleGui.
#include <wx/utils.h>
#include <wx/log.h>
#include "audacity/ConfigInterface.h"
#include "ConfigInterface.h"
#include "../Shuttle.h"
#include "../ShuttleGui.h"

View File

@ -20,8 +20,8 @@
#include "../widgets/wxPanelWrapper.h" // to inherit
#include "../include/audacity/ComponentInterface.h"
#include "../include/audacity/EffectAutomationParameters.h" // for command automation
#include "ComponentInterface.h"
#include "EffectAutomationParameters.h" // for command automation
#include "../Registrar.h"

View File

@ -12,7 +12,7 @@
#ifndef __AUDACITY_LOAD_COMMANDS__
#define __AUDACITY_LOAD_COMMANDS__
#include "audacity/ModuleInterface.h"
#include "ModuleInterface.h"
#include <functional>
#include <memory>

View File

@ -25,8 +25,8 @@ class wxChoice;
class wxListBox;
class wxWindow;
#include "audacity/ConfigInterface.h"
#include "audacity/EffectInterface.h"
#include "ConfigInterface.h"
#include "EffectInterface.h"
#include "../SelectedRegion.h"

View File

@ -16,7 +16,7 @@
#include <vector>
#include <unordered_map>
#include "audacity/EffectInterface.h"
#include "EffectInterface.h"
#include "Identifier.h"
class AudacityCommand;

View File

@ -16,6 +16,9 @@
#include <wx/bitmap.h> // member variables
#include "Identifier.h"
#include "PluginInterface.h"
#if defined(EXPERIMENTAL_EFFECTS_RACK)
#include <vector>
@ -102,8 +105,8 @@ private:
#endif
#include "audacity/EffectInterface.h"
#include "../widgets/wxPanelWrapper.h" // to inherit
#include "EffectInterface.h"
#include "widgets/wxPanelWrapper.h" // to inherit
#include "../SelectedRegion.h"

View File

@ -11,7 +11,7 @@
#ifndef __AUDACITY_LOAD_EFFECTS__
#define __AUDACITY_LOAD_EFFECTS__
#include "audacity/ModuleInterface.h"
#include "ModuleInterface.h"
#include <functional>
#include <memory>

View File

@ -11,7 +11,7 @@
#include "RealtimeEffectManager.h"
#include "audacity/EffectInterface.h"
#include "EffectInterface.h"
#include <memory>
#include <atomic>

View File

@ -94,7 +94,7 @@
#include "../../widgets/WindowAccessible.h"
#endif
#include "audacity/ConfigInterface.h"
#include "ConfigInterface.h"
#include <cstring>

View File

@ -12,9 +12,9 @@
#if USE_VST
#include "audacity/EffectInterface.h"
#include "audacity/ModuleInterface.h"
#include "audacity/PluginInterface.h"
#include "EffectInterface.h"
#include "ModuleInterface.h"
#include "PluginInterface.h"
#include "../../SampleFormat.h"
#include "../../xml/XMLTagHandler.h"

View File

@ -21,9 +21,9 @@
#include <AudioUnit/AudioUnit.h>
#include <AudioUnit/AudioUnitProperties.h>
#include "audacity/EffectInterface.h"
#include "audacity/ModuleInterface.h"
#include "audacity/PluginInterface.h"
#include "EffectInterface.h"
#include "ModuleInterface.h"
#include "PluginInterface.h"
#include "AUControl.h"

View File

@ -18,9 +18,9 @@ class NumericTextCtrl;
#include <wx/dynlib.h> // member variable
#include <wx/event.h> // to inherit
#include "audacity/EffectInterface.h"
#include "audacity/ModuleInterface.h"
#include "audacity/PluginInterface.h"
#include "EffectInterface.h"
#include "ModuleInterface.h"
#include "PluginInterface.h"
#include "ladspa.h"
#include "../../SampleFormat.h"

View File

@ -31,9 +31,9 @@
#include "lv2/uri-map/uri-map.h"
#include "lv2/units/units.h"
#include "audacity/ModuleInterface.h"
#include "audacity/EffectInterface.h"
#include "audacity/PluginInterface.h"
#include "ModuleInterface.h"
#include "EffectInterface.h"
#include "PluginInterface.h"
#include "lv2_external_ui.h"

View File

@ -8,9 +8,9 @@
**********************************************************************/
#include "audacity/ModuleInterface.h"
#include "audacity/EffectInterface.h"
#include "audacity/PluginInterface.h"
#include "ModuleInterface.h"
#include "EffectInterface.h"
#include "PluginInterface.h"
///////////////////////////////////////////////////////////////////////////////
//

View File

@ -14,9 +14,9 @@
#include <memory>
#include "audacity/ModuleInterface.h"
#include "audacity/EffectInterface.h"
#include "audacity/PluginInterface.h"
#include "ModuleInterface.h"
#include "EffectInterface.h"
#include "PluginInterface.h"
#include <vamp-hostsdk/PluginLoader.h>

View File

@ -1,5 +1,3 @@
#include "../CommonCommandFlags.h"
#include "../Menus.h"
#include "../Prefs.h"

View File

@ -29,7 +29,7 @@ MousePrefs, QualityPrefs, SpectrumPrefs and ThemePrefs.
#include <functional>
#include "../widgets/wxPanelWrapper.h" // to inherit
#include "../include/audacity/ComponentInterface.h"
#include "ComponentInterface.h"
#include "../Registry.h"
/* A few constants for an attempt at semi-uniformity */

View File

@ -11,6 +11,7 @@
#ifndef __AUDACITY_QUALITY_SETTINGS__
#define __AUDACITY_QUALITY_SETTINGS__
#include <audacity/Types.h>
#include "Prefs.h" // for EnumSetting
class IntSetting;

View File

@ -12,6 +12,7 @@
#define __AUDACITY_SELECTION_BAR_LISTENER__
#include "audacity/Types.h"
#include "ComponentInterfaceSymbol.h"
class SelectedRegion;

View File

@ -17,7 +17,7 @@
#include <wx/brush.h> // member variable
#include "Identifier.h"
#include "audacity/Types.h"
class wxChoice;
class wxCommandEvent;

View File

@ -11,7 +11,7 @@ Paul Licameli split from class WaveTrack
#ifndef __AUDACITY_WAVE_TRACK_VIEW_CONSTANTS__
#define __AUDACITY_WAVE_TRACK_VIEW_CONSTANTS__
#include "audacity/ComponentInterface.h" // for EnumValueSymbol
#include "ComponentInterfaceSymbol.h" // for EnumValueSymbol
namespace WaveTrackViewConstants
{

View File

@ -13,6 +13,7 @@ Paul Licameli
#include <functional>
#include <unordered_map>
#include <vector>
#include "../../AttachedVirtualFunction.h"
#include "../../UIHandle.h"

View File

@ -168,7 +168,7 @@ different formats.
#include "NumericTextCtrl.h"
#include "Identifier.h"
#include "audacity/Types.h"
#include "../AllThemeResources.h"
#include "../AColor.h"
#include "../KeyboardCapture.h"

View File

@ -17,8 +17,9 @@
#include <memory>
#include "../../include/audacity/ComponentInterface.h"
#include "MemoryX.h"
#include "ComponentInterface.h"
#include "ComponentInterfaceSymbol.h"
#include <vector>
#include <wx/setup.h> // for wxUSE_* macros
#include <wx/defs.h>

View File

@ -29,6 +29,7 @@
#include <wx/msw/winundef.h>
#endif
#include "audacity/Types.h"
#include <wx/defs.h>
#include <wx/arrstr.h>
#include <wx/filename.h>