* Copyright (C) 2006 the VideoLAN team
*
* Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
+ * Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
STDMETHODIMP put_mute(VARIANT_BOOL);
STDMETHODIMP get_volume(long*);
STDMETHODIMP put_volume(long);
+ STDMETHODIMP get_track(long*);
+ STDMETHODIMP put_track(long);
+ STDMETHODIMP get_channel(long*);
+ STDMETHODIMP put_channel(long);
STDMETHODIMP toggleMute();
-
+
protected:
HRESULT loadTypeInfo();
ITypeInfo* _p_typeinfo;
};
-
+
class VLCInput : public IVLCInput
{
public:
ITypeInfo* _p_typeinfo;
};
-
+
class VLCMessage: public IVLCMessage
{
public:
STDMETHODIMP get_name(BSTR *);
STDMETHODIMP get_header(BSTR *);
STDMETHODIMP get_message(BSTR *);
-
+
protected:
HRESULT loadTypeInfo();
struct libvlc_log_message_t _msg;
};
-
+
class VLCLog;
class VLCMessageIterator : public IVLCMessageIterator
// IVLCMessageIterator methods
STDMETHODIMP get_hasNext(VARIANT_BOOL*);
STDMETHODIMP next(IVLCMessage**);
-
+
protected:
HRESULT loadTypeInfo();
VLCLog* _p_vlclog;
libvlc_log_iterator_t* _p_iter;
};
-
+
class VLCMessages : public IVLCMessages
{
public:
VLCMessages(VLCPlugin *p_instance, VLCLog *p_vlclog) :
+ _p_vlclog(p_vlclog),
_p_instance(p_instance),
- _p_typeinfo(NULL),
- _p_vlclog(p_vlclog) {};
+ _p_typeinfo(NULL) {}
virtual ~VLCMessages();
// IUnknown methods
STDMETHODIMP clear();
STDMETHODIMP get_count(long*);
STDMETHODIMP iterator(IVLCMessageIterator**);
-
+
protected:
HRESULT loadTypeInfo();
friend class VLCMessageIterator;
VLCLog(VLCPlugin *p_instance) :
+ _p_log(NULL),
_p_instance(p_instance),
_p_typeinfo(NULL),
- _p_log(NULL)
+ _p_vlcmessages(NULL)
{
_p_vlcmessages = new VLCMessages(p_instance, this);
};
STDMETHODIMP get_messages(IVLCMessages**);
STDMETHODIMP get_verbosity(long *);
STDMETHODIMP put_verbosity(long);
-
+
protected:
HRESULT loadTypeInfo();
VLCMessages* _p_vlcmessages;
};
-
+
+class VLCPlaylistItems : public IVLCPlaylistItems
+{
+public:
+ VLCPlaylistItems(VLCPlugin *p_instance) :
+ _p_instance(p_instance), _p_typeinfo(NULL) {};
+ virtual ~VLCPlaylistItems();
+
+ // IUnknown methods
+ STDMETHODIMP QueryInterface(REFIID riid, void **ppv)
+ {
+ if( NULL == ppv )
+ return E_POINTER;
+ if( (IID_IUnknown == riid)
+ || (IID_IDispatch == riid)
+ || (IID_IVLCPlaylistItems == riid) )
+ {
+ AddRef();
+ *ppv = reinterpret_cast<LPVOID>(this);
+ return NOERROR;
+ }
+ // behaves as a standalone object
+ return E_NOINTERFACE;
+ };
+
+ STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); };
+ STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); };
+
+ // IDispatch methods
+ STDMETHODIMP GetTypeInfoCount(UINT*);
+ STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*);
+ STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*);
+ STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
+
+ // IVLCPlaylistItems methods
+ STDMETHODIMP get_count(long*);
+ STDMETHODIMP clear();
+ STDMETHODIMP remove(long);
+
+protected:
+ HRESULT loadTypeInfo();
+
+private:
+ VLCPlugin* _p_instance;
+ ITypeInfo* _p_typeinfo;
+
+};
+
class VLCPlaylist : public IVLCPlaylist
{
public:
VLCPlaylist(VLCPlugin *p_instance) :
- _p_instance(p_instance), _p_typeinfo(NULL) {};
+ _p_instance(p_instance),
+ _p_typeinfo(NULL),
+ _p_vlcplaylistitems(NULL)
+ {
+ _p_vlcplaylistitems = new VLCPlaylistItems(p_instance);
+ };
virtual ~VLCPlaylist();
// IUnknown methods
STDMETHODIMP prev();
STDMETHODIMP clear();
STDMETHODIMP removeItem(long);
-
+ STDMETHODIMP get_items(IVLCPlaylistItems**);
+
protected:
HRESULT loadTypeInfo();
VLCPlugin* _p_instance;
ITypeInfo* _p_typeinfo;
+ VLCPlaylistItems* _p_vlcplaylistitems;
};
-
+
class VLCVideo : public IVLCVideo
{
public:
STDMETHODIMP put_fullscreen(VARIANT_BOOL);
STDMETHODIMP get_width(long*);
STDMETHODIMP get_height(long*);
- STDMETHODIMP get_aspectRatio(BSTR);
+ STDMETHODIMP get_aspectRatio(BSTR*);
STDMETHODIMP put_aspectRatio(BSTR);
+ STDMETHODIMP get_subtitle(long*);
+ STDMETHODIMP put_subtitle(long);
+ STDMETHODIMP get_crop(BSTR*);
+ STDMETHODIMP put_crop(BSTR);
+ STDMETHODIMP get_teletext(long*);
+ STDMETHODIMP put_teletext(long);
+ STDMETHODIMP takeSnapshot(LPPICTUREDISP*);
STDMETHODIMP toggleFullscreen();
-
+
protected:
HRESULT loadTypeInfo();
ITypeInfo* _p_typeinfo;
};
-
+
class VLCControl2 : public IVLCControl2
{
-
public:
VLCControl2(VLCPlugin *p_instance);
STDMETHODIMP put_Visible(VARIANT_BOOL visible);
STDMETHODIMP get_Volume(long *volume);
STDMETHODIMP put_Volume(long volume);
+ STDMETHODIMP get_BackColor(OLE_COLOR *backcolor);
+ STDMETHODIMP put_BackColor(OLE_COLOR backcolor);
STDMETHODIMP get_audio(IVLCAudio**);
STDMETHODIMP get_input(IVLCInput**);
VLCPlaylist* _p_vlcplaylist;
VLCVideo* _p_vlcvideo;
};
-
-#endif
+#endif