Audio track and channel support for JavaScript API. The ActiveX vlc.audio.channel...
[vlc.git] / mozilla / control / npolibvlc.h
1 /*****************************************************************************\r
2  * npolibvlc.h: official Javascript APIs\r
3  *****************************************************************************\r
4  * Copyright (C) 2002-2006 the VideoLAN team\r
5  *\r
6  * Authors: Damien Fouilleul <damien.fouilleul@laposte.net>\r
7  *\r
8  * This program is free software; you can redistribute it and/or modify\r
9  * it under the terms of the GNU General Public License as published by\r
10  * the Free Software Foundation; either version 2 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU General Public License\r
19  * along with this program; if not, write to the Free Software\r
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.\r
21  *****************************************************************************/\r
22 \r
23 /*\r
24 ** defined runtime script objects\r
25 */\r
26 #include <vlc/libvlc.h>\r
27 \r
28 #include "nporuntime.h"\r
29 \r
30 class LibvlcRootNPObject: public RuntimeNPObject\r
31 {\r
32 protected:\r
33     friend class RuntimeNPClass<LibvlcRootNPObject>;\r
34 \r
35     LibvlcRootNPObject(NPP instance, const NPClass *aClass);\r
36     virtual ~LibvlcRootNPObject();\r
37 \r
38     static const int propertyCount;\r
39     static const NPUTF8 * const propertyNames[];\r
40 \r
41     InvokeResult getProperty(int index, NPVariant &result);\r
42 \r
43     static const int methodCount;\r
44     static const NPUTF8 * const methodNames[];\r
45 \r
46     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
47 \r
48     NPObject *audioObj;\r
49     NPObject *inputObj;\r
50     NPObject *logObj;\r
51     NPObject *playlistObj;\r
52     NPObject *videoObj;\r
53 };\r
54 \r
55 class LibvlcAudioNPObject: public RuntimeNPObject\r
56 {\r
57 protected:\r
58     LibvlcAudioNPObject(NPP instance, const NPClass *aClass) :\r
59         RuntimeNPObject(instance, aClass) {};\r
60     virtual ~LibvlcAudioNPObject() {};\r
61 \r
62     friend class RuntimeNPClass<LibvlcAudioNPObject>;\r
63 \r
64     static const int propertyCount;\r
65     static const NPUTF8 * const propertyNames[];\r
66 \r
67     InvokeResult getProperty(int index, NPVariant &result);\r
68     InvokeResult setProperty(int index, const NPVariant &value);\r
69 \r
70     static const int methodCount;\r
71     static const NPUTF8 * const methodNames[];\r
72 \r
73     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
74 };\r
75 \r
76 class LibvlcInputNPObject: public RuntimeNPObject\r
77 {\r
78 protected:\r
79     friend class RuntimeNPClass<LibvlcInputNPObject>;\r
80 \r
81     LibvlcInputNPObject(NPP instance, const NPClass *aClass) :\r
82         RuntimeNPObject(instance, aClass) {};\r
83 \r
84     virtual ~LibvlcInputNPObject() {};\r
85 \r
86     static const int propertyCount;\r
87     static const NPUTF8 * const propertyNames[];\r
88 \r
89     InvokeResult getProperty(int index, NPVariant &result);\r
90     InvokeResult setProperty(int index, const NPVariant &value);\r
91 \r
92     static const int methodCount;\r
93     static const NPUTF8 * const methodNames[];\r
94 };\r
95 \r
96 class LibvlcMessageNPObject: public RuntimeNPObject\r
97 {\r
98 public:\r
99     void setMessage(struct libvlc_log_message_t &msg)\r
100     {\r
101         _msg = msg;\r
102     };\r
103 \r
104 protected:\r
105     friend class RuntimeNPClass<LibvlcMessageNPObject>;\r
106 \r
107     LibvlcMessageNPObject(NPP instance, const NPClass *aClass) :\r
108         RuntimeNPObject(instance, aClass) {};\r
109 \r
110     virtual ~LibvlcMessageNPObject() {};\r
111 \r
112     static const int propertyCount;\r
113     static const NPUTF8 * const propertyNames[];\r
114 \r
115     InvokeResult getProperty(int index, NPVariant &result);\r
116 \r
117     static const int methodCount;\r
118     static const NPUTF8 * const methodNames[];\r
119 \r
120 private:\r
121     struct libvlc_log_message_t _msg;\r
122 };\r
123 \r
124 class LibvlcLogNPObject;\r
125 \r
126 class LibvlcMessageIteratorNPObject: public RuntimeNPObject\r
127 {\r
128 protected:\r
129     friend class RuntimeNPClass<LibvlcMessageIteratorNPObject>;\r
130 \r
131     LibvlcMessageIteratorNPObject(NPP instance, const NPClass *aClass);\r
132     virtual ~LibvlcMessageIteratorNPObject();\r
133 \r
134     static const int propertyCount;\r
135     static const NPUTF8 * const propertyNames[];\r
136 \r
137     InvokeResult getProperty(int index, NPVariant &result);\r
138 \r
139     static const int methodCount;\r
140     static const NPUTF8 * const methodNames[];\r
141 \r
142     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
143 \r
144 private:\r
145     libvlc_log_iterator_t*  _p_iter;\r
146 };\r
147 \r
148 class LibvlcMessagesNPObject: public RuntimeNPObject\r
149 {\r
150 protected:\r
151     friend class RuntimeNPClass<LibvlcMessagesNPObject>;\r
152 \r
153     LibvlcMessagesNPObject(NPP instance, const NPClass *aClass) :\r
154         RuntimeNPObject(instance, aClass) {};\r
155 \r
156     virtual ~LibvlcMessagesNPObject() {};\r
157 \r
158     static const int propertyCount;\r
159     static const NPUTF8 * const propertyNames[];\r
160 \r
161     InvokeResult getProperty(int index, NPVariant &result);\r
162 \r
163     static const int methodCount;\r
164     static const NPUTF8 * const methodNames[];\r
165 \r
166     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
167 };\r
168 \r
169 class LibvlcLogNPObject: public RuntimeNPObject\r
170 {\r
171 protected:\r
172     friend class RuntimeNPClass<LibvlcLogNPObject>;\r
173 \r
174     LibvlcLogNPObject(NPP instance, const NPClass *aClass);\r
175     virtual ~LibvlcLogNPObject();\r
176 \r
177     static const int propertyCount;\r
178     static const NPUTF8 * const propertyNames[];\r
179 \r
180     InvokeResult getProperty(int index, NPVariant &result);\r
181     InvokeResult setProperty(int index, const NPVariant &value);\r
182 \r
183     static const int methodCount;\r
184     static const NPUTF8 * const methodNames[];\r
185 \r
186 private:\r
187     LibvlcMessagesNPObject* _p_vlcmessages;\r
188 };\r
189 \r
190 class LibvlcPlaylistItemsNPObject: public RuntimeNPObject\r
191 {\r
192 protected:\r
193     friend class RuntimeNPClass<LibvlcPlaylistItemsNPObject>;\r
194 \r
195     LibvlcPlaylistItemsNPObject(NPP instance, const NPClass *aClass) :\r
196         RuntimeNPObject(instance, aClass) {};\r
197     virtual ~LibvlcPlaylistItemsNPObject() {};\r
198 \r
199     static const int propertyCount;\r
200     static const NPUTF8 * const propertyNames[];\r
201 \r
202     InvokeResult getProperty(int index, NPVariant &result);\r
203 \r
204     static const int methodCount;\r
205     static const NPUTF8 * const methodNames[];\r
206 \r
207     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
208 };\r
209 \r
210 class LibvlcPlaylistNPObject: public RuntimeNPObject\r
211 {\r
212 protected:\r
213     friend class RuntimeNPClass<LibvlcPlaylistNPObject>;\r
214 \r
215     LibvlcPlaylistNPObject(NPP instance, const NPClass *aClass);\r
216     virtual ~LibvlcPlaylistNPObject();\r
217 \r
218     static const int propertyCount;\r
219     static const NPUTF8 * const propertyNames[];\r
220 \r
221     InvokeResult getProperty(int index, NPVariant &result);\r
222 \r
223     static const int methodCount;\r
224     static const NPUTF8 * const methodNames[];\r
225 \r
226     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
227 \r
228     void parseOptions(const NPString &s, int *i_options, char*** ppsz_options);\r
229     void parseOptions(NPObject *obj, int *i_options, char*** ppsz_options);\r
230 \r
231 private:\r
232     LibvlcPlaylistItemsNPObject* _p_vlcplaylistitems;\r
233 };\r
234 \r
235 class LibvlcVideoNPObject: public RuntimeNPObject\r
236 {\r
237 protected:\r
238     friend class RuntimeNPClass<LibvlcVideoNPObject>;\r
239 \r
240     LibvlcVideoNPObject(NPP instance, const NPClass *aClass) :\r
241         RuntimeNPObject(instance, aClass) {};\r
242     virtual ~LibvlcVideoNPObject() {};\r
243 \r
244     static const int propertyCount;\r
245     static const NPUTF8 * const propertyNames[];\r
246 \r
247     InvokeResult getProperty(int index, NPVariant &result);\r
248     InvokeResult setProperty(int index, const NPVariant &value);\r
249 \r
250     static const int methodCount;\r
251     static const NPUTF8 * const methodNames[];\r
252 \r
253     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);\r
254 };\r
255 \r