Moz-Plugin: Marquee JS Bindings
[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/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
104 class LibvlcPlaylistItemsNPObject: public RuntimeNPObject
105 {
106 protected:
107     friend class RuntimeNPClass<LibvlcPlaylistItemsNPObject>;
108
109     LibvlcPlaylistItemsNPObject(NPP instance, const NPClass *aClass) :
110         RuntimeNPObject(instance, aClass) {};
111     virtual ~LibvlcPlaylistItemsNPObject() {};
112
113     static const int propertyCount;
114     static const NPUTF8 * const propertyNames[];
115
116     InvokeResult getProperty(int index, NPVariant &result);
117
118     static const int methodCount;
119     static const NPUTF8 * const methodNames[];
120
121     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
122 };
123
124 class LibvlcPlaylistNPObject: public RuntimeNPObject
125 {
126 protected:
127     friend class RuntimeNPClass<LibvlcPlaylistNPObject>;
128
129     LibvlcPlaylistNPObject(NPP instance, const NPClass *aClass) :
130     RuntimeNPObject(instance, aClass),
131     playlistItemsObj(NULL) {};
132     
133     virtual ~LibvlcPlaylistNPObject();
134
135     static const int propertyCount;
136     static const NPUTF8 * const propertyNames[];
137
138     InvokeResult getProperty(int index, NPVariant &result);
139
140     static const int methodCount;
141     static const NPUTF8 * const methodNames[];
142
143     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
144
145     void parseOptions(const NPString &s, int *i_options, char*** ppsz_options);
146     void parseOptions(NPObject *obj, int *i_options, char*** ppsz_options);
147
148 private:
149     NPObject*  playlistItemsObj;
150 };
151
152 class LibvlcSubtitleNPObject: public RuntimeNPObject
153 {
154 protected:
155     friend class RuntimeNPClass<LibvlcSubtitleNPObject>;
156
157     LibvlcSubtitleNPObject(NPP instance, const NPClass *aClass) :
158         RuntimeNPObject(instance, aClass) {};
159     virtual ~LibvlcSubtitleNPObject() {};
160
161     static const int propertyCount;
162     static const NPUTF8 * const propertyNames[];
163
164     InvokeResult getProperty(int index, NPVariant &result);
165     InvokeResult setProperty(int index, const NPVariant &value);
166
167     static const int methodCount;
168     static const NPUTF8 * const methodNames[];
169
170     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
171 };
172
173
174 class LibvlcVideoNPObject: public RuntimeNPObject
175 {
176 protected:
177     friend class RuntimeNPClass<LibvlcVideoNPObject>;
178
179     LibvlcVideoNPObject(NPP instance, const NPClass *aClass) :
180         RuntimeNPObject(instance, aClass),
181         marqueeObj(NULL) {};
182     virtual ~LibvlcVideoNPObject() {};
183
184     static const int propertyCount;
185     static const NPUTF8 * const propertyNames[];
186
187     InvokeResult getProperty(int index, NPVariant &result);
188     InvokeResult setProperty(int index, const NPVariant &value);
189
190     static const int methodCount;
191     static const NPUTF8 * const methodNames[];
192
193     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
194
195 private:
196     NPObject *marqueeObj;
197 };
198
199 class LibvlcMarqueeNPObject: public RuntimeNPObject
200 {
201 protected:
202     friend class RuntimeNPClass<LibvlcMarqueeNPObject>;
203
204     LibvlcMarqueeNPObject(NPP instance, const NPClass *aClass) :
205         RuntimeNPObject(instance, aClass) {};
206     virtual ~LibvlcMarqueeNPObject() {};
207
208     static const int propertyCount;
209     static const NPUTF8 * const propertyNames[];
210
211     InvokeResult getProperty(int index, NPVariant &result);
212     InvokeResult setProperty(int index, const NPVariant &value);
213
214     static const int methodCount;
215     static const NPUTF8 * const methodNames[];
216
217     InvokeResult invoke(int index, const NPVariant *args, uint32_t argCount, NPVariant &result);
218 };