|
- /*
- ==============================================================================
-
- This file is part of the JUCE library - "Jules' Utility Class Extensions"
- Copyright 2004-11 by Raw Material Software Ltd.
-
- ------------------------------------------------------------------------------
-
- JUCE can be redistributed and/or modified under the terms of the GNU General
- Public License (Version 2), as published by the Free Software Foundation.
- A copy of the license is included in the JUCE distribution, or can be found
- online at www.gnu.org/licenses.
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.rawmaterialsoftware.com/juce for more information.
-
- ==============================================================================
- */
-
- #ifndef __JUCE_PLUGINDESCRIPTION_JUCEHEADER__
- #define __JUCE_PLUGINDESCRIPTION_JUCEHEADER__
-
-
- //==============================================================================
- /**
- A small class to represent some facts about a particular type of plugin.
-
- This class is for storing and managing the details about a plugin without
- actually having to load an instance of it.
-
- A KnownPluginList contains a list of PluginDescription objects.
-
- @see KnownPluginList
- */
- class JUCE_API PluginDescription
- {
- public:
- //==============================================================================
- PluginDescription();
- PluginDescription (const PluginDescription& other);
- PluginDescription& operator= (const PluginDescription& other);
- ~PluginDescription();
-
- //==============================================================================
- /** The name of the plugin. */
- String name;
-
- /** A more descriptive name for the plugin.
- This may be the same as the 'name' field, but some plugins may provide an
- alternative name.
- */
- String descriptiveName;
-
- /** The plugin format, e.g. "VST", "AudioUnit", etc.
- */
- String pluginFormatName;
-
- /** A category, such as "Dynamics", "Reverbs", etc.
- */
- String category;
-
- /** The manufacturer. */
- String manufacturerName;
-
- /** The version. This string doesn't have any particular format. */
- String version;
-
- /** Either the file containing the plugin module, or some other unique way
- of identifying it.
-
- E.g. for an AU, this would be an ID string that the component manager
- could use to retrieve the plugin. For a VST, it's the file path.
- */
- String fileOrIdentifier;
-
- /** The last time the plugin file was changed.
- This is handy when scanning for new or changed plugins.
- */
- Time lastFileModTime;
-
- /** A unique ID for the plugin.
-
- Note that this might not be unique between formats, e.g. a VST and some
- other format might actually have the same id.
-
- @see createIdentifierString
- */
- int uid;
-
- /** True if the plugin identifies itself as a synthesiser. */
- bool isInstrument;
-
- /** The number of inputs. */
- int numInputChannels;
-
- /** The number of outputs. */
- int numOutputChannels;
-
- /** Returns true if the two descriptions refer the the same plugin.
-
- This isn't quite as simple as them just having the same file (because of
- shell plugins).
- */
- bool isDuplicateOf (const PluginDescription& other) const;
-
- //==============================================================================
- /** Returns a string that can be saved and used to uniquely identify the
- plugin again.
-
- This contains less info than the XML encoding, and is independent of the
- plugin's file location, so can be used to store a plugin ID for use
- across different machines.
- */
- String createIdentifierString() const;
-
- //==============================================================================
- /** Creates an XML object containing these details.
-
- @see loadFromXml
- */
- XmlElement* createXml() const;
-
- /** Reloads the info in this structure from an XML record that was previously
- saved with createXML().
-
- Returns true if the XML was a valid plugin description.
- */
- bool loadFromXml (const XmlElement& xml);
-
-
- private:
- //==============================================================================
- JUCE_LEAK_DETECTOR (PluginDescription)
- };
-
-
- #endif // __JUCE_PLUGINDESCRIPTION_JUCEHEADER__
|