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();
71 VLCPlugin* _p_instance;
72 ITypeInfo* _p_typeinfo;
76 class VLCInput : public IVLCInput
80 VLCInput(VLCPlugin *p_instance) :
81 _p_instance(p_instance), _p_typeinfo(NULL) {};
85 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
89 if( (IID_IUnknown == riid)
90 || (IID_IDispatch == riid)
91 || (IID_IVLCInput == riid) )
94 *ppv = reinterpret_cast<LPVOID>(this);
97 // behaves as a standalone object
101 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
102 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
105 STDMETHODIMP GetTypeInfoCount(UINT*);
106 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
107 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
108 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
111 STDMETHODIMP get_length(__int64*);
112 STDMETHODIMP get_position(float*);
113 STDMETHODIMP put_position(float);
114 STDMETHODIMP get_time(__int64*);
115 STDMETHODIMP put_time(__int64);
116 STDMETHODIMP get_state(int*);
117 STDMETHODIMP get_rate(float*);
118 STDMETHODIMP put_rate(float);
119 STDMETHODIMP get_fps(float*);
120 STDMETHODIMP get_hasVout(VARIANT_BOOL*);
123 HRESULT loadTypeInfo();
125 VLCPlugin* _p_instance;
126 ITypeInfo* _p_typeinfo;
130 class VLCPlaylist : public IVLCPlaylist
133 VLCPlaylist(VLCPlugin *p_instance) :
134 _p_instance(p_instance), _p_typeinfo(NULL) {};
135 virtual ~VLCPlaylist();
138 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
142 if( (IID_IUnknown == riid)
143 || (IID_IDispatch == riid)
144 || (IID_IVLCPlaylist == riid) )
147 *ppv = reinterpret_cast<LPVOID>(this);
150 // behaves as a standalone object
151 return E_NOINTERFACE;
154 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
155 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
158 STDMETHODIMP GetTypeInfoCount(UINT*);
159 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
160 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
161 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
163 // IVLCPlaylist methods
164 STDMETHODIMP get_itemCount(int*);
165 STDMETHODIMP get_isPlaying(VARIANT_BOOL*);
166 STDMETHODIMP add(BSTR, VARIANT, VARIANT, int*);
168 STDMETHODIMP playItem(int);
169 STDMETHODIMP togglePause();
173 STDMETHODIMP clear();
174 STDMETHODIMP removeItem(int);
178 HRESULT loadTypeInfo();
180 VLCPlugin* _p_instance;
181 ITypeInfo* _p_typeinfo;
185 class VLCVideo : public IVLCVideo
188 VLCVideo(VLCPlugin *p_instance) :
189 _p_instance(p_instance), _p_typeinfo(NULL) {};
193 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
197 if( (IID_IUnknown == riid)
198 || (IID_IDispatch == riid)
199 || (IID_IVLCVideo == riid) )
202 *ppv = reinterpret_cast<LPVOID>(this);
205 // behaves as a standalone object
206 return E_NOINTERFACE;
209 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
210 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
213 STDMETHODIMP GetTypeInfoCount(UINT*);
214 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
215 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
216 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
219 STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
220 STDMETHODIMP put_fullscreen(VARIANT_BOOL);
221 STDMETHODIMP get_width(int*);
222 STDMETHODIMP get_height(int*);
226 HRESULT loadTypeInfo();
228 VLCPlugin* _p_instance;
229 ITypeInfo* _p_typeinfo;
233 class VLCControl2 : public IVLCControl2
238 VLCControl2(VLCPlugin *p_instance);
239 virtual ~VLCControl2();
242 STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
246 if( (IID_IUnknown == riid)
247 || (IID_IDispatch == riid)
248 || (IID_IVLCControl2 == riid) )
251 *ppv = reinterpret_cast<LPVOID>(this);
254 return _p_instance->pUnkOuter->QueryInterface(riid, ppv);
257 STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
258 STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
261 STDMETHODIMP GetTypeInfoCount(UINT*);
262 STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
263 STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
264 STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
266 // IVLCControl2 methods
267 STDMETHODIMP get_audio(IVLCAudio**);
268 STDMETHODIMP get_input(IVLCInput**);
269 STDMETHODIMP get_playlist(IVLCPlaylist**);
270 STDMETHODIMP get_video(IVLCVideo**);
274 HRESULT loadTypeInfo();
276 VLCPlugin* _p_instance;
277 ITypeInfo* _p_typeinfo;
279 VLCAudio* _p_vlcaudio;
280 VLCInput* _p_vlcinput;
281 VLCPlaylist* _p_vlcplaylist;
282 VLCVideo* _p_vlcvideo;