cc9a04738e6d704f3478e8cdfd0aa8184432726d
[ardour.git] / libs / ardour / ardour / plugin_manager.h
1 #ifndef __ardour_plugin_manager_h__
2 #define __ardour_plugin_manager_h__
3
4 #include <list>
5 #include <map>
6 #include <string>
7
8 #include <boost/shared_ptr.hpp>
9
10 #include <ardour/types.h>
11
12 namespace ARDOUR {
13
14 class PluginInfo;
15 class Plugin;
16 class Session;
17 class AudioEngine;
18
19 class PluginManager {
20   public:
21         PluginManager (ARDOUR::AudioEngine&);
22         ~PluginManager ();
23
24         std::list<PluginInfo*> &vst_plugin_info () { return _vst_plugin_info; }
25         std::list<PluginInfo*> &ladspa_plugin_info () { return _ladspa_plugin_info; }
26         void refresh ();
27
28         int add_ladspa_directory (std::string dirpath);
29         int add_vst_directory (std::string dirpath);
30
31         boost::shared_ptr<Plugin> load (ARDOUR::Session& s, PluginInfo* info);
32
33         static PluginManager* the_manager() { return _manager; }
34
35   private:
36         ARDOUR::AudioEngine&   _engine;
37         std::list<PluginInfo*> _vst_plugin_info;
38         std::list<PluginInfo*> _ladspa_plugin_info;
39         std::map<uint32_t, std::string> rdf_type;
40
41         std::string ladspa_path;
42         std::string vst_path;
43
44         void ladspa_refresh ();
45         void vst_refresh ();
46
47         void add_lrdf_data (const std::string &path);
48         void add_ladspa_presets ();
49         void add_vst_presets ();
50         void add_presets (std::string domain);
51
52         int vst_discover_from_path (std::string path);
53         int vst_discover (std::string path);
54
55         int ladspa_discover_from_path (std::string path);
56         int ladspa_discover (std::string path);
57
58         std::string get_ladspa_category (uint32_t id);
59
60         static PluginManager* _manager; // singleton
61 };
62
63 } /* namespace ARDOUR */
64
65 #endif /* __ardour_plugin_manager_h__ */