X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=activex%2Fvlccontrol2.h;h=23c28539638c86abee3605aa1ce573031dfc5ac1;hb=1a42f95bcb4466eeccc0722122e0c1fcd1011b12;hp=f2ba69a541a0c93389862754d1aa2b1b8bb3286b;hpb=043ddf1233f41165bae28497ce86fc9a4e8e06a4;p=vlc diff --git a/activex/vlccontrol2.h b/activex/vlccontrol2.h old mode 100755 new mode 100644 index f2ba69a541..23c2853963 --- a/activex/vlccontrol2.h +++ b/activex/vlccontrol2.h @@ -4,6 +4,7 @@ * Copyright (C) 2006 the VideoLAN team * * Authors: Damien Fouilleul + * Jean-Paul Saman * * 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 @@ -65,8 +66,12 @@ public: 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(); @@ -75,7 +80,7 @@ private: ITypeInfo* _p_typeinfo; }; - + class VLCInput : public IVLCInput { public: @@ -130,7 +135,7 @@ private: ITypeInfo* _p_typeinfo; }; - + class VLCMessage: public IVLCMessage { public: @@ -184,7 +189,7 @@ public: STDMETHODIMP get_name(BSTR *); STDMETHODIMP get_header(BSTR *); STDMETHODIMP get_message(BSTR *); - + protected: HRESULT loadTypeInfo(); @@ -195,7 +200,7 @@ private: struct libvlc_log_message_t _msg; }; - + class VLCLog; class VLCMessageIterator : public IVLCMessageIterator @@ -243,7 +248,7 @@ public: // IVLCMessageIterator methods STDMETHODIMP get_hasNext(VARIANT_BOOL*); STDMETHODIMP next(IVLCMessage**); - + protected: HRESULT loadTypeInfo(); @@ -255,15 +260,15 @@ private: 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 @@ -297,7 +302,7 @@ public: STDMETHODIMP clear(); STDMETHODIMP get_count(long*); STDMETHODIMP iterator(IVLCMessageIterator**); - + protected: HRESULT loadTypeInfo(); @@ -316,9 +321,10 @@ public: 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); }; @@ -354,7 +360,7 @@ public: STDMETHODIMP get_messages(IVLCMessages**); STDMETHODIMP get_verbosity(long *); STDMETHODIMP put_verbosity(long); - + protected: HRESULT loadTypeInfo(); @@ -366,12 +372,64 @@ private: 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(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 @@ -412,7 +470,8 @@ public: STDMETHODIMP prev(); STDMETHODIMP clear(); STDMETHODIMP removeItem(long); - + STDMETHODIMP get_items(IVLCPlaylistItems**); + protected: HRESULT loadTypeInfo(); @@ -420,8 +479,9 @@ private: VLCPlugin* _p_instance; ITypeInfo* _p_typeinfo; + VLCPlaylistItems* _p_vlcplaylistitems; }; - + class VLCVideo : public IVLCVideo { public: @@ -460,10 +520,17 @@ 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(); @@ -472,10 +539,9 @@ private: ITypeInfo* _p_typeinfo; }; - + class VLCControl2 : public IVLCControl2 { - public: VLCControl2(VLCPlugin *p_instance); @@ -522,6 +588,8 @@ public: 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**); @@ -542,6 +610,5 @@ private: VLCPlaylist* _p_vlcplaylist; VLCVideo* _p_vlcvideo; }; - -#endif +#endif