1 /*****************************************************************************
2 * vlccontrol.h: ActiveX control for VLC
3 *****************************************************************************
4 * Copyright (C) 2006 the VideoLAN team
6 * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
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.
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.
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 *****************************************************************************/
23 #ifndef _VLCCONTROL2_H_
24 #define _VLCCONTROL2_H_
26 #include "axvlc_idl.h"
28 class VLCAudio : public IVLCAudio
31 VLCAudio(VLCPlugin *p_instance) :
32 _p_instance(p_instance), _p_typeinfo(NULL) {};
36 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
40 if( (IID_IUnknown == riid)
41 || (IID_IDispatch == riid)
42 || (IID_IVLCAudio == riid) )
45 *ppv = reinterpret_cast<LPVOID>(this);
48 // behaves as a standalone object
52 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
53 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
56 STDMETHODIMP GetTypeInfoCount(UINT*);
57 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
58 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
59 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
62 STDMETHODIMP get_mute(VARIANT_BOOL*);
63 STDMETHODIMP put_mute(VARIANT_BOOL);
64 STDMETHODIMP get_volume(int*);
65 STDMETHODIMP put_volume(int);
66 STDMETHODIMP toggleMute();
69 HRESULT loadTypeInfo();
72 VLCPlugin* _p_instance;
73 ITypeInfo* _p_typeinfo;
77 class VLCInput : public IVLCInput
81 VLCInput(VLCPlugin *p_instance) :
82 _p_instance(p_instance), _p_typeinfo(NULL) {};
86 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
90 if( (IID_IUnknown == riid)
91 || (IID_IDispatch == riid)
92 || (IID_IVLCInput == riid) )
95 *ppv = reinterpret_cast<LPVOID>(this);
98 // behaves as a standalone object
102 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
103 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
106 STDMETHODIMP GetTypeInfoCount(UINT*);
107 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
108 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
109 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
112 STDMETHODIMP get_length(double*);
113 STDMETHODIMP get_position(float*);
114 STDMETHODIMP put_position(float);
115 STDMETHODIMP get_time(double*);
116 STDMETHODIMP put_time(double);
117 STDMETHODIMP get_state(int*);
118 STDMETHODIMP get_rate(float*);
119 STDMETHODIMP put_rate(float);
120 STDMETHODIMP get_fps(float*);
121 STDMETHODIMP get_hasVout(VARIANT_BOOL*);
124 HRESULT loadTypeInfo();
127 VLCPlugin* _p_instance;
128 ITypeInfo* _p_typeinfo;
132 class VLCPlaylist : public IVLCPlaylist
135 VLCPlaylist(VLCPlugin *p_instance) :
136 _p_instance(p_instance), _p_typeinfo(NULL) {};
137 virtual ~VLCPlaylist();
140 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
144 if( (IID_IUnknown == riid)
145 || (IID_IDispatch == riid)
146 || (IID_IVLCPlaylist == riid) )
149 *ppv = reinterpret_cast<LPVOID>(this);
152 // behaves as a standalone object
153 return E_NOINTERFACE;
156 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
157 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
160 STDMETHODIMP GetTypeInfoCount(UINT*);
161 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
162 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
163 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
165 // IVLCPlaylist methods
166 STDMETHODIMP get_itemCount(int*);
167 STDMETHODIMP get_isPlaying(VARIANT_BOOL*);
168 STDMETHODIMP add(BSTR, VARIANT, VARIANT, int*);
170 STDMETHODIMP playItem(int);
171 STDMETHODIMP togglePause();
175 STDMETHODIMP clear();
176 STDMETHODIMP removeItem(int);
179 HRESULT loadTypeInfo();
182 VLCPlugin* _p_instance;
183 ITypeInfo* _p_typeinfo;
187 class VLCVideo : public IVLCVideo
190 VLCVideo(VLCPlugin *p_instance) :
191 _p_instance(p_instance), _p_typeinfo(NULL) {};
195 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
199 if( (IID_IUnknown == riid)
200 || (IID_IDispatch == riid)
201 || (IID_IVLCVideo == riid) )
204 *ppv = reinterpret_cast<LPVOID>(this);
207 // behaves as a standalone object
208 return E_NOINTERFACE;
211 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
212 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
215 STDMETHODIMP GetTypeInfoCount(UINT*);
216 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
217 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
218 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
221 STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
222 STDMETHODIMP put_fullscreen(VARIANT_BOOL);
223 STDMETHODIMP get_width(int*);
224 STDMETHODIMP get_height(int*);
225 STDMETHODIMP toggleFullscreen();
228 HRESULT loadTypeInfo();
231 VLCPlugin* _p_instance;
232 ITypeInfo* _p_typeinfo;
236 class VLCControl2 : public IVLCControl2
241 VLCControl2(VLCPlugin *p_instance);
242 virtual ~VLCControl2();
245 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
249 if( (IID_IUnknown == riid)
250 || (IID_IDispatch == riid)
251 || (IID_IVLCControl2 == riid) )
254 *ppv = reinterpret_cast<LPVOID>(this);
257 return _p_instance->pUnkOuter->QueryInterface(riid, ppv);
260 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
261 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
264 STDMETHODIMP GetTypeInfoCount(UINT*);
265 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
266 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
267 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
269 // IVLCControl2 methods
270 STDMETHODIMP get_AutoLoop(VARIANT_BOOL *autoloop);
271 STDMETHODIMP put_AutoLoop(VARIANT_BOOL autoloop);
272 STDMETHODIMP get_AutoPlay(VARIANT_BOOL *autoplay);
273 STDMETHODIMP put_AutoPlay(VARIANT_BOOL autoplay);
274 STDMETHODIMP get_BaseURL(BSTR *url);
275 STDMETHODIMP put_BaseURL(BSTR url);
276 STDMETHODIMP get_MRL(BSTR *mrl);
277 STDMETHODIMP put_MRL(BSTR mrl);
278 STDMETHODIMP get_StartTime(int *seconds);
279 STDMETHODIMP put_StartTime(int seconds);
280 STDMETHODIMP get_VersionInfo(BSTR *version);
281 STDMETHODIMP get_Visible(VARIANT_BOOL *visible);
282 STDMETHODIMP put_Visible(VARIANT_BOOL visible);
283 STDMETHODIMP get_Volume(int *volume);
284 STDMETHODIMP put_Volume(int volume);
286 STDMETHODIMP get_audio(IVLCAudio**);
287 STDMETHODIMP get_input(IVLCInput**);
288 STDMETHODIMP get_playlist(IVLCPlaylist**);
289 STDMETHODIMP get_video(IVLCVideo**);
292 HRESULT loadTypeInfo();
295 VLCPlugin* _p_instance;
296 ITypeInfo* _p_typeinfo;
298 VLCAudio* _p_vlcaudio;
299 VLCInput* _p_vlcinput;
300 VLCPlaylist* _p_vlcplaylist;
301 VLCVideo* _p_vlcvideo;