Credit Andrew - improve in-tree documentation
[goodguy/cinelerra.git] / cinelerra / pluginlv2client.h
1 #ifndef __PLUGINLV2CLIENT_H__
2 #define __PLUGINLV2CLIENT_H__
3
4 #include "condition.inc"
5 #include "mutex.h"
6 #include "pluginaclient.h"
7 #include "plugin.inc"
8 #include "pluginlv2.h"
9 #include "pluginlv2config.h"
10 #include "pluginlv2client.inc"
11 #include "pluginlv2gui.h"
12 #include "pluginlv2ui.inc"
13 #include "samples.inc"
14
15 class PluginLV2UIs : public ArrayList<PluginLV2ParentUI *>, public Mutex
16 {
17 public:
18         PluginLV2UIs();
19         ~PluginLV2UIs();
20
21         void del_uis();
22         PluginLV2ParentUI *del_ui(PluginLV2Client *client);
23         PluginLV2ParentUI *del_ui(PluginLV2ClientWindow *gui);
24         PluginLV2ParentUI *add_ui(PluginLV2ParentUI *ui, PluginLV2Client *client);
25         PluginLV2ParentUI *search_ui(Plugin *plugin);
26         PluginLV2ParentUI *find_ui(Plugin *plugin);
27         PluginLV2ParentUI *get_ui(PluginLV2Client *client);
28
29 };
30
31 class PluginLV2ParentUI : public ForkParent
32 {
33 public:
34         PluginLV2ParentUI(Plugin *plugin);
35         ~PluginLV2ParentUI();
36         ForkChild* new_fork();
37         void start_parent(PluginLV2Client *client);
38         int handle_parent();
39
40         Condition *output_bfr;
41         PluginLV2Client *client;
42         PluginLV2ClientWindow *gui;
43
44         int hidden;
45         int show();
46         int hide();
47
48 //from Plugin::identitical_location
49         int64_t position;
50         int set_no;
51         int track_no;
52
53         static PluginLV2UIs plugin_lv2;
54 };
55
56 class PluginLV2BlackList : public ArrayList<const char *>
57 {
58 public:
59         PluginLV2BlackList(const char *path);
60         ~PluginLV2BlackList();
61
62         int is_badboy(const char *uri);
63 };
64
65 class PluginLV2Client : public PluginAClient, public PluginLV2
66 {
67 public:
68         PluginLV2Client(PluginServer *server);
69         ~PluginLV2Client();
70
71         int process_realtime(int64_t size,
72                 Samples *input_ptr,
73                 Samples *output_ptr);
74         int process_realtime(int64_t size,
75                 Samples **input_ptr,
76                 Samples **output_ptr);
77 // Update output pointers as well
78         int is_realtime();
79         int is_multichannel();
80         int is_synthesis();
81         int uses_gui();
82         char* to_string(char *string, const char *input);
83         void save_data(KeyFrame *keyframe);
84         void read_data(KeyFrame *keyframe);
85         void load_buffer(int samples, Samples **input, int ich);
86         int unload_buffer(int samples, Samples **output, int och);
87         void process_buffer(int size);
88         void update_gui();
89         void update_lv2();
90         int init_lv2();
91         PluginLV2ParentUI *find_ui();
92         PluginLV2ParentUI *get_ui();
93
94         PLUGIN_CLASS_MEMBERS(PluginLV2ClientConfig)
95         char title[BCSTRLEN];
96 };
97
98 #endif