X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=projects%2Factivex%2Fvlccontrol2.h;h=342116ae10594272efdc1eefa13ade49e8d28569;hb=b2786c43e339bfd9b9503c4b48c0ed1d9fa94d12;hp=ee52d5359e371ab0441c0d42529e2e1af67525b0;hpb=658686029ee756fbf4beb8e0cdcc4b0bc5dd18ed;p=vlc diff --git a/projects/activex/vlccontrol2.h b/projects/activex/vlccontrol2.h index ee52d5359e..342116ae10 100644 --- a/projects/activex/vlccontrol2.h +++ b/projects/activex/vlccontrol2.h @@ -68,9 +68,11 @@ public: STDMETHODIMP put_volume(long); STDMETHODIMP get_track(long*); STDMETHODIMP put_track(long); + STDMETHODIMP get_count(long*); STDMETHODIMP get_channel(long*); STDMETHODIMP put_channel(long); STDMETHODIMP toggleMute(); + STDMETHODIMP description(long, BSTR*); protected: HRESULT loadTypeInfo(); @@ -378,6 +380,62 @@ private: VLCMessages* _p_vlcmessages; }; +class VLCMarquee : public IVLCMarquee +{ +public: + VLCMarquee(VLCPlugin *p_instance) : + _p_instance(p_instance), _p_typeinfo(NULL) {}; + virtual ~VLCMarquee(); + + // IUnknown methods + STDMETHODIMP QueryInterface(REFIID riid, void **ppv) + { + if( NULL == ppv ) + return E_POINTER; + if( (IID_IUnknown == riid) + || (IID_IDispatch == riid) + || (IID_IVLCMarquee == 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*); + + // IVLCMarquee methods + STDMETHODIMP enable(); + STDMETHODIMP disable(); + STDMETHODIMP text(BSTR); + STDMETHODIMP color(long); + STDMETHODIMP opacity(long); + STDMETHODIMP position(long); + STDMETHODIMP refresh(long); + STDMETHODIMP size(long); + STDMETHODIMP timeout(long); + STDMETHODIMP x(long); + STDMETHODIMP y(long); + +protected: + HRESULT loadTypeInfo(); + HRESULT exception_bridge(libvlc_exception_t *ex); + +private: + VLCPlugin* _p_instance; + ITypeInfo* _p_typeinfo; + +}; + class VLCPlaylistItems : public IVLCPlaylistItems { public: @@ -489,11 +547,65 @@ private: VLCPlaylistItems* _p_vlcplaylistitems; }; +class VLCSubtitle : public IVLCSubtitle +{ +public: + VLCSubtitle(VLCPlugin *p_instance) : + _p_instance(p_instance), _p_typeinfo(NULL) {}; + virtual ~VLCSubtitle(); + + // IUnknown methods + STDMETHODIMP QueryInterface(REFIID riid, void **ppv) + { + if( NULL == ppv ) + return E_POINTER; + if( (IID_IUnknown == riid) + || (IID_IDispatch == riid) + || (IID_IVLCSubtitle == 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*); + + // IVLCSubtitle methods + STDMETHODIMP get_track(long*); + STDMETHODIMP put_track(long); + STDMETHODIMP get_count(long*); + STDMETHODIMP description(long, BSTR*); + +protected: + HRESULT loadTypeInfo(); + HRESULT exception_bridge(libvlc_exception_t *ex); + +private: + VLCPlugin* _p_instance; + ITypeInfo* _p_typeinfo; + +}; + class VLCVideo : public IVLCVideo { public: VLCVideo(VLCPlugin *p_instance) : - _p_instance(p_instance), _p_typeinfo(NULL) {}; + _p_instance(p_instance), + _p_typeinfo(NULL), + _p_vlcmarquee(NULL) + { + _p_vlcmarquee = new VLCMarquee(p_instance); + }; virtual ~VLCVideo(); // IUnknown methods @@ -535,6 +647,9 @@ public: STDMETHODIMP put_crop(BSTR); STDMETHODIMP get_teletext(long*); STDMETHODIMP put_teletext(long); + STDMETHODIMP get_marquee(IVLCMarquee**); + STDMETHODIMP deinterlaceDisable(); + STDMETHODIMP deinterlaceEnable(BSTR); STDMETHODIMP takeSnapshot(LPPICTUREDISP*); STDMETHODIMP toggleFullscreen(); STDMETHODIMP toggleTeletext(); @@ -546,6 +661,7 @@ protected: private: VLCPlugin* _p_instance; ITypeInfo* _p_typeinfo; + VLCMarquee* _p_vlcmarquee; }; @@ -606,6 +722,7 @@ public: STDMETHODIMP get_input(IVLCInput**); STDMETHODIMP get_log(IVLCLog**); STDMETHODIMP get_playlist(IVLCPlaylist**); + STDMETHODIMP get_subtitle(IVLCSubtitle**); STDMETHODIMP get_video(IVLCVideo**); protected: @@ -619,6 +736,7 @@ private: VLCInput* _p_vlcinput; VLCLog * _p_vlclog; VLCPlaylist* _p_vlcplaylist; + VLCSubtitle* _p_vlcsubtitle; VLCVideo* _p_vlcvideo; };