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