]> git.sesse.net Git - vlc/blob - projects/mozilla/control/npolibvlc.h
Mozilla plugin event listeners.
[vlc] / 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/vlc.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     playlistObj(NULL),
40     subtitleObj(NULL),
41     videoObj(NULL),
42     eventObj(NULL) {};
43
44     virtual ~LibvlcRootNPObject();
45
46     static const int propertyCount;
47     static const NPUTF8 * const propertyNames[];
48
49     InvokeResult getProperty(int index, NPVariant &result);
50
51     static const int methodCount;
52     static const NPUTF8 * const methodNames[];
53
54     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
55
56 private:
57     NPObject *audioObj;
58     NPObject *inputObj;
59     NPObject *playlistObj;
60     NPObject *subtitleObj;
61     NPObject *videoObj;
62     NPObject *eventObj;
63 };
64
65 class LibvlcAudioNPObject: public RuntimeNPObject
66 {
67 protected:
68     LibvlcAudioNPObject(NPP instance, const NPClass *aClass) :
69         RuntimeNPObject(instance, aClass) {};
70     virtual ~LibvlcAudioNPObject() {};
71
72     friend class RuntimeNPClass<LibvlcAudioNPObject>;
73
74     static const int propertyCount;
75     static const NPUTF8 * const propertyNames[];
76
77     InvokeResult getProperty(int index, NPVariant &result);
78     InvokeResult setProperty(int index, const NPVariant &value);
79
80     static const int methodCount;
81     static const NPUTF8 * const methodNames[];
82
83     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
84 };
85
86 class LibvlcInputNPObject: public RuntimeNPObject
87 {
88 protected:
89     friend class RuntimeNPClass<LibvlcInputNPObject>;
90
91     LibvlcInputNPObject(NPP instance, const NPClass *aClass) :
92         RuntimeNPObject(instance, aClass) {};
93
94     virtual ~LibvlcInputNPObject() {};
95
96     static const int propertyCount;
97     static const NPUTF8 * const propertyNames[];
98
99     InvokeResult getProperty(int index, NPVariant &result);
100     InvokeResult setProperty(int index, const NPVariant &value);
101
102     static const int methodCount;
103     static const NPUTF8 * const methodNames[];
104
105     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
106 };
107
108 class LibvlcPlaylistItemsNPObject: public RuntimeNPObject
109 {
110 protected:
111     friend class RuntimeNPClass<LibvlcPlaylistItemsNPObject>;
112
113     LibvlcPlaylistItemsNPObject(NPP instance, const NPClass *aClass) :
114         RuntimeNPObject(instance, aClass) {};
115     virtual ~LibvlcPlaylistItemsNPObject() {};
116
117     static const int propertyCount;
118     static const NPUTF8 * const propertyNames[];
119
120     InvokeResult getProperty(int index, NPVariant &result);
121
122     static const int methodCount;
123     static const NPUTF8 * const methodNames[];
124
125     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
126 };
127
128 class LibvlcPlaylistNPObject: public RuntimeNPObject
129 {
130 protected:
131     friend class RuntimeNPClass<LibvlcPlaylistNPObject>;
132
133     LibvlcPlaylistNPObject(NPP instance, const NPClass *aClass) :
134     RuntimeNPObject(instance, aClass),
135     playlistItemsObj(NULL) {};
136     
137     virtual ~LibvlcPlaylistNPObject();
138
139     static const int propertyCount;
140     static const NPUTF8 * const propertyNames[];
141
142     InvokeResult getProperty(int index, NPVariant &result);
143
144     static const int methodCount;
145     static const NPUTF8 * const methodNames[];
146
147     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
148
149     void parseOptions(const NPString &s, int *i_options, char*** ppsz_options);
150     void parseOptions(NPObject *obj, int *i_options, char*** ppsz_options);
151
152 private:
153     NPObject*  playlistItemsObj;
154 };
155
156 class LibvlcSubtitleNPObject: public RuntimeNPObject
157 {
158 protected:
159     friend class RuntimeNPClass<LibvlcSubtitleNPObject>;
160
161     LibvlcSubtitleNPObject(NPP instance, const NPClass *aClass) :
162         RuntimeNPObject(instance, aClass) {};
163     virtual ~LibvlcSubtitleNPObject() {};
164
165     static const int propertyCount;
166     static const NPUTF8 * const propertyNames[];
167
168     InvokeResult getProperty(int index, NPVariant &result);
169     InvokeResult setProperty(int index, const NPVariant &value);
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
178 class LibvlcVideoNPObject: public RuntimeNPObject
179 {
180 protected:
181     friend class RuntimeNPClass<LibvlcVideoNPObject>;
182
183     LibvlcVideoNPObject(NPP instance, const NPClass *aClass) :
184         RuntimeNPObject(instance, aClass),
185         marqueeObj(NULL), logoObj(NULL), deintObj(NULL) { }
186     virtual ~LibvlcVideoNPObject();
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     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
198
199 private:
200     NPObject *marqueeObj;
201     NPObject *logoObj;
202     NPObject *deintObj;
203 };
204
205 class LibvlcMarqueeNPObject: public RuntimeNPObject
206 {
207 protected:
208     friend class RuntimeNPClass<LibvlcMarqueeNPObject>;
209
210     LibvlcMarqueeNPObject(NPP instance, const NPClass *aClass) :
211         RuntimeNPObject(instance, aClass) {};
212     virtual ~LibvlcMarqueeNPObject() {};
213
214     static const int propertyCount;
215     static const NPUTF8 * const propertyNames[];
216
217     InvokeResult getProperty(int index, NPVariant &result);
218     InvokeResult setProperty(int index, const NPVariant &value);
219
220     static const int methodCount;
221     static const NPUTF8 * const methodNames[];
222
223     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
224 };
225
226 class LibvlcLogoNPObject: public RuntimeNPObject
227 {
228 protected:
229     friend class RuntimeNPClass<LibvlcLogoNPObject>;
230
231     LibvlcLogoNPObject(NPP instance, const NPClass *aClass) :
232         RuntimeNPObject(instance, aClass) { }
233     virtual ~LibvlcLogoNPObject() { }
234
235     static const int propertyCount;
236     static const NPUTF8 * const propertyNames[];
237
238     InvokeResult getProperty(int index, NPVariant &result);
239     InvokeResult setProperty(int index, const NPVariant &value);
240
241     static const int methodCount;
242     static const NPUTF8 * const methodNames[];
243
244     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
245 };
246
247 class LibvlcDeinterlaceNPObject: public RuntimeNPObject
248 {
249 protected:
250     friend class RuntimeNPClass<LibvlcDeinterlaceNPObject>;
251
252     LibvlcDeinterlaceNPObject(NPP instance, const NPClass *aClass) :
253         RuntimeNPObject(instance, aClass) { }
254     virtual ~LibvlcDeinterlaceNPObject() { }
255
256     static const int propertyCount;
257     static const NPUTF8 * const propertyNames[];
258
259     InvokeResult getProperty(int index, NPVariant &result);
260     InvokeResult setProperty(int index, const NPVariant &value);
261
262     static const int methodCount;
263     static const NPUTF8 * const methodNames[];
264
265     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
266 };
267
268 class LibvlcEventNPObject: public RuntimeNPObject
269 {
270 protected:
271     friend class RuntimeNPClass<LibvlcEventNPObject>;
272
273     LibvlcEventNPObject(NPP instance, const NPClass *aClass) :
274         RuntimeNPObject(instance, aClass) {};
275     virtual ~LibvlcEventNPObject() {};
276
277     static const int propertyCount;
278     static const NPUTF8 * const propertyNames[];
279
280     static const int methodCount;
281     static const NPUTF8 * const methodNames[];
282
283     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
284
285     bool parseArgs(const NPVariant *args, uint32_t argCount,
286                    eventtypes_bitmap_t &eventToGet);
287 };