]> git.sesse.net Git - vlc/blob - projects/mozilla/control/npolibvlc.h
a9896581a61bac2a0976556e63cb1f163393dec7
[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
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 *playlistObj;
59     NPObject *subtitleObj;
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     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
104 };
105
106 class LibvlcPlaylistItemsNPObject: public RuntimeNPObject
107 {
108 protected:
109     friend class RuntimeNPClass<LibvlcPlaylistItemsNPObject>;
110
111     LibvlcPlaylistItemsNPObject(NPP instance, const NPClass *aClass) :
112         RuntimeNPObject(instance, aClass) {};
113     virtual ~LibvlcPlaylistItemsNPObject() {};
114
115     static const int propertyCount;
116     static const NPUTF8 * const propertyNames[];
117
118     InvokeResult getProperty(int index, NPVariant &result);
119
120     static const int methodCount;
121     static const NPUTF8 * const methodNames[];
122
123     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
124 };
125
126 class LibvlcPlaylistNPObject: public RuntimeNPObject
127 {
128 protected:
129     friend class RuntimeNPClass<LibvlcPlaylistNPObject>;
130
131     LibvlcPlaylistNPObject(NPP instance, const NPClass *aClass) :
132     RuntimeNPObject(instance, aClass),
133     playlistItemsObj(NULL) {};
134     
135     virtual ~LibvlcPlaylistNPObject();
136
137     static const int propertyCount;
138     static const NPUTF8 * const propertyNames[];
139
140     InvokeResult getProperty(int index, NPVariant &result);
141
142     static const int methodCount;
143     static const NPUTF8 * const methodNames[];
144
145     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
146
147     void parseOptions(const NPString &s, int *i_options, char*** ppsz_options);
148     void parseOptions(NPObject *obj, int *i_options, char*** ppsz_options);
149
150 private:
151     NPObject*  playlistItemsObj;
152 };
153
154 class LibvlcSubtitleNPObject: public RuntimeNPObject
155 {
156 protected:
157     friend class RuntimeNPClass<LibvlcSubtitleNPObject>;
158
159     LibvlcSubtitleNPObject(NPP instance, const NPClass *aClass) :
160         RuntimeNPObject(instance, aClass) {};
161     virtual ~LibvlcSubtitleNPObject() {};
162
163     static const int propertyCount;
164     static const NPUTF8 * const propertyNames[];
165
166     InvokeResult getProperty(int index, NPVariant &result);
167     InvokeResult setProperty(int index, const NPVariant &value);
168
169     static const int methodCount;
170     static const NPUTF8 * const methodNames[];
171
172     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
173 };
174
175
176 class LibvlcVideoNPObject: public RuntimeNPObject
177 {
178 protected:
179     friend class RuntimeNPClass<LibvlcVideoNPObject>;
180
181     LibvlcVideoNPObject(NPP instance, const NPClass *aClass) :
182         RuntimeNPObject(instance, aClass),
183         marqueeObj(NULL), logoObj(NULL), deintObj(NULL) { }
184     virtual ~LibvlcVideoNPObject();
185
186     static const int propertyCount;
187     static const NPUTF8 * const propertyNames[];
188
189     InvokeResult getProperty(int index, NPVariant &result);
190     InvokeResult setProperty(int index, const NPVariant &value);
191
192     static const int methodCount;
193     static const NPUTF8 * const methodNames[];
194
195     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
196
197 private:
198     NPObject *marqueeObj;
199     NPObject *logoObj;
200     NPObject *deintObj;
201 };
202
203 class LibvlcMarqueeNPObject: public RuntimeNPObject
204 {
205 protected:
206     friend class RuntimeNPClass<LibvlcMarqueeNPObject>;
207
208     LibvlcMarqueeNPObject(NPP instance, const NPClass *aClass) :
209         RuntimeNPObject(instance, aClass) {};
210     virtual ~LibvlcMarqueeNPObject() {};
211
212     static const int propertyCount;
213     static const NPUTF8 * const propertyNames[];
214
215     InvokeResult getProperty(int index, NPVariant &result);
216     InvokeResult setProperty(int index, const NPVariant &value);
217
218     static const int methodCount;
219     static const NPUTF8 * const methodNames[];
220
221     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
222 };
223
224 class LibvlcLogoNPObject: public RuntimeNPObject
225 {
226 protected:
227     friend class RuntimeNPClass<LibvlcLogoNPObject>;
228
229     LibvlcLogoNPObject(NPP instance, const NPClass *aClass) :
230         RuntimeNPObject(instance, aClass) { }
231     virtual ~LibvlcLogoNPObject() { }
232
233     static const int propertyCount;
234     static const NPUTF8 * const propertyNames[];
235
236     InvokeResult getProperty(int index, NPVariant &result);
237     InvokeResult setProperty(int index, const NPVariant &value);
238
239     static const int methodCount;
240     static const NPUTF8 * const methodNames[];
241
242     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
243 };
244
245 class LibvlcDeinterlaceNPObject: public RuntimeNPObject
246 {
247 protected:
248     friend class RuntimeNPClass<LibvlcDeinterlaceNPObject>;
249
250     LibvlcDeinterlaceNPObject(NPP instance, const NPClass *aClass) :
251         RuntimeNPObject(instance, aClass) { }
252     virtual ~LibvlcDeinterlaceNPObject() { }
253
254     static const int propertyCount;
255     static const NPUTF8 * const propertyNames[];
256
257     InvokeResult getProperty(int index, NPVariant &result);
258     InvokeResult setProperty(int index, const NPVariant &value);
259
260     static const int methodCount;
261     static const NPUTF8 * const methodNames[];
262
263     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
264 };