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